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

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 1:
'''Динамическое программирование''' в [[Теория управления|теории управления]] и [[Теория вычислений|теории вычислительных систем]] — способ решения сложных задач путём разбиения их на более простые подзадачи. Он применим к задачам с {{Не переведено|есть=:en:Optimal substructure|нужно=Оптимальная подструктура|текст=оптимальной подструктурой}}, выглядящим как набор перекрывающихся подзадач, сложность которых чуть меньше исходной. В этом случае время вычислений, по сравнению с «наивными» методами, можно значительно сократить.
 
Ключевая идея в динамическом программировании достаточно проста. Как правило, чтобы решить поставленную задачу, требуется решить отдельные части задачи (подзадачи), после чего объединить решения подзадач в одно общее решение. Часто многие из этих подзадач одинаковы. Подход динамического программирования состоит в том, чтобы решить каждую подзадачу только один раз, сократив тем самым количество вычислений. Это особенно полезно в случаях, когда число повторяющихся подзадач экспоненциально велико.