Принцип динамического программирования при решении алгоритмических задач заключается в том, чтобы не решать одну и ту же подзадачу многократно, а сохранять результаты решения подзадач и повторно использовать их для ускорения общего процесса решения. 1
Метод основывается на двух ключевых принципах: 3
- Оптимальная подструктура. 3 Оптимальное решение задачи строится на основе оптимальных решений её подзадач. 3
- Перекрывающиеся подзадачи. 3 Динамическое программирование использует тот факт, что многие подзадачи повторяются в процессе решения более масштабной задачи. 3 Из-за того, что результаты в перекрывающихся подзадачах сохраняются, метод позволяет избежать лишних вычислений — значительно сокращает время на большую задачу. 3