Непрерывная задача о рюкзаке - Continuous knapsack problem
В теоретическая информатика, то непрерывная задача о рюкзаке (также известный как дробная задача о ранце) является алгоритмический проблема в комбинаторная оптимизация в котором цель состоит в том, чтобы заполнить контейнер («рюкзак») дробными количествами различных материалов, выбранных для максимизации ценности выбранных материалов.[1][2] Походит на классику проблема с рюкзаком, в котором предметы, помещаемые в контейнер, неделимы; однако проблема непрерывного ранца может быть решена в полиномиальное время тогда как классическая задача о рюкзаке NP-жесткий.[1] Это классический пример того, как, казалось бы, небольшое изменение в формулировке проблемы может иметь большое влияние на ее решение. вычислительная сложность.
Определение проблемы
Пример непрерывной или классической задачи о ранце может быть задан числовой емкостью W рюкзака вместе с набором материалов, с каждым из которых связано два числа: вес шя материала, который доступен для выбора, и общая стоимость vя из этого материала. Цель - выбрать сумму Икся ≤ шя каждого материала, с учетом ограничений производительности
и максимизация общей выгоды
- .
В классической задаче о рюкзаке каждая из сумм Икся должен быть либо нулем, либо шя; задача о непрерывном рюкзаке отличается тем, что позволяет Икся непрерывно изменяться от нуля до шя.[1]
Некоторые формулировки этой проблемы изменяют масштаб переменных Икся быть в диапазоне от 0 до 1. В этом случае ограничение мощности становится
- ,
и цель - максимизировать общую выгоду
- .
Техника решения
Проблему непрерывного ранца можно решить с помощью жадный алгоритм, впервые опубликовано в 1957 г. Джордж Данциг,[2][3] который рассматривает материалы в отсортированном порядке по их удельному весу. Для каждого материала количество Икся выбирается как можно больше:
- Если сумма сделанных до сих пор выборов равна емкости W, то алгоритм устанавливает Икся = 0.
- Если разница d между суммой сделанных выборов и W меньше чем шя, то алгоритм устанавливает Икся = d.
- В оставшемся случае алгоритм выбирает Икся = шя.
Из-за необходимости сортировки материалов этот алгоритм требует времени. О(п бревноп) на входах с п материалы.[1][2] Однако, адаптировав алгоритм нахождения взвешенные медианы, возможно вовремя решить проблему О(п).[2]
Рекомендации
- ^ а б c d Гудрич, Майкл Т.; Тамассия, Роберто (2002), "5.1.1 Задача о дробном рюкзаке", Разработка алгоритмов: основы, анализ и примеры в Интернете, John Wiley & Sons, стр. 259–260..
- ^ а б c d Корте, Бернхард; Выген, Йенс (2012), «17.1 Дробный рюкзак и взвешенная медиана», Комбинаторная оптимизация: теория и алгоритмы, Алгоритмы и комбинаторика, 21, Springer, стр. 459–461, ISBN 9783642244889.
- ^ Данциг, Джордж Б. (1957), "Экстремальные задачи с дискретной переменной", Исследование операций, 5: 266–277, Дои:10.1287 / opre.5.2.266, МИСТЕР 0089098.