В технике, экономике и некоторых других направлениях иногда приходится решать задачи на поиск оптимального пути или состояния. По сути это цель любой автоматизации - минимизировать затраты или получить наилучший результат. Это понятие ввёл в 40-ых годах прошлого века Ричард Беллман. Идея достаточно простая - для того чтобы получить конечный результат, необходимо предварительно решить несколько вспомогательных задач. Решить каждую из которых можно решив их предварительные задачи. Саму постановку...
Источник: Nuances of Programming Предыдущая часть: “Структуры данных: подход «разделяй и властвуй»” Подход динамического программирования схож с подходом «разделяй и властвуй»: тоже разбивает задачи на как можно более мелкие подзадачи. Отличие в том, что здесь подзадачи решаются не независимо. Результаты этих более мелких подзадач запоминаются и используются для аналогичных или перекрывающихся подзадач. Динамическое программирование применяется там, где есть задачи, которые можно разделить на похожие подзадачи, а их результаты использовать повторно...