Document 518889

advertisement
СИ ТУ ТАНТ СИН
Научный руководитель – М.А. ПОСЫПКИН, к.ф.-м.н.
Национальный исследовательский университет «МИЭТ»
СРАВНЕНИЕ РАЗЛИЧНЫХ ВАРИАНТОВ МЕТОДА
ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
ДЛЯ РЕШЕНИЯ ЗАДАЧИ О РАНЦЕ
Проведено сравнение различных вариантов метода динамического программирования для решения задачи о ранце.
Задача о ранце[1, 2] — одна из задач комбинаторной оптимизации.
Требуется положить в рюкзак набор предметов максимальной суммарной
стоимости при условии, что общий вес всех предметов ограничен грузоподъемностью ранца. Пусть имеется n предметов, каждый из которых
имеет ценность p j > 0 и вес w j > 0, j = 1, ..., n и ранец грузоподъемностью C . Задача формализуется следующим образом:
n
 pi xi  max,
i 1
n
w x
i 1
i
i
 C , xi  0,1, i  1,..., n .
Решением задачи является вектор из нулей и единиц, задающий значения переменных.
Методы динамического программирования (ДП) основаны на принципе оптимальности Беллмана. Табличный алгоритм динамического программирования реализует принцип оптимальности с помощью двумерной
матрицы размерности n C . Необходимым условием применимости этого алгоритма является целочисленность коэффициентов задачи.
Алгоритм динамического программирования со списком использует
список пар, первый элемент которых содержит суммарную стоимость положенных в ранец предметов, а второй – оставшийся лимит по весу, т.е.
разность между грузоподъемностью ранца и суммарным весом положенных в него предметов. Концепция доминирования позволяет сокращать
перебор в методе динамического программирования за счет удаления неперспективных состояний. Пара (a, b) доминирует пару (c, d ) если
ac и bd .
Табл. 1. Таблица результатов со списками
Номер
задач
ДП
(сек)
ДП со списком
(сек)
Число Шагов
ДП
Число Шагов
ДП со списком
1
2
3
4
5
6
7
8
9
10
Средние
значение
34
33
32
33
34
33
34
32
33
34
15
15
12
12
10
11
15
18
11
11
50100501
50100501
50100501
50100501
50100501
50100501
50100501
50100501
50100501
50100501
1503546
1419281
1203467
1255444
1016818
1234950
1569151
1673445
1265404
1214087
33,2 сек
13 сек
50100501
1335559,3
Алгоритм динамического программирования со списком во-первых
сокращает перебор, а во-вторых, не требует целочисленности коэффициентов задачи. Мы видим, что время выполнения алгоритма динамического
программирования пропорционально n C , а время выполнения алгоритма со списками определяется сложностью задачи. В работе реализованы оба варианта алгоритма динамического программирования и проведено экспериментальное сравнение алгоритмов. Эксперименты выполнялись с n=500 переменными на компьютере с двумя процессорами
IntelCore 2 Duo T5670 1,80 ГГц и 4 Гб памяти. В табл. 1 приведены результаты выполнения обоих алгоритмов на 10 случайно сгенерированных
примерах задачи о ранце. Результаты сравнения подтверждают более высокую эффективность метода динамического программирования со списком оп сравнению с табличным.
Список литературы
1.
2.
1. Сигал И.Х, Иванова А.П. Введение в прикладное дискретное программирование:
модели и вычислительные алгоритмы.
Kellerer H, Pfershy U, Pisinger D. Knapsack Problems.–Springer Verlag, 2004–546 p.
Download