Идея динамического программирования (ДП)

Метод ДП (Р. Беллман, В.С. Михалевич, Н.З. Шор) можно трактовать как алгоритмическую версию рассуждений по индукции.

Пусть sk (y), 1 £ k £ n, 0 £ y £ Y, — оптимальное значение целевой функции задачи (1) – (3), где n заменено на k, Y заменено на y.

Требуется найти sn (Y) и набор переменных, на котором достигается это значение.


ТЕОРЕМА 1. Пусть f 1, …, fn ­—монотонно неубывающие функции. Тогда справедливы следующие рекуррентные соотношения:

s 1(y) = f 1(y), 0 £ y £ Y; (4)
sk (y) = max { sk- 1(y - x) + fk (x) | 0 £ x £ y }, 2 £ k £ n, 0 £ y £ Y, (5)

Доказательство: Соотношение (4)очевидно. По определению

sk (y) ³ max { sk- 1(y - x) + fk (x) | 0 £ x £ y }.

Пусть теперь — такой вектор, что и

.

Поскольку имеем

.


Алгоритм ДП вычисляет множество Sk ={ sk (y) | 0 £ y £ Y}, k =1,…, n с помощью соотношений (4) и (5), где на каждом шаге оптимизируется ровно одна переменная.

  Процесс вычисления S 1,…, Sn называется прямым ходом алгоритма. Число операций» Y 2 n Память» Y n.  
y S 1(y) S 2(y) Sn (y)
         
         
         
       
Y       Sn (Y)

При обратном ходе алгоритма вычисляются значения , с учетом того, что уже известны Sk(y). Например, определяется из уравнения и так далее.

Число операций» Y n. Память» Y n.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: