- •Вопросы к экзамену для ба 4 (озо) модели и методы принятия решений
- •Вопрос 1. Основные понятия теории принятия решений. Современный этап развития теории принятия решений.
- •Вопрос 2. Графы. Способы задания графов.
- •Вопрос 3. Задача о максимальном потоке на сети. Теорема Форда-Фалкерсона. Алгоритм Форда нахождения максимального потока.
- •Вопрос 4. Задача о потоке минимальной стоимости. Алгоритм Басакера-Гоуэна нахождения оптимального потока.
- •Вопрос 5. Задача о кратчайшем маршруте и метод ее решения.
- •Вопрос 6. Метод потенциалов для решения транспортной задачи в сетевой постановке.
- •7. Основные понятия динамического программирования. Задачи, приводящие к динамическому программированию.
- •Вопрос 9. Основные понятия динамического программирования Задача о выборе кратчайшего пути .
- •Вопрос 10. Основные понятия динамического программирования. Планирование производственной программы.
- •Вопрос 11. Основные понятия динамического программирования. Задача об оптимальном распределении ресурсов
- •Вопрос 12. Основные понятия динамического программирования. Задача о замене оборудования.
- •Вопрос 13. Методы векторной оптимизации. Метод последовательных уступок.
- •Вопрос 14. Методы векторной оптимизации. Метод ведущего критерия.
- •Вопрос 11. Методы векторной оптимизации. Метод равных и наименьших отклонений
- •Вопрос 16 Методы векторной оптимизации. Метод минимакса
Вопрос 9. Основные понятия динамического программирования Задача о выборе кратчайшего пути .
Дан неориентированный граф, для каждого ребра которого задана его длина. Вершины графа пронумерованы числами от 1 до N. Требуется найти путь минимальной длины, соединяющий 1-ю вершину с N-й.
Решим эту задачу методом динамического программирования.
Инвариантное погружение.
Рассмотрим семейство задач P(k), k=1,...,N, где P(k) – задача о нахождении пути минимальной длины, соединяющий 1-ю вершину с k-й.
Исходная задача запишется в виде P(N).
Функция Беллмана.
Пусть B(k) – длина минимального пути в задаче P(k), x*(k) – последовательность дуг оптимального пути в этой задаче.
Уравнение Беллмана (связь между решениями задач семейства).
Пусть G – множество вершин, для которых задача нахождения минимального пути уже решена. Рассмотрим множество вершин G1, смежных с множеством G, т.е. не входящих в G, но в которые можно попасть из множества G по некоторой дуге графа.
Обозначим l=(x,y) – дуга l начинается в вершине x и заканчивается в вершине y, d(l) – длина дуги l.
Пусть
min{d(l)+B(k) | l=(m,k), mG1, kG} = d(l*)+B(k*), l*=(m*,k*). (3.3.1)
Тогда
B(m*) = d(l*)+B(k*), (3.3.2)
причем
x*(m*) = (x*(k*), l*). (3.3.3)
Решение семейства задач
Уравнения (3.3.1) – (3.3.3) фактически не надо решать. Они указывают последовательность решения задач нашего семейства. Самые простая задача – найти кратчайший путь из 1-й вершины в эту же вершину, при этом B(1)=0, x*(1) не содержит дуг.
Таким образом, первоначально множество G = {1}, G1 содержит все смежные с 1-й вершины. Уравнения (3.3.1)–(3.3.3) позволяют расширить множество G, вычислив значение B для одной из смежных вершин (для той, на которой достигается минимум в (3.3.1)).
Пример. На рисунке 3.3.1 задан граф.
Требуется найти кратчайший путь из вершины 1 в вершину 7.
Решение. По принципу динамического программирования рассмотрим семейство задач P(k), состоящих в отыскании кратчайшего пути из вершины 1 в вершину k. Оптимальный путь x*(k) будем описывать упорядоченным множеством вершин, через которые он проходит.
На первом этапе мы знаем решение только задачи P(1), для которой B(1)=0, x*(1)=. Результаты расчетов будем записывать в таблицу.
Первый столбец будет содержать вершины из множества G, для которых есть смежные вершины из G1. В ячейки этого столбца запишем номер вершины k и (в скобках) значение B(k), а также номер предпоследней вершины в оптимальном пути.
Остальным столбцам будут соответствовать вершины из множества G1 (смежные вершинам первого столбца). В каждой из ячеек (k,j) мы запишем сумму B(k)+d(k;j), где d(k;j) – длина дуги, соединяющей вершины k и j.
Таблица 3.3.1
|
G1 | |
G |
2 |
3 |
1 (0, 1) |
0+ 5=5 |
0+3=3 |
Минимум из значений ячеек, равный 3, достигается при k=1, j=3. Поэтому B(3) = 3, причем предпоследняя вершина в оптимальном пути имеет номер 1. Записываем таблицу для G={1,3} (если вершины k и j не соединяются дугой, ячейка остается пустой).
Таблица 3.3.2
|
G1 | ||
G |
2 |
4 |
6 |
1 (0, 1) |
0+ 5=5 |
|
|
3 (3, 1) |
3+1=4 |
3+3=6 |
3+5=8 |
Минимум из значений ячеек, равный 4, достигается при k=3, j=2. Поэтому B(2) = 4, предпоследняя вершина в оптимальном пути имеет номер 3. Записываем таблицу для G={1,2,3} (первую вершину мы далее не рассматриваем, т.к. она уже не связана дугами с вершинами из G1).
Таблица 3.3.3
|
G1 | ||
G |
4 |
5 |
6 |
2 (4, 3) |
4+4=8 |
4+6=10 |
|
3 (3, 1) |
3+3=6 |
|
3+5=8 |
Минимум из значений ячеек, равный 6, достигается при k=3, j=4. B(4)=6, предпоследняя вершина в оптимальном пути имеет номер 3. Записываем таблицу для G={1,2,3,4}.
Таблица 3.3.4
|
G1 | |
G |
5 |
6 |
2 (4, 3) |
4+6=10 |
|
3 (3, 1) |
|
3+5=8 |
4 (6, 3) |
6+4=10 |
6+3=9 |
Минимум из значений ячеек, равный 8, достигается при k=3, j=6. B(6)=8, предпоследняя вершина в оптимальном пути имеет номер 3. Записываем таблицу для G={1,2,3,4,6} (вершина 3 далее не участвует).
Таблица 3.3.5
|
G1 | |
G |
5 |
7 |
2 (4, 3) |
4+6=10 |
|
4 (6, 3) |
6+4=10 |
|
6 (8, 3) |
6+4=10 |
6+6=12 |
Минимум из значений ячеек, равный 10, достигается при k=2, 4 и 6, j=5. B(5)=9, а предпоследней вершиной в оптимальном пути можно считать любую из вершин с номерами 2, 4 или 6. Записываем таблицу для G={1,2,3,4,5,6} (участвуют только вершины 5 и 6).
Таблица 3.3.6
|
G1 |
G |
7 |
5 (9, 2) |
9+2=11 |
6 (8, 3) |
6+6=12 |
B(7)=11, предпоследняя вершина – номер 5.
В итоге вершина номер 7 попала в множество G, следовательно, расчеты заканчиваются.
Таблица 3.3.7
G |
1 (0, 1) |
2 (4, 3) |
3 (3, 1) |
4 (6, 3) |
5 (9, 2) |
6 (8, 3) |
7 (11,5) |
Итак, длина минимального пути из 1 в 7 равна 11. Можно выписать и сам путь, т.е. оптимальный порядок прохождения вершин графа.
По таблице 3.3.7 находим, что для вершины 7 предпоследняя вершина в оптимальном пути – вершина 5, для вершины 5 – вершина 2, для вершины 2 – вершина 3, для вершины 3 – вершина 1.
Ответ: оптимальный путь: 1, 3, 2, 5, 7 имеет длину