Динамическое программирование — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 2: Строка 2:
 
== Определение ==
 
== Определение ==
 
{{Определение
 
{{Определение
|definition = '''Принцип оптимальности для подзадач''' – важнейшее свойство задачи, формулирующееся следующим образом: <br> «Если есть оптимальное решение для некоторой подзадачи, которая возникает в процессе решения задачи, <br>то именно его нужно использовать для решения задачи в целом»}}<br>
+
|definition = '''Принцип оптимальности для подзадач''' – важнейшее свойство задачи, формулирующееся следующим образом:
Рассмотрим принцип оптимальности для динамического программирования на префиксе:<br>
+
«Если есть оптимальное решение для некоторой подзадачи, которая возникает в процессе решения задачи, то именно его нужно использовать для решения задачи в целом»}}
 +
 
 +
Рассмотрим принцип оптимальности для динамического программирования на префиксе:
 +
 
 
[[Файл:ST.jpg]]
 
[[Файл:ST.jpg]]
  

Версия 07:43, 23 ноября 2011

<wikitex>

Определение

Определение:
Принцип оптимальности для подзадач – важнейшее свойство задачи, формулирующееся следующим образом: «Если есть оптимальное решение для некоторой подзадачи, которая возникает в процессе решения задачи, то именно его нужно использовать для решения задачи в целом»


Рассмотрим принцип оптимальности для динамического программирования на префиксе:

ST.jpg

Префикс оптимального пути $S \rightsquigarrow U$ является оптимальным путём $S \rightsquigarrow U$. Требуется дойти до $T$. Оптимальный путь проходит через $U$. Пусть префикс $dU$ неоптимальный. Это значит, что есть более оптимальный путь. Тогда заменим этот префикс на более оптимальный путь до $U$, а путь $U \rightsquigarrow T$ добавим в конец. Получится более оптимальный путь $S \rightsquigarrow T$. Принцип оптимальности для подзадач выполняется. </wikitex>

Ссылки

  • Лекция 10.11.2011
  • Жадный алгоритм
  • Т. Кормен. «Алгоритмы. Построение и анализ» (Глава 15.3)