Лекция 11_Мтоды разработки алгоритмов.ppt
- Количество слайдов: 47
Методы разработки алгоритмов
Выбор ► оптимального времени решения задачи; ► оптимального использования имеющихся ресурсов (памяти); ► требуемой точности вычислений; ► минимальные стоимостные затраты; ► возможность использования стандартных подпрограмм.
1. 2. 3. 4. 5. Декомпозиции(разделения) Динамическое программирование “Жадные алгоритмы” Полный перебор (Поиск с возвратом) Локальный поиск
1. Метод декомпозиции (метод разбиения, разделяй и властвуй) ► декомпозиция — разбиение задачи большой размерности на подзадачи существенно меньшей размерности.
схема алгоритма ► задача разбивается на подзадачи (декомпозиция) ► каждая из них решается отдельно ► решения комбинируются
Примеры задач ► Сортировка слиняем ► Двоичные деревья поиска ► Ханойские башни
min 2^n-1 T(n, i, j, w) = T(n-1, i, w, j), T(1, i, j, w), T(n-1, w, j, i)
Примеры задач ► Проектирование схем ► Математические доказательства ► Умножение длинных целых
Умножение длинных целых A B = А 2 n /2 + В C D X= n /2 + С 2 Y= = D XY= АС 2 n + (AD + BC)2 n/2 + BD X – 4, + - 3 , сдвиг – 2 T(n) = 4 T(n/2)+cn
XY= АС 2 n + (AD + BC)2 n/2 + BD XY = АС 2 n + [(А - B)(D -С) + АС + BD] 2 n/2+ BD X – 3, +, - - 6 , сдвиг – 2 T(n) =3 T(n/2)+cn => О(nlog 23) = О(n 1. 59)
Пример составление графика проведения теннисного турнира ► N игроков N=2 k ► N-1 дней, по одному N-1 дни разу в день j N i игроки №иг рока
► 1. Составление расписания для половины игроков на основе рекурсивного применения алгоритма для половины и т. д. ► 2. Количество игроков <2 – устанавливается порядок проведения встреч
► N=8 1 4+ 2 3 4 5 6 7 8 2 1 4 3 6 7 8 5 3 4 1 2 7 8 5 6 4 3 2 1 8 5 6 7 8 1 6 5 8 7 2 7 8 5 6 8 7 6 5 3 4
2. Динамическое программирование ► Динамическое программирование – математический метод решения оптимизационных задач с оптимальной подструктурой и перекрывающимся подзадачами
Шаги решения задачи ► 1) Описать строение оптимальных решений (определить задачи и подзадачи). ► 2) Выписать рекуррентное соотношение, связывающее оптимальное решения с оптимальными решениями подзадач. ► 3) Вычислить оптимальное значение, основанное на предварительно вычисленных оптимальных решениях подзадач.
► решение – объединение решений подзадач, каждая из которых имеет оптимальное решение (подзадачи не независимы) ► на разных путях одинаковые подзадачи, тогда основной примем – запоминание встречающихся подзадач (таблица решения подзадач) экспоненциальное время –>полиномиальное
► Заполнение таблицы подзадач для получения решения определенной задачи получило название динамического программирования
Признаки того, что задача может быть решена методом динамического программирования: ► решение задачи может быть записано в виде рекурсивного алгоритма; ► рекурсивное решение приводит к тому, что одна и та же подзадача может решаться несколько раз (перекрытие подзадач).
подходы ►решение сверху вниз (меморизация), низходящий; ►решение снизу вверх, восходящий.
Примеры задач ► произведение матриц с минимальным числом умножений ► наибольшая общая подпоследовательность двух последовательностей (НОП , LCS) ► задача триангуляции многоугольника ► задача коммивояжера ► и др.
признаки использования динамического программирования ► оптимальность задач (содержание оптимальности решения подзадач) ► перекрывающиеся задачи (малость множества подзадач)
Пример Перемножение нескольких матриц A 1 A 2 A 3…. An (A 1(A 2(A 3 A 4))) (A 1((A 2 A 3 )A 4)) ((A 1 A 2(A 3 A 4)) ((A 1(A 2 A 3 ))A 4) (((A 1 A 2)A 3 )A 4) pxq pxr - pqr умножений и сложений
► A 1 ► A 2 ► A 3 10 x 100 x 5 5 x 50 ((A 1 A 2)A 3) = 10 x 100 x 5+10 x 5 x 50=5000+2500=7500 (A 1(A 2 A 3) ) = 100 x 5 x 50+10 x 100 x 50=25000+50000=75000
► 1) строение оптимальной расстановки скобок ► (A 1…Ak) x( Ak+1…. An) ► 2) рекуррентное соотношение min -> m[i, j]=m[i, k]+m[k+1, j]+pi-1 pkpj i=j m[i, j]=0 ► 3) вычисление оптимально стоимости Таблица стоимостей O(n 3) s (nxn) 4) Построение оптимального решения Рекурсивный поиск по s
Пример: задача триангуляции многоугольника ► Разделение непересекающимися хордами полигона на треугольники с мин. стоимостью (длина хорд)
► n(n− 4)
3. Жадные алгоритмы (greedy) ► решение – по частям, с объединением решения, но на каждом шаге выбирается тот вариант, который является локально оптимальным в том или ином смысле ► Сиюминутная оптимальность, в то время как в целом результат может оказаться неблагоприятным
► 25, 10, 5 копеек и 1 копейка 63 копейки - 2 x 25, 1 x 10, 3 x 1 11, 5, 1 15 копейки - 1 x 11, 4 x 1 или 3 x 5
примеры ► Алгоритм Дейкстры ► Построения мин остовного дерева ► код Хаффмана ► Упаковка рюкзака ► Выдача сдачи ► Составление расписания
s->a->b s->a->c->b 3 1
Задача коммивояжера *гамильтонова цикла 50 48. 39 49. 73 49. 78
признак использования ► принцип жадного выбора ► свойство оптимальности подзадач
Жадный алгоритм или динамическое программирование? ► n вещей ► ci долларов ► ai килограмм ► <=V килограмм max – цена ► Непрерывная и дискретная задача о рюкзаке.
Построения дерева Хаффмена 10 A 30 C 5 D 10 F 20 B 25 E 1 0 15 0 1 0 25 1 0 55 0 1 45 1 100
4. Полный перебор ► Для малых размеров входных данных или в виде частичного перебора в других алгоритмах
► дерево игры ► поиск минимальной или максимальной конфигурации
Пример (Задача о рюкзаке). ► Пусть V=10, n=3, a 1=6, a 2=5, a 3=4, c 1=3, c 2=4, c 3=5.
Метод ветвей и границ албфа-бэтта отсечение ► алгоритм перебора с отсечением подмножеств допустимых решений, не содержащих оптимального решения ► для задач целочисленного линейного программирования Ветвей - задача «ветвится» Границ - разбиения оцениваются и отсекаются
► Требуется: ► Выбрать способ оценивания подмножеств. ► ► Определить способ разбиений множеств на подмножества. ► ► Уточнить порядок выбора очередного подмножества для ветвления.
Поиск с возвратом
5. Алгоритмы локального поиска ► 1. Выполнить преобразование из некоторой заданной совокупности преобразований (для улучшения текущего решения) ► 2. Улучшенное решение становится новым текущим решением ► 3. Можно ли улучшить текущее решение? ► 4. Останов
► Задача нахождения минимального остовного дерева. ► Приближенное решение уравнения методом деления отрезка пополам
Локальные и глобальные оптимальные решения
Лекция 11_Мтоды разработки алгоритмов.ppt