Необходимость принять решение возникает тогда, когда производятся те или иные целенаправленные действия. Если в какой-либо реальной задаче подобные ситуации возникают периодически, то образуется процесс принятия решений.
Предположим, что интересующий нас процесс можно разбить на N шагов, а действия, совершаемые на i-ом шаге, характеризуются совокупностью показателей
. Состояние процесса к началу этого шага имеет характеристику в виде набора параметров
. Обычно предпринимаемые действия не являются полностью произвольными, а зависят от состояния
, которое возникло перед i-ым шагом, т.е.
. Очевидно, результирующее значение критерия Z, получаемое в конце процесса, будет определяться теми
, которые были приняты, т.е.
. Возникает вопрос: Как выбрать
, чтобы величина Z приняла экстремальное значение? Ответ можно получить, рассматривая Z как функцию переменных
и находя экстремум z одним из известных способов, однако этот путь не всегда прост (особенно при большом числе переменных).
Появляется идея провести оптимизацию поэтапно, анализируя последовательно каждый шаг процесса в поисках наилучших вариантов его продолжения.
Эта идея лежит в основе метода динамического программирования, реализующего принцип последовательной оптимизации. Следовательно, важным условием применимости рассматриваемого метода является возможность разбиения процесса принятия решений на ряд однотипных шагов или этапов, каждый из которых планируется отдельно, но с учетом результатов, полученных на других шагах.
Динамическое программирование основывается на двух важных принципах-оптимальности и вложения.
Принцип оптимальности формулируется следующим образом:
Каково бы ни было состояние системы в результате какого-то числа шагов, мы должны выбирать управление на ближайшем шаге так, чтобы оно, в совокупности с оптимальным управлением на всех последующих шагах, приводило к максимальному выигрышу на всех оставшихся шагах, включая данный.
Принцип вложения утверждает, что природа задачи, допускающей использование метода динамического программирования, не меняется при изменении количества шагов, т. е. форма такой задачи инвариантна относительно N. В этом смысле всякий конкретный процесс с заданным N оказывается как бы вложенным в семейство подобных ему процессов и может рассматриваться с более широких позиций.
Реализация названных принципов дает гарантию того, что, во-первых, решение, принимаемое на очередном шаге, окажется наилучшим с точки зрения всего процесса (а не "узких интересов" отдельного этапа) и, во-вторых, последовательность решений одношаговой, двухшаговой и т. п. задач приведет к решению исходной N-шаговой задачи.
Эта задача легко решается методом динамического программирования. Хотя в своей постановке она не содержит упоминания о времени, можно все же операцию распределения средств мысленно развернуть в какой-то последовательности, считая за первый шаг вложение средств в предприятие
  
, за второй-в
  
и т. д. Управляемая система S в данном случае-средства
или ресурсы, которые распределяются. Состояние системы S перед каждым шагом характеризуется одним числом Q - наличным запасом еще не вложенных средств. В этой задаче "шаговыми управлениями" являются
средства
  
, выделяемые предприятиям. Требуется найти оптимальное
управление, т. е. такую совокупность чисел
  
, при которой
суммарный доход максимален.