SlideShare une entreprise Scribd logo
1  sur  12
Практическое занятие 9.
Жадные алгоритмы
1.
2.
3.
4.

Теоретические сведения
Контрольные вопросы
Указания по выполнению заданий
Задания
Теоретические сведения
Для решения многих задач оптимизации наиболее подходят простые
и эффективные алгоритмы, которые называют жадными
алгоритмами.
В жадном алгоритме всегда делается выбор, который кажется самым
лучшим в данный момент, т.е. производится локально
оптимальный выбор в надежде, что он приведет к оптимальному
решению глобальной задачи.
Процесс разработки жадных алгоритмов можно представить в виде
последовательности следующих этапов.
1. Привести задачу оптимизации к виду, когда после сделанного
выбора остается решить только одну подзадачу.
2. Доказать, что всегда существует такое оптимальное решение
исходной задачи, которое можно получить путем жадного выбора,
так что такой выбор всегда допустим.
3. Показать, что после жадного выбора остается подзадача,
обладающая тем свойством, что объединение оптимального
решения подзадачи со сделанным жадным выбором приводит к
оптимальному решению исходной задачи.
Можно выделить две основные составляющие – свойство жадного
выбора и оптимальную подструктуру.
Теоретические сведения
Свойство жадного выбора (первая составляющая задачи)
заключается в том, что глобальное оптимальное решение
можно получить, делая локальный оптимальный (жадный)
выбор.
Жадная стратегия обычно разворачивается в нисходящем
порядке, когда жадный выбор делается один за другим, в
результате чего каждый экземпляр текущей задачи
сводится к более простому виду.
Свойство жадного выбора часто дает определенное
преимущество, позволяющее повысить эффективность
выбора в подзадаче. Например, благодаря
предварительной обработке входных данных или
применению подходящей структуры данных можно
ускорить процесс жадного выбора, что приведет к
повышению эффективности алгоритма.
Теоретические сведения
Оптимальная подструктура (вторая составляющая задачи) проявляется в
задаче, если в ее оптимальном решении содержатся оптимальные
решения подзадач. Это свойство является основным признаком
применимости жадных алгоритмов.
Для определения случаев, когда жадный метод дает оптимальное
решение оказывается полезной теория жадных алгоритмов. Эта
теория содержит комбинаторные структуры, известные под названием
«матроиды».
Матроид – это упорядоченная пара M = (S, X), удовлетворяющая
сформулированным ниже условиям.
1. Множество S конечное.
• 2. X – непустое семейство подмножеств множества S (которые
называются независимыми подмножествами), таких что если B ∈ X и A
⊆ B, то A ∈ X. Если семейство X удовлетворяет этому свойству, то его
называют наследственным. Заметим, что пустое множество ∅ с
необходимостью принадлежит семейству X.
3. Если A ∈ X, В ∈ X и |A| < |B|, то существует такой элемент х ∈ A – B, что
A ∪ {x} ∈ X. Говорят, что структура M удовлетворяет свойству замены.
Матроид обладает следующим полезным основным свойством: все
максимальные независимые подмножества матроида имеют один и тот
же размер.
Теоретические сведения
Говорят, что матроид M = (S, X) взвешенный, если с ним связана весовая
функция w, назначающая каждому элементу х ∈ S строго положительный
вес w(x). Весовая функция w обобщается на подмножества S путем
суммирования:
для любого подмножества A ⊆ S.
Максимальное независимое подмножество с максимально возможным весом
оптимальным подмножеством матроида.
Свойства матроида
1. Пусть
M = (S, X) – взвешенный матроид с весовой функцией w, и пусть
множество S отсортировано в порядке монотонного убывания весов. Пусть
x – первый элемент множества S, такой что множество {x} независимо
(если он существует). Если элемент x существует, то существует
оптимальное подмножество A множества S, содержащее элемент x, т.е.
матроиды обладают свойством жадного выбора.
2. Пусть M = (S, X) – произвольный матроид. Если x – элемент S,
представляющий собой расширение некоторого независимого
подмножества A множества S, то x также является расширением пустого
множества ∅. И, как следствие, если M = (S, X) – произвольный матроид и
если x – элемент множества S, который не является расширением пустого
множества ∅, то этот элемент также не является расширением любого
независимого подмножества A множества S.
3. Пусть x – первый элемент множества S, выбранный алгоритмом Greedy
для взвешенного.
Теоретические сведения
матроида M = (S, X). Оставшаяся задача поиска независимого
подмножества с максимальным весом, содержащего элемент x,
сводится к поиску независимого подмножества с максимальным весом
для взвешенного матроида M’ = (S’, X’), где
S’ = {y ∈ S | {x, y} ∈ X}, X’ = {B ⊆ S – {x} | B ∪ {x} ∈ X }, и весовая функция
матроида M’ совпадает с весовой функцией матроида M, ограниченной
на множество S'. Матроид M’ называется сужением матроида M на
элемент x. Это свойство означает, что матроиды обладают свойством
оптимальной подструктуры.
С помощью жадных алгоритмов можно решить многие задачи, например
1. Составление оптимального расписания единичных заданий,
выполняющихся на одном процессоре. Каждое задание
характеризуется конечным сроком выполнения, а также штрафом при
пропуске этого срока.
2. Построение кодов Хаффмена для сжатия информации.
3. Составление расписания для нескольких конкурирующих процессов,
каждый из которых безраздельно использует общий ресурс. Цель этой
задачи – выбор набора взаимно совместимых процессов, образующих
множество максимального размера.
4. Поиск минимального остовного дерева.
5. Определение кратчайших путей из одного источника.
Теоретические сведения
Пример 1.
Greedy(M, w)
1A←∅
2 Сортировка множества S[M] в порядке
убывания w
3 for каждого х ∈ S[M] в порядке монотонного
убывания веса w(x)
4 do if A ∪ {x} ∈ X[M]
5
then A ← A ∪ {x}
6 return A
Контрольные вопросы
1. Алгоритмы решения оптимизационных задач.
2. Жадный алгоритм.
3. Этапы процесса разработки жадного
алгоритма.
4. Свойство жадного выбора.
5. Оптимальная подструктура задачи.
6. Матроид.
7. Основное свойство матроида.
8. Взвешенный матроид.
9. Условия нахождения оптимального
подмножества взвешенного матроида.
10. Задачи, которые можно решить с помощью
жадных алгоритмов.
Указания по выполнению заданий
1.
2.
3.

4.

Получить задание
Получить решение задачи.
Подготовить отчет по выполнению задания. Отчет
должен включать задание и описание этапов
выполнения задания.
Ответить на вопросы по выполнению задания и
контрольные вопросы
Задания
1. Показать, что если S – произвольное конечное множество, a Xk –
множество всех подмножеств S, размер которых не превышает к < |S|, то
(S, Xk) – матроид.
2. Пусть T – матрица размером m × n над некоторым полем (например,
действительных чисел). Показать, что если S – множество столбцов T,
а А ∈ Х, то (S, X) является матроидом тогда и только тогда, когда
столбцы матрицы А линейно независимы.
3. Показать, что если (S, X) – матроид, то матроидом является и (S, X’), где
X’ = {A’: S – А’ содержит некоторое максимальное А ∈ X }, т.е. максимальные
независимые множества матроида (S, X’) представляют собой дополнения
максимальных независимых множеств матроида (S, X).
4. Пусть S – конечное множество, a S1, S2, …, Sk – разбиение этого
множества на непустые непересекающиеся подмножества. Cтруктура (S,
X) определена с помощью условия X = {А : |А ∩ Si| ≤ 1 для i = 1, 2,..., k}.
Показать, что (S, X) – матроид. Другими словами, семейство всех
множеств А, содержащих не более одного члена в каждом блоке
разбиения, определяет независимые множества матроида.
5. Показать, как можно преобразовать весовую функцию в задаче о
взвешенном матроиде, в которой оптимальное решение представляет
собой максимальное независимое подмножество с минимальным весом,
чтобы преобразовать ее в стандартную задачу о взвешенном матроиде.
Обосновать корректность преобразования.
Задания
6. Решить задачу по выдаче сдачи, сумма которой составляет n копеек, использовав как
можно меньшее количество монет. Предполагается, что номинал каждой монеты
выражается целым числом.
1) Описать жадный алгоритм, в котором сдача выдается монетами номиналом 25
копеек, 10 копеек, 5 копеек и 1 копейка. Доказать, что алгоритм позволяет получить
оптимальное решение.
2) Предположим, что номинал монет выражается степенями некоторого целого числа c
> 1, т.е. номиналы представляют собой числа c0, c1,..., ck, где k ≥ 1. Показать, что
жадный алгоритм всегда дает оптимальное решение.
3) Привести пример множества номиналов монет, для которого жадный алгоритм не
выдает оптимального решения. В это множество должна входить монета номиналом
1 копейка, чтобы решение существовало для любого значения n.
4) Разработать алгоритм, позволяющий выдать сдачу с помощью любого набора монет,
множество номиналов в котором состоит из k различных номиналов.
7. Предположим, у нас имеется множество заданий S = {a1, a2, ..., an}, в котором для
выполнения задания ai требуется pi единиц времени. Имеется один компьютер, на
котором будут выполняться эти задания, который способен одновременно
выполнять не более одного задания. Пусть ci – время завершения задания ai, т.е.
момент времени, когда прекращается его выполнение. Задача заключается в том,
чтобы минимизировать среднее время завершения, т.е. величину . Например,
предположим, что имеется два задания а1 и а2, которым соответствуют времена
выполнения р1 = 3 и р2 = 5. Рассмотрим расписание, в котором сначала
выполняется задание a2, а затем — задание a1. Тогда c2 = 5, c1 = 8, и среднее
время завершения равно (5 + 8)/2 = 6.5.
Задания
1) Сформулировать алгоритм, который планирует задания таким образом, чтобы
минимизировать среднее время завершения. Каждое задание должно выполняться
без прерываний, т.е. будучи запущено, задание ai должно непрерывно выполняться
в течение pi единиц времени. Доказать, что алгоритм минимизирует среднее время
завершения, и определите время его работы.
2) Предположим, что не все задания доступны сразу. Другими словами,
с каждым заданием связано время выпуска ri, раньше которого оно недоступно для
обработки. Предположим также, что допускаются прерывания, т.е. что задание
может быть приостановлено и возобновлено позже. Например, задание ai, время
обработки которого равно pi = 6, может быть запущено в момент времени 1 и
приостановлено в момент времени 4. Затем оно может быть возобновлено в момент
времени 10, еще раз приостановлено в момент времени 11, снова возобновлено в
момент времени 13, и, наконец, завершено в момент времени 15. Таким образом,
задание ai в общей сложности выполняется в течение шести единиц времени, но
время его выполнения разделено на три фрагмента. Время завершения задания ai
равно при таком расписании 15. Сформулировать алгоритм, планирующий задания
таким образом, чтобы минимизировать среднее время завершения в этом новом
сценарии. Доказать, что алгоритм минимизирует среднее время завершения и найти
время его работы.
8. Пусть G = (V, E) – неориентированный граф. Показать с помощью определения
матроида, что (E, X) – матроид, где A ∈ X тогда и только тогда, когда A –
ациклическое подмножество E.
9. Предположим, с каждым ребром неориентированного графа G = (V, E) связан
неотрицательный вес w(e). Разработать эффективный алгоритм поиска
ациклического подмножества множества E с максимальным общим весом.
10. Показать, что для построения кодов Хаффмена можно применить жадный алгоритм.

Contenu connexe

Tendances

Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 
Основы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задачОсновы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задачDEVTYPE
 
Предикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатамиПредикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатамиИльдус Ситдиков
 
proverochnie-raboti-po-algebre
proverochnie-raboti-po-algebreproverochnie-raboti-po-algebre
proverochnie-raboti-po-algebreGarik Yenokyan
 
Разбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика lРазбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика lDEVTYPE
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляDEVTYPE
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Technopark
 
Понятие предиката. Логические операции над предикатами
Понятие предиката. Логические операции над предикатамиПонятие предиката. Логические операции над предикатами
Понятие предиката. Логические операции над предикатамиaleksashka3
 
Линейная алгебра - I. Разбор задач
Линейная алгебра - I. Разбор задачЛинейная алгебра - I. Разбор задач
Линейная алгебра - I. Разбор задачDEVTYPE
 
Математическая индукция
Математическая индукцияМатематическая индукция
Математическая индукцияDEVTYPE
 
average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdfStas Fomin
 
Квадратичная математика
Квадратичная математикаКвадратичная математика
Квадратичная математикаDEVTYPE
 
Racionalnye uravneniya
Racionalnye uravneniyaRacionalnye uravneniya
Racionalnye uravneniyadimonz9
 

Tendances (20)

Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
Основы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задачОсновы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задач
 
лекция 8
лекция 8лекция 8
лекция 8
 
Предикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатамиПредикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатами
 
теория множеств
теория множествтеория множеств
теория множеств
 
proverochnie-raboti-po-algebre
proverochnie-raboti-po-algebreproverochnie-raboti-po-algebre
proverochnie-raboti-po-algebre
 
Разбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика lРазбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика l
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуля
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
Integral1
Integral1Integral1
Integral1
 
Понятие предиката. Логические операции над предикатами
Понятие предиката. Логические операции над предикатамиПонятие предиката. Логические операции над предикатами
Понятие предиката. Логические операции над предикатами
 
Линейная алгебра - I. Разбор задач
Линейная алгебра - I. Разбор задачЛинейная алгебра - I. Разбор задач
Линейная алгебра - I. Разбор задач
 
Математическая индукция
Математическая индукцияМатематическая индукция
Математическая индукция
 
average-knapsack.beam.pdf
average-knapsack.beam.pdfaverage-knapsack.beam.pdf
average-knapsack.beam.pdf
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
Квадратичная математика
Квадратичная математикаКвадратичная математика
Квадратичная математика
 
10474
1047410474
10474
 
Racionalnye uravneniya
Racionalnye uravneniyaRacionalnye uravneniya
Racionalnye uravneniya
 
Get Ft
Get FtGet Ft
Get Ft
 

En vedette

лекция №4
лекция №4лекция №4
лекция №4student_kai
 
лекция 24 примеры внедрения
лекция 24 примеры внедрениялекция 24 примеры внедрения
лекция 24 примеры внедренияstudent_kai
 
лабораторная работа № 2
лабораторная работа № 2лабораторная работа № 2
лабораторная работа № 2student_kai
 
лекция №6
лекция №6лекция №6
лекция №6student_kai
 
лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1student_kai
 
презентация л.р. №17
презентация л.р. №17презентация л.р. №17
презентация л.р. №17student_kai
 
лекция №2
лекция №2лекция №2
лекция №2student_kai
 
лекция №12
лекция №12лекция №12
лекция №12student_kai
 
лекция №5и
лекция №5илекция №5и
лекция №5иstudent_kai
 
лекция №7
лекция №7лекция №7
лекция №7student_kai
 
лекция 18 управление непрерывностью
лекция 18 управление непрерывностьюлекция 18 управление непрерывностью
лекция 18 управление непрерывностьюstudent_kai
 

En vedette (20)

лекция №4
лекция №4лекция №4
лекция №4
 
лекция 24 примеры внедрения
лекция 24 примеры внедрениялекция 24 примеры внедрения
лекция 24 примеры внедрения
 
лабораторная работа № 2
лабораторная работа № 2лабораторная работа № 2
лабораторная работа № 2
 
лекция №6
лекция №6лекция №6
лекция №6
 
лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1лекция 21 управление безопасностью-ч1
лекция 21 управление безопасностью-ч1
 
14 лекция
14 лекция14 лекция
14 лекция
 
лекция23
лекция23лекция23
лекция23
 
лекция 7
лекция 7лекция 7
лекция 7
 
п2 08
п2 08п2 08
п2 08
 
презентация л.р. №17
презентация л.р. №17презентация л.р. №17
презентация л.р. №17
 
лекция №2
лекция №2лекция №2
лекция №2
 
лекция №12
лекция №12лекция №12
лекция №12
 
лекция №5и
лекция №5илекция №5и
лекция №5и
 
лекция №7
лекция №7лекция №7
лекция №7
 
л26с
л26сл26с
л26с
 
лекция 6
лекция 6лекция 6
лекция 6
 
Eiep mod12
Eiep mod12Eiep mod12
Eiep mod12
 
лекция 16
лекция 16лекция 16
лекция 16
 
п1
п1п1
п1
 
лекция 18 управление непрерывностью
лекция 18 управление непрерывностьюлекция 18 управление непрерывностью
лекция 18 управление непрерывностью
 

Similaire à практика 9

Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Technopark
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2Vladimir Krylov
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеsimple_people
 
Лекция 1 часть 3 декартово произв
Лекция 1 часть 3 декартово произвЛекция 1 часть 3 декартово произв
Лекция 1 часть 3 декартово произвИрина Гусева
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиAnna1978
 
презентация
презентацияпрезентация
презентацияMarijVANGLIS
 
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287сdfdkfjs
 
Kuznecova 9klass
Kuznecova 9klassKuznecova 9klass
Kuznecova 9klassqwasar1
 
Задачи Пятой олимпиады Эйлера учителей Санкт-Петербурга
Задачи Пятой олимпиады Эйлера учителей Санкт-ПетербургаЗадачи Пятой олимпиады Эйлера учителей Санкт-Петербурга
Задачи Пятой олимпиады Эйлера учителей Санкт-Петербургаeekdiary
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Technosphere1
 
лекция 3 Комбинаторные задачи
лекция 3 Комбинаторные задачилекция 3 Комбинаторные задачи
лекция 3 Комбинаторные задачиИрина Гусева
 

Similaire à практика 9 (20)

Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Алгоритмы решения Судоку
Алгоритмы решения СудокуАлгоритмы решения Судоку
Алгоритмы решения Судоку
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
000
000000
000
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 
6
66
6
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программирование
 
Лекция 1 часть 3 декартово произв
Лекция 1 часть 3 декартово произвЛекция 1 часть 3 декартово произв
Лекция 1 часть 3 декартово произв
 
p01.pdf
p01.pdfp01.pdf
p01.pdf
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определители
 
презентация
презентацияпрезентация
презентация
 
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
 
117
117117
117
 
Kuznecova 9klass
Kuznecova 9klassKuznecova 9klass
Kuznecova 9klass
 
Задачи Пятой олимпиады Эйлера учителей Санкт-Петербурга
Задачи Пятой олимпиады Эйлера учителей Санкт-ПетербургаЗадачи Пятой олимпиады Эйлера учителей Санкт-Петербурга
Задачи Пятой олимпиады Эйлера учителей Санкт-Петербурга
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
лекция 3 Комбинаторные задачи
лекция 3 Комбинаторные задачилекция 3 Комбинаторные задачи
лекция 3 Комбинаторные задачи
 

Plus de student_kai

презентация
презентацияпрезентация
презентацияstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 

Plus de student_kai (20)

презентация
презентацияпрезентация
презентация
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№28
лекция№28лекция№28
лекция№28
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция№20
лекция№20лекция№20
лекция№20
 

практика 9

  • 1. Практическое занятие 9. Жадные алгоритмы 1. 2. 3. 4. Теоретические сведения Контрольные вопросы Указания по выполнению заданий Задания
  • 2. Теоретические сведения Для решения многих задач оптимизации наиболее подходят простые и эффективные алгоритмы, которые называют жадными алгоритмами. В жадном алгоритме всегда делается выбор, который кажется самым лучшим в данный момент, т.е. производится локально оптимальный выбор в надежде, что он приведет к оптимальному решению глобальной задачи. Процесс разработки жадных алгоритмов можно представить в виде последовательности следующих этапов. 1. Привести задачу оптимизации к виду, когда после сделанного выбора остается решить только одну подзадачу. 2. Доказать, что всегда существует такое оптимальное решение исходной задачи, которое можно получить путем жадного выбора, так что такой выбор всегда допустим. 3. Показать, что после жадного выбора остается подзадача, обладающая тем свойством, что объединение оптимального решения подзадачи со сделанным жадным выбором приводит к оптимальному решению исходной задачи. Можно выделить две основные составляющие – свойство жадного выбора и оптимальную подструктуру.
  • 3. Теоретические сведения Свойство жадного выбора (первая составляющая задачи) заключается в том, что глобальное оптимальное решение можно получить, делая локальный оптимальный (жадный) выбор. Жадная стратегия обычно разворачивается в нисходящем порядке, когда жадный выбор делается один за другим, в результате чего каждый экземпляр текущей задачи сводится к более простому виду. Свойство жадного выбора часто дает определенное преимущество, позволяющее повысить эффективность выбора в подзадаче. Например, благодаря предварительной обработке входных данных или применению подходящей структуры данных можно ускорить процесс жадного выбора, что приведет к повышению эффективности алгоритма.
  • 4. Теоретические сведения Оптимальная подструктура (вторая составляющая задачи) проявляется в задаче, если в ее оптимальном решении содержатся оптимальные решения подзадач. Это свойство является основным признаком применимости жадных алгоритмов. Для определения случаев, когда жадный метод дает оптимальное решение оказывается полезной теория жадных алгоритмов. Эта теория содержит комбинаторные структуры, известные под названием «матроиды». Матроид – это упорядоченная пара M = (S, X), удовлетворяющая сформулированным ниже условиям. 1. Множество S конечное. • 2. X – непустое семейство подмножеств множества S (которые называются независимыми подмножествами), таких что если B ∈ X и A ⊆ B, то A ∈ X. Если семейство X удовлетворяет этому свойству, то его называют наследственным. Заметим, что пустое множество ∅ с необходимостью принадлежит семейству X. 3. Если A ∈ X, В ∈ X и |A| < |B|, то существует такой элемент х ∈ A – B, что A ∪ {x} ∈ X. Говорят, что структура M удовлетворяет свойству замены. Матроид обладает следующим полезным основным свойством: все максимальные независимые подмножества матроида имеют один и тот же размер.
  • 5. Теоретические сведения Говорят, что матроид M = (S, X) взвешенный, если с ним связана весовая функция w, назначающая каждому элементу х ∈ S строго положительный вес w(x). Весовая функция w обобщается на подмножества S путем суммирования: для любого подмножества A ⊆ S. Максимальное независимое подмножество с максимально возможным весом оптимальным подмножеством матроида. Свойства матроида 1. Пусть M = (S, X) – взвешенный матроид с весовой функцией w, и пусть множество S отсортировано в порядке монотонного убывания весов. Пусть x – первый элемент множества S, такой что множество {x} независимо (если он существует). Если элемент x существует, то существует оптимальное подмножество A множества S, содержащее элемент x, т.е. матроиды обладают свойством жадного выбора. 2. Пусть M = (S, X) – произвольный матроид. Если x – элемент S, представляющий собой расширение некоторого независимого подмножества A множества S, то x также является расширением пустого множества ∅. И, как следствие, если M = (S, X) – произвольный матроид и если x – элемент множества S, который не является расширением пустого множества ∅, то этот элемент также не является расширением любого независимого подмножества A множества S. 3. Пусть x – первый элемент множества S, выбранный алгоритмом Greedy для взвешенного.
  • 6. Теоретические сведения матроида M = (S, X). Оставшаяся задача поиска независимого подмножества с максимальным весом, содержащего элемент x, сводится к поиску независимого подмножества с максимальным весом для взвешенного матроида M’ = (S’, X’), где S’ = {y ∈ S | {x, y} ∈ X}, X’ = {B ⊆ S – {x} | B ∪ {x} ∈ X }, и весовая функция матроида M’ совпадает с весовой функцией матроида M, ограниченной на множество S'. Матроид M’ называется сужением матроида M на элемент x. Это свойство означает, что матроиды обладают свойством оптимальной подструктуры. С помощью жадных алгоритмов можно решить многие задачи, например 1. Составление оптимального расписания единичных заданий, выполняющихся на одном процессоре. Каждое задание характеризуется конечным сроком выполнения, а также штрафом при пропуске этого срока. 2. Построение кодов Хаффмена для сжатия информации. 3. Составление расписания для нескольких конкурирующих процессов, каждый из которых безраздельно использует общий ресурс. Цель этой задачи – выбор набора взаимно совместимых процессов, образующих множество максимального размера. 4. Поиск минимального остовного дерева. 5. Определение кратчайших путей из одного источника.
  • 7. Теоретические сведения Пример 1. Greedy(M, w) 1A←∅ 2 Сортировка множества S[M] в порядке убывания w 3 for каждого х ∈ S[M] в порядке монотонного убывания веса w(x) 4 do if A ∪ {x} ∈ X[M] 5 then A ← A ∪ {x} 6 return A
  • 8. Контрольные вопросы 1. Алгоритмы решения оптимизационных задач. 2. Жадный алгоритм. 3. Этапы процесса разработки жадного алгоритма. 4. Свойство жадного выбора. 5. Оптимальная подструктура задачи. 6. Матроид. 7. Основное свойство матроида. 8. Взвешенный матроид. 9. Условия нахождения оптимального подмножества взвешенного матроида. 10. Задачи, которые можно решить с помощью жадных алгоритмов.
  • 9. Указания по выполнению заданий 1. 2. 3. 4. Получить задание Получить решение задачи. Подготовить отчет по выполнению задания. Отчет должен включать задание и описание этапов выполнения задания. Ответить на вопросы по выполнению задания и контрольные вопросы
  • 10. Задания 1. Показать, что если S – произвольное конечное множество, a Xk – множество всех подмножеств S, размер которых не превышает к < |S|, то (S, Xk) – матроид. 2. Пусть T – матрица размером m × n над некоторым полем (например, действительных чисел). Показать, что если S – множество столбцов T, а А ∈ Х, то (S, X) является матроидом тогда и только тогда, когда столбцы матрицы А линейно независимы. 3. Показать, что если (S, X) – матроид, то матроидом является и (S, X’), где X’ = {A’: S – А’ содержит некоторое максимальное А ∈ X }, т.е. максимальные независимые множества матроида (S, X’) представляют собой дополнения максимальных независимых множеств матроида (S, X). 4. Пусть S – конечное множество, a S1, S2, …, Sk – разбиение этого множества на непустые непересекающиеся подмножества. Cтруктура (S, X) определена с помощью условия X = {А : |А ∩ Si| ≤ 1 для i = 1, 2,..., k}. Показать, что (S, X) – матроид. Другими словами, семейство всех множеств А, содержащих не более одного члена в каждом блоке разбиения, определяет независимые множества матроида. 5. Показать, как можно преобразовать весовую функцию в задаче о взвешенном матроиде, в которой оптимальное решение представляет собой максимальное независимое подмножество с минимальным весом, чтобы преобразовать ее в стандартную задачу о взвешенном матроиде. Обосновать корректность преобразования.
  • 11. Задания 6. Решить задачу по выдаче сдачи, сумма которой составляет n копеек, использовав как можно меньшее количество монет. Предполагается, что номинал каждой монеты выражается целым числом. 1) Описать жадный алгоритм, в котором сдача выдается монетами номиналом 25 копеек, 10 копеек, 5 копеек и 1 копейка. Доказать, что алгоритм позволяет получить оптимальное решение. 2) Предположим, что номинал монет выражается степенями некоторого целого числа c > 1, т.е. номиналы представляют собой числа c0, c1,..., ck, где k ≥ 1. Показать, что жадный алгоритм всегда дает оптимальное решение. 3) Привести пример множества номиналов монет, для которого жадный алгоритм не выдает оптимального решения. В это множество должна входить монета номиналом 1 копейка, чтобы решение существовало для любого значения n. 4) Разработать алгоритм, позволяющий выдать сдачу с помощью любого набора монет, множество номиналов в котором состоит из k различных номиналов. 7. Предположим, у нас имеется множество заданий S = {a1, a2, ..., an}, в котором для выполнения задания ai требуется pi единиц времени. Имеется один компьютер, на котором будут выполняться эти задания, который способен одновременно выполнять не более одного задания. Пусть ci – время завершения задания ai, т.е. момент времени, когда прекращается его выполнение. Задача заключается в том, чтобы минимизировать среднее время завершения, т.е. величину . Например, предположим, что имеется два задания а1 и а2, которым соответствуют времена выполнения р1 = 3 и р2 = 5. Рассмотрим расписание, в котором сначала выполняется задание a2, а затем — задание a1. Тогда c2 = 5, c1 = 8, и среднее время завершения равно (5 + 8)/2 = 6.5.
  • 12. Задания 1) Сформулировать алгоритм, который планирует задания таким образом, чтобы минимизировать среднее время завершения. Каждое задание должно выполняться без прерываний, т.е. будучи запущено, задание ai должно непрерывно выполняться в течение pi единиц времени. Доказать, что алгоритм минимизирует среднее время завершения, и определите время его работы. 2) Предположим, что не все задания доступны сразу. Другими словами, с каждым заданием связано время выпуска ri, раньше которого оно недоступно для обработки. Предположим также, что допускаются прерывания, т.е. что задание может быть приостановлено и возобновлено позже. Например, задание ai, время обработки которого равно pi = 6, может быть запущено в момент времени 1 и приостановлено в момент времени 4. Затем оно может быть возобновлено в момент времени 10, еще раз приостановлено в момент времени 11, снова возобновлено в момент времени 13, и, наконец, завершено в момент времени 15. Таким образом, задание ai в общей сложности выполняется в течение шести единиц времени, но время его выполнения разделено на три фрагмента. Время завершения задания ai равно при таком расписании 15. Сформулировать алгоритм, планирующий задания таким образом, чтобы минимизировать среднее время завершения в этом новом сценарии. Доказать, что алгоритм минимизирует среднее время завершения и найти время его работы. 8. Пусть G = (V, E) – неориентированный граф. Показать с помощью определения матроида, что (E, X) – матроид, где A ∈ X тогда и только тогда, когда A – ациклическое подмножество E. 9. Предположим, с каждым ребром неориентированного графа G = (V, E) связан неотрицательный вес w(e). Разработать эффективный алгоритм поиска ациклического подмножества множества E с максимальным общим весом. 10. Показать, что для построения кодов Хаффмена можно применить жадный алгоритм.