Специфика решения задач динамического программирования заключается в следующем:
- Разделение основной проблемы на более мелкие, независимые подзадачи. www.geeksforgeeks.org Каждую подзадачу решают независимо и сохраняют решение в таблице или массиве. www.geeksforgeeks.org
- Использование сохранённых решений для создания решения основной проблемы. www.geeksforgeeks.org При этом одна и та же подзадача не решается дважды, что сокращает время вычислений. gb.ru www.geeksforgeeks.org
Кроме исходных данных, для динамического решения задачи требуется: gb.ru
- Таблица для сохранения итогов промежуточных вычислений. gb.ru При завершении работы среди них будет выбран окончательный результат. gb.ru
- Набор правил, по которым заносятся данные в пустые ячейки таблицы, исходя из значений в уже заполненных ячейках. gb.ru Для каждой задачи правила составляются индивидуально. gb.ru
- Правило, по которому из заполненной таблицы получается готовый ответ. gb.ru
Динамическое программирование требует глубокого понимания структуры задачи и умения выявлять повторяющиеся подзадачи. proglib.io