Книга Динамическое программирование в прикладных задачах специального вида

В данной статье рассматриваются прикладные задачи, для решения которых ранее предлагался метод динамического программирования, разработанный Р. Беллманом в середине прошлого века. Этот метод, основанный на принципе оптимальности и вытекающих из него рекуррентных уравнениях, позволил свести решение многих сложных прикладных задач к решению последовательности более простых однотипных задач. К настоящему времени с помощью динамического программирования решены многие практически важные задачи. Однако при решении задач большой размерности, особенно при разработке систем, в которых алгоритм динамического программирования встроен в многократно повторяющийся цикл расчётов, время счёта оказывается неприемлемо велико даже с учётом мощностей современных компьютеров. Проблема повышения эффективности динамического программирования продолжает оставаться актуальной. В этом состоит цель настоящей работы. Установлено, что возможны различные реализации динамического программирования при решении одних и тех же прикладных задач. В статье анализируются возможности повышения эффективности применения динамического программирования при детальном учёте специфических особенностей прикладных задач, из которых некоторые допускают получение рекуррентных формул для вычисления оптимальной траектории на основе принципа оптимальности Р. Беллмана без перебора вариантов. Показано, что многие прикладные задачи, для решения которых предлагался метод динамического программирования с отбраковкой вариантов путей, приводящих в конкретное состояние, допускают дополнительно и отбраковку бесперспективных состояний в процессе счёта. Это резко повышает эффективность динамического программирования как с точки зрения используемого объёма памяти, так и с точки зрения времени счёта. Это утверждение основано на использовании специально разработанных экспериментальных программ для выполнения расчётов с целью оценки эффективности нового алгоритма применительно к решению практических задач как однокритериальных, так и двухкритериальных. Приводятся примеры таких задач и соответствующий алгоритм их решения.