Методы разработки алгоритмов. «Жадные» алгоритмы
06 Декабря 2010, автор: пользователь скрыл имя
Описание работы
1. Методы разработки алгоритмов
2. Жадные алгоритмы
3. Задача о выборе заявок
4. Правильность алгоритма
5. Когда применим жадный алгоритм?
6. Принцип жадного выбора
7. Оптимальность для подзадач
8. Жадный алгоритм или динамическое программирование?
9. Заключение.
10. Литература
Файлы: 1 файл
АИСД.doc
— 66.50 Кб (Скачать файл)Оптимальность для подзадач
Говоря
иными словами, решаемые с помощью
жадных алгоритмов задачи обладают свойством
оптимальности для подзадач (have
optimal substructure): оптимальное решение всей
задачи содержит в себе оптимальные решения
подзадач. (С этим свойством мы уже встречались,
говоря о динамическом программировании).
Например, при доказательстве теоремы
1 мы видели, что если А – оптимальный набор
заявок, содержащий заявку номер 1, то А’=A
\{1} – оптимальный набор заявок для меньшего
множества заявок S’, состоящего из тех
заявок, для которых si ³ f1.
Жадный алгоритм или динамическое программирование?
И жадные
алгоритмы, и динамическое
Дискретная задача о рюкзаке (0-1 knapsack problem) состоит в следующем. Пусть вор пробрался на склад, на котором хранится n вещей. Вещь номер i стоит vi долларов и весит wi килограммов (vi и wi - целые числа). Вор хочет украсть товара на максимальную сумму, причем максимальный вес, который он может унести в рюкзаке, равен W ( число W тоже целое). Что он должен положить в рюкзак?
Непрерывная задача о рюкзаке ( fractional knapsack problem)) отличается от дискретной тем, что вор может дробить краденые товары на части и укладывать в рюкзак эти части, а не обязательно вещи целиком (если в дискретной задаче вор имеет дело с золотыми слитками, то в непрерывной – с золотым песком).
Обе задачи о рюкзаке обладают свойством оптимальности для подзадач. В самом деле, рассмотрим дискретную задачу. Вынув вещь номер j из оптимально загруженного рюкзака, получим решение задачи о рюкзаке с максимальным весом W – wj и набором из n-1 вещи ( все вещи, кроме j-й). Аналогичное рассуждение подходит и для непрерывной задачи: вынув из оптимально загруженного рюкзака, в котором лежит w килограммов товара номер j , весь этот товар, получим оптимальное решение непрерывной задачи, в которой максимальный вес равен W- w (вместо W), а количество j-го товара равно wj-w ( вместо wj).
Хотя
две задачи о рюкзаке и похожи,
жадный алгоритм дает оптимум
в непрерывной задаче о
Чтобы
убедиться в том, что
Для непрерывной задачи с теми же исходными данными жадный алгоритм, предписывающий начать с товара номер 1, дает оптимальное решение (рис. 2(в)). В дискретной задаче такая стратегия не срабатывает: положив в рюкзак предмет номер 1, вор лишается возможности заполнить рюкзак «под завязку», а пустое место в рюкзаке снижает цену наворованного в расчете на единицу веса. Здесь, чтобы решить, класть ли данную вещь в рюкзак, надо сравнить решения двух подзадач: когда данная вещь заведомо лежит в рюкзаке и когда этой вещи в рюкзаке заведомо нет. Тем самым дискретная задача о рюкзаке порождает множество перекрывающихся подзадач – типичный признак того, что может пригодиться динамическое программирование. И действительно, к дискретной задаче о рюкзаке оно применимо .
Рис. 2. В дискретной задаче о рюкзаке жадная стратегия может не сработать. (а) Вор должен выбрать две вещи из трех с тем, чтобы их суммарный вес не превысил 50кг. (б) Оптимальный выбор – вторая и третья вещи; если положить в рюкзак первую, то выбор оптимальным не будет, хотя именно она дороже всех в расчете на единицу веса. (в) Для непрерывной задачи о рюкзаке с теми же исходными данными выбор товаров в порядке убывания цены на единицу веса будет оптимален.
Заключение.
В результате исследования литературы по вопросу оптимизации задач, мы отдали предпочтение использованию «жадных алгоритмов», которые дают нам следующие возможности:
-Сократить время принятия решения
-Проверять все возможные варианты решения на данный момент времени.
Литература
- Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 16. Жадные алгоритмы
- Кормен Т и др. Алгоритмы: построение и анализ. – М.: МЦНМО, 2000
- Алфёрова З.В. Теория алгоритмов. – М.: Статистика, 1973