Изменения

Перейти к: навигация, поиск

Динамическое программирование

413 байт добавлено, 05:00, 26 ноября 2011
Нет описания правки
|definition = «Если есть оптимальное решение для некоторой подзадачи, которая возникает в процессе решения задачи, то именно его нужно использовать для решения задачи в целом»}}
==Принцип оптимальности для динамического программирования на префиксе==
[[Файл:ST.jpg|320px]]
Рассмотрим принцип оптимальности для динамического программирования на префиксе:на примере классической задачи динамического программирования, т.е. поиска в заданном ориентированном ациклическом графе [[Кратчайший_путь_в_ациклическом_графе|кратчайшего пути]] от одной вершины к другой.
[[Файл:STЗадан граф. Требуется дойти от $S$ до $T$.jpg]] Префикс оптимального пути $S \rightsquigarrow U$ является оптимальным путём $S \rightsquigarrow U$. Требуется дойти до $T$. Есть какой-то префикс, оптимальный путь проходит через $U$. Рассмотрим префикс $\Delta U$ (т.е. путь $S \rightsquigarrow U$ ), пусть он неоптимальный. Это значит, что есть более оптимальный путь. Тогда заменим этот префикс на более оптимальный путь до $U$, а путь $U \rightsquigarrow T$ добавим в конец. Получится более оптимальный путь $S \rightsquigarrow T$. Принцип оптимальности для подзадач выполняется.
</wikitex>
285
правок

Навигация