Динамическое программирование - раздел математики , посвященный теории и методам решения многошаговых задач оптимального управления .
В динамическом программировании для управляемого процесса среди множества всех допустимых управлений ищут оптимальное в смысле некоторого критерия есть такое которое приводит к экстремальному (наибольшего или наименьшего) значения целевой функции - некоторой числовой характеристики процесса. Во многостепенность понимают или многоступенчатую структуру процесса, или распределения управления на ряд последовательных этапов (ступеней, шагов), соответствующих, как правило, различным моментам времени. Таким образом, в названии "Динамическое программирование" под "программированием" понимают " принятие решений "," планирование ", а слово" динамическое " указывает на существенное значение времени и порядка выполнения операций в процессах и методах, которые рассматриваются.
Методы динамического программирования является составной частью методов, используемых при исследовании операций , и используются как в задачах оптимального планирования , так и при решении различных технических проблем (например, в задачах определения оптимальных размеров ступеней многоступенчатых ракет, в задачах оптимального проектирования прокладки дорог и др.).
Методы динамического программирования используются не только в дискретных , но и в непрерывных управляемых процессах, например, в таких процессах, когда в каждый момент определенного интервала времени необходимо принимать решения. Динамическое программирование также дало новый подход к задачам вариационного исчисления .
Хотя метод динамического программирования существенно упрощает исходные задачи, и непосредственное его использование, как правило, связано с громоздкими вычислениями. Для преодоления этих трудностей разрабатываются приближенные методы динамического программирования.