Реферат: Динамическое программирование (задача о загрузке)

Состояние на этапе j можно описать с помощью переменной zj , которая выражает количество имеющихся к концу этапа j овец для распределения на этапах j+1, j+2, ..., n, или с помощью переменной xj , которая выражает количество имеющихся к началу этапа j+1 овец, обусловленное принятыми на этапах 1,2,...,j решениями. Первое определение ориентировано на построение рекуррентного соотношения
для процедуры обратной прогонки, тогда как второе определение приводит к использованию алгоритма прямой прогонки.

Алгоритм обратной прогонки

Обозначим через fi (zi ) максимальную прибыль, получаемую на этапах j,j+1,…,n, при заданном zj . Рекуррентное соотношение имеет следующий вид:

Заметим, что yj и zj - неотрицательные целые числа. Кроме того, уj (количество овец, проданных в конце периода j) должно быть меньше или равно zj . Верхней границей для значений zj , является величина 2j k (где k- исходный размер стада), которая соответствует отсутствию продажи.

Алгоритм прямой прогонки

Обозначим через gj (xj ) максимальную прибыль, получаемую на этапах 1,2,...,j при заданном xj , (где xj — размер стада к началу этапа J+1). Рекуррентное соотношение записывается в следующем виде:

- целое.

Сравнение двух формулировок показывает, что представление xj -1 через xj создает более существенные препятствия для вычислений, чем представление zj +1 через zj .

В замене xj -1 =(xj +yj )/2 подразумевается целочисленность правой части, тогда как на равенство zj +1 =2(zj -yj ) такое требование не накладывается. Таким образом в случае процедуры прямой прогонки значения yj и xj , связанные неравенством

Yj <=2j k -Xj ,

должны дополнительно удовлетворять условию целочисленности их полусуммы, связанному с видом зависимости хj -1 от xj ,. Рассмотренный пример иллюстрирует трудности вычислительного характера, которые обычно возникают при использовании алгоритма прямой прогонки.


2.3 Решение задачи о загрузке

Контрольная работа содержит вопросы по N различным темам. Каждый вопрос типа i имеет вес Vi(i=1,2,…N), а также время, отводимое на ответ Wi. Максимально время, которое может затратить студент на контрольную работу W. Требуется определить максимальное количество баллов (вес), которое может набрать студент за отведенное время W=30. Данные приведены в таблице:

I Wi Vi

15

2 6

34

43

5

66

75

87

2

3

1

4

7

5

3

2

2

3

2

4

К-во Просмотров: 423
Бесплатно скачать Реферат: Динамическое программирование (задача о загрузке)