2. Переваги динамічного програмування:
▪ Пошук гарантовано оптимальних рішень.
▪ Пошук оптимальних рішень для всієї задачі та повного набору проміжних
підзадач.
▪ Оптимізація процесу обчислень (зменшення складності знаходження
розв`язку до поліноміальної/логарифмічної).
▪ Можливість вирішення широкого класу задач економіко-математичного
моделювання.
▪ Відсутність альтернативних високоефективних методів вирішення задач.
7. Схема вирішення задач динамічного
програмування
1. Визначити процес побудови оптимального
рішення.
2. Знайти елементарну підзадачу, яка
вирішується тривіальним способом.
3. Побудувати рекурентне співвідношення, що
зв`язує оптимальне значення рішення для
підзадач.
4. Рухаючись знизу вверх, визначити оптимальне
рішення для кожної з підзадач.
5. Користуючись отриманою інформацією
визначити оптимальне рішення основної
задачі.
Основна
задача
Задача
1
Задача
2
Задача
3
Задача
4
Задача
5
8. Типи задач, що вирішуються МДП:
▪ Задачі пошуку оптимального (найкоротшого, найдешевшого, повного)
шляху.
▪ Задачі економічної оптимізації.
▪ Задачі пошуку (найменшої, найбільшої) кількості можливих комбінацій.
▪ Задачі аналізу текстових та числових даних (порівняння рядків,
перетворення послідовностей до єдиного вигляду, пошук поліндромів та
підполіндромів).
▪ Задачі планування та прогнозування майбутнього.
▪ Задачі розробки систем масового обслуговування та багатопоточної
обробки даних.
22. ▪ Повний перебір (для 15 точок – 43 589 145 600, 18 міст – > 177 трильйонів)
▪ Випадковий перебір
▪ Жадні алгоритми
▪ Метод віток та границь
▪ Метод еластичної мережі (МДП) (для 30 точок – 1000 ітерацій)
Алгоритми рішення задачі
27. Формулювання задачі про гроші
Банкомат має набір купюр різних номіналів (2, 5, 10,
20, 50, 100) кількість банкнот обмежена. В залежності
від наявності купюр кожного типу визначити
мінімальну їх кількість необхідну для формування
запитуваної суми або те, що суму сформувати не
можна.
28. Розв`язок задачі
Маючи набір: 2 (10), 5 (0), 10 (3), 15(1), 20 (10), 50 (1), 100(1)
визначити мінімальну кількість купюр для формування суми в 175 од або
вказати, що таку суму зібрати неможливо.
Нехай S[i] – чергова підсума, яку потрібно зібрати, де i – сума, а S[i] – кількість
одиниць. Тоді S[1], S[0], S[-1], S[-2]… = Ø; S[175] = stop.
Рішення:
S[2] => 2 = 1;
S[3] => S[1] + S[2] = Ø;
S[4] => (S[3] + S[1]), (S[2]+S[2]) = 2;
S[5] => (S[2] + S[2] + S[1]), (S[3]+S[2]), (5) = 1;
S[6] => (S[3] + S[3]), (S[2]+S[2]+S[2]), (S[5], S[1]) = 3;
…..
S[175] => (S[10] + S[15] + S[50] + S[100]) = 4;
29. Схема вирішення задач динамічного
програмування
1. Знайти елементарну підзадачу, яка
вирішується тривіальним способом.
2. Побудувати рекурентне
співвідношення, що зв`язує оптимальне
значення розв`язку для підзадач.
3. Користуючись отриманою
інформацією визначити оптимальне
рішення основної задачі.
Основна
задача
Задача
1
Задача
2
Задача
3
Задача
4
Задача
5
31. Принцип оптимальності Беллмана
▪ Bellman's optimality principle - оптимальна
поведінка має ту властивість, що, які б не були
початковий стан і рішення (тобто «управління»),
наступні рішення повинні складати оптимальну
поведінку відносно стану, що виходить в
результаті першого рішення.
▪ Цей принцип можна виразити і розмірковуючи
від протилежного: якщо не використовувати
найкращим чином те, що ми маємо зараз, то і
надалі не вдасться найкращим чином
розпорядитися тим, що ми могли б мати.