WikiDer > Список задач с рюкзаком

List of knapsack problems

В проблема с рюкзаком одна из наиболее изученных проблем в комбинаторная оптимизация, с множеством реальных приложений. По этой причине было рассмотрено множество частных случаев и обобщений.[1][2]

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

В проблема с рюкзаком в самой простой форме:

максимизировать
при условии

Прямые обобщения

Один из распространенных вариантов состоит в том, что каждый элемент можно выбрать несколько раз. В ограниченная задача о рюкзаке указывает, для каждого элемента j, верхняя граница тыj (которое может быть положительным целым числом или бесконечностью) от того, сколько раз элемент j можно выбрать:

максимизировать
при условии
неотъемлемая часть для всех j

В неограниченная задача о рюкзаке (иногда называют целочисленная задача о рюкзаке) не ограничивает количество раз, когда элемент может быть выбран:

максимизировать
при условии
неотъемлемая часть для всех j

Показано, что неограниченный вариант НП-полный в 1975 году Люкером.[3] И ограниченный, и неограниченный варианты допускают FPTAS (по сути, такой же, как в задаче о рюкзаке 0-1).

Если предметы подразделяются на k классы обозначены , а из каждого класса нужно взять ровно по одному элементу, получаем задача о ранце с множественным выбором:

максимизировать
при условии
для всех
для всех и все

Если для каждого элемента прибыль и вес равны, мы получаем проблема суммы подмножества (часто соответствующие проблема решения вместо этого дается):

максимизировать
при условии

Если у нас есть п предметы и м рюкзаки с емкостями , мы получаем задача с несколькими рюкзаками:

максимизировать
при условиидля всех
для всех
для всех и все

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

Квадратичная задача о рюкзаке:

максимизировать
при условии
для всех

Задача о сетевом рюкзаке Союза:

SUKP определен Kellerer et al.[2] (на странице 423) следующим образом:

Учитывая набор Предметы и набор так называемые элементы , каждый элемент соответствует подмножеству набора элементов . Предметы иметь неотрицательную прибыль , , а элементы иметь неотрицательный вес , . Общий вес набора элементов определяется общим весом элементов объединения соответствующих наборов элементов. Задача состоит в том, чтобы найти подмножество предметов, общий вес которых не превышает вместимость ранца и максимальную прибыль.

Множественные ограничения

Если существует более одного ограничения (например, ограничение объема и ограничение веса, где объем и вес каждого элемента не связаны), мы получаем задача о рюкзаке с множественными ограничениями, многомерная задача о рюкзаке, или же м-размерная задача о рюкзаке. (Обратите внимание, что «размер» здесь не относится к форме каких-либо элементов.) У него есть варианты 0-1, ограниченные и неограниченные; неограниченный показан ниже.

максимизировать
при условиидля всех
, целое числодля всех

Вариант 0-1 (для любых фиксированных ) оказался НП-полный около 1980 г. и более сильно не имеет FPTAS, если P = NP.[4][5]

Ограниченный и неограниченный варианты (для любых фиксированных ) также имеют такую ​​же твердость.[6]

Для любых фиксированных эти проблемы действительно допускают псевдополиномиальное время алгоритм (аналогичный базовому рюкзаку) и PTAS.[2]

Ранцевидные задачи

Если вся прибыль равна 1, мы постараемся максимизировать количество предметов, не превышающее вместимость ранца:

максимизировать
при условии

Если у нас есть несколько контейнеров (одинакового размера), и мы хотим упаковать все п предметов в как можно меньшем количестве контейнеров, мы получаем проблема с упаковкой бункера, который моделируется с помощью индикаторных переменных контейнер я используется:

свести к минимуму
при условии

В проблема с режущим материалом идентичен проблема с упаковкой бункера, но поскольку в практических примерах обычно гораздо меньше типов предметов, часто используется другая формулировка. Элемент j необходим Bj раз, каждый "образец" предметов, которые помещаются в один рюкзак, имеет переменную, Икся (Существуют м паттерны) и узор я использует предмет j бij раз:

свести к минимуму
при условиидля всех
для всех

Если к задаче о рюкзаке с множественным выбором мы добавим ограничение, что каждое подмножество имеет размер п и снимаем ограничение на общий вес, получаем проблема назначения, что также является проблемой нахождения максимального двудольное соответствие:

максимизировать
при условиидля всех
для всех
для всех и все

в Рюкзак максимальной плотности вариант есть начальный вес , и мы максимизируем плотность выбранных элементов, которые не нарушают ограничение емкости:[7]

максимизировать
при условии

Хотя они встречаются реже, чем перечисленные выше, существует несколько других проблем, подобных ранцу, в том числе:

  • Вложенная задача о рюкзаке
  • Проблема сворачивающегося рюкзака
  • Нелинейная задача о ранце
  • Обратно-параметрическая задача о рюкзаке

Последние три из них обсуждаются в справочной работе Kellerer et al. Проблемы с рюкзаком.[2]

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

  1. ^ Мартелло, Сильвано и Тот, Паоло (1990). Задачи о ранце: алгоритмы и компьютерные реализации. Джон Уайли и сыновья. ISBN 978-0471924203.CS1 maint: несколько имен: список авторов (связь)
  2. ^ а б c d Келлерер, Ганс и Пферши, Ульрих и Писингер, Дэвид (2004). Проблемы с рюкзаком. Springer Verlag. ISBN 978-3-540-40286-2.CS1 maint: несколько имен: список авторов (связь)
  3. ^ Люкер, Г.С. (1975). «Две NP-полные задачи в целочисленном неотрицательном программировании». Отчет № 178, Лаборатория компьютерных наук, Принстон. Цитировать журнал требует | журнал = (помощь)
  4. ^ Генс, Г. В. и Левнер, Е. В. (1979). "Сложность и аппроксимация алгоритмов комбинаторных задач: обзор". Центральный экономико-математический институт АН СССР, Москва.CS1 maint: использует параметр авторов (связь)
  5. ^ «О существовании схем быстрого приближения». Нелинейное программирование. 4: 415–437. 1980.
  6. ^ Журнал, М. Дж .; Черн, М.-С. (1984). «Заметка об аппроксимационных схемах для многомерных задач о ранце». Математика исследования операций. 9 (2): 244–247. Дои:10.1287 / moor.9.2.244.
  7. ^ Коэн, Реувен; Кацир, Лиран (2008). «Обобщенная проблема максимального покрытия». Письма об обработке информации. 108: 15–22. CiteSeerX 10.1.1.156.2073. Дои:10.1016 / j.ipl.2008.03.017.