Непрерывная задача о рюкзаке - Continuous knapsack problem

В теоретическая информатика, то непрерывная задача о рюкзаке (также известный как дробная задача о ранце) является алгоритмический проблема в комбинаторная оптимизация в котором цель состоит в том, чтобы заполнить контейнер («рюкзак») дробными количествами различных материалов, выбранных для максимизации ценности выбранных материалов.[1][2] Походит на классику проблема с рюкзаком, в котором предметы, помещаемые в контейнер, неделимы; однако проблема непрерывного ранца может быть решена в полиномиальное время тогда как классическая задача о рюкзаке NP-жесткий.[1] Это классический пример того, как, казалось бы, небольшое изменение в формулировке проблемы может иметь большое влияние на ее решение. вычислительная сложность.

Определение проблемы

Пример непрерывной или классической задачи о ранце может быть задан числовой емкостью W рюкзака вместе с набором материалов, с каждым из которых связано два числа: вес шя материала, который доступен для выбора, и общая стоимость vя из этого материала. Цель - выбрать сумму Икся ≤ шя каждого материала, с учетом ограничений производительности

и максимизация общей выгоды

.

В классической задаче о рюкзаке каждая из сумм Икся должен быть либо нулем, либо шя; задача о непрерывном рюкзаке отличается тем, что позволяет Икся непрерывно изменяться от нуля до шя.[1]

Некоторые формулировки этой проблемы изменяют масштаб переменных Икся быть в диапазоне от 0 до 1. В этом случае ограничение мощности становится

,

и цель - максимизировать общую выгоду

.

Техника решения

Проблему непрерывного ранца можно решить с помощью жадный алгоритм, впервые опубликовано в 1957 г. Джордж Данциг,[2][3] который рассматривает материалы в отсортированном порядке по их удельному весу. Для каждого материала количество Икся выбирается как можно больше:

  • Если сумма сделанных до сих пор выборов равна емкости W, то алгоритм устанавливает Икся = 0.
  • Если разница d между суммой сделанных выборов и W меньше чем шя, то алгоритм устанавливает Икся = d.
  • В оставшемся случае алгоритм выбирает Икся = шя.

Из-за необходимости сортировки материалов этот алгоритм требует времени. О(п бревноп) на входах с п материалы.[1][2] Однако, адаптировав алгоритм нахождения взвешенные медианы, возможно вовремя решить проблему О(п).[2]

Рекомендации

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