Список проблем с рюкзаком
Задача о рюкзаке — одна из наиболее изученных задач комбинаторной оптимизации , имеющая множество практических приложений. По этой причине было рассмотрено множество частных случаев и обобщений. [1] [2]
Общим для всех версий является набор из n элементов, каждый из которых соответствующую прибыль pj имеющие и wj вес . Двоичная переменная решения x j используется для выбора элемента. Цель состоит в том, чтобы выбрать несколько предметов с максимальной общей прибылью, соблюдая при этом, что максимальный общий вес выбранных предметов не должен W. превышать Обычно эти коэффициенты масштабируются до целых чисел и почти всегда считаются положительными.
в Задача о рюкзаке ее самой простой форме:
максимизировать | ||
при условии | ||
Прямые обобщения [ править ]
Одним из распространенных вариантов является то, что каждый элемент можно выбрать несколько раз. Задача об ограниченном рюкзаке определяет для каждого предмета j верхнюю границу u j (которая может быть положительным целым числом или бесконечностью) количества раз, когда предмет j может быть выбран:
максимизировать | ||
при условии | ||
интеграл для всех j |
Задача о неограниченном рюкзаке (иногда называемая задачей о целочисленном рюкзаке ) не накладывает никаких верхних границ на количество раз, когда элемент может быть выбран:
максимизировать | ||
при условии | ||
интеграл для всех j |
показал, что неограниченный вариант является NP-полным . В 1975 году Люкер [3] И ограниченный, и неограниченный варианты допускают FPTAS (по сути тот же, что и тот, который использовался в задаче о рюкзаке 0–1).
Если предметы разделены на k классов, обозначаемых , и из каждого класса нужно взять ровно один предмет, мы получаем задачу о ранце с множественным выбором :
максимизировать | ||
при условии | ||
для всех | ||
для всех и все |
Если для каждого предмета прибыль и вес равны, мы получаем задачу о сумме подмножества соответствующая задача решения (часто вместо этого дается ):
максимизировать | ||
при условии | ||
Если у нас есть n предметов и m рюкзаков вместимостью , мы получаем задачу о нескольких рюкзаках :
максимизировать | ||
при условии | для всех | |
для всех | ||
для всех и все |
В качестве частного случая задачи о множественных рюкзаках, когда прибыль равна весу и все контейнеры имеют одинаковую вместимость, мы можем столкнуться с проблемой суммы множественных подмножеств .
Задача о квадратичном рюкзаке :
максимизировать | |||
при условии | |||
для всех |
Задача о рюкзаке Set-Union :
SUKP определен Келлерером и др. [2] (на странице 423) следующим образом:
Учитывая набор предметы и набор так называемые элементы , каждый предмет соответствует подмножеству набора элементов . Предметы иметь неотрицательную прибыль , , и элементы иметь неотрицательный вес , . Общий вес набора предметов определяется суммарным весом элементов объединения соответствующих наборов элементов. Цель состоит в том, чтобы найти подмножество предметов, общий вес которых не превышает вместимости рюкзака, и максимальную прибыль.
Множественные ограничения [ править ]
Если существует более одного ограничения (например, ограничение по объему и ограничение по весу, где объем и вес каждого предмета не связаны между собой), мы получаем задачу о рюкзаке с множественными ограничениями , задачу о многомерном рюкзаке или m - мерную задачу. проблема с рюкзаком . (Обратите внимание, что здесь «размер» не относится к форме каких-либо предметов.) Он имеет варианты 0–1, ограниченный и неограниченный; неограниченный показан ниже.
максимизировать | ||
при условии | для всех | |
, целое число | для всех |
Вариант 0-1 (для любого фиксированного ) было показано, что он NP-полный примерно в 1980 году и более строго, не имеет FPTAS, если только P = NP. [4] [5]
Ограниченный и неограниченный варианты (при любом фиксированном ) также обладают такой же твердостью. [6]
Для любого фиксированного , эти задачи допускают алгоритм псевдополиномиального времени (аналогичный алгоритму для базового рюкзака) и PTAS . [2]
Проблемы с рюкзаком [ править ]
Если все прибыли равны 1, мы постараемся максимизировать количество предметов, не превышающее вместимость рюкзака:
максимизировать | ||
при условии | ||
Если у нас есть несколько контейнеров (одного размера) и мы хотим упаковать все n предметов в как можно меньшее количество контейнеров, мы получаем проблему упаковки корзин , которая моделируется с помощью индикаторных переменных. контейнер i используется:
минимизировать | ||
при условии | ||
Задача о сокращении запасов идентична задаче об упаковке корзин , но поскольку в практических примерах обычно используется гораздо меньше типов товаров, часто используется другая формулировка. Предмет j необходим B j раз, каждый «шаблон» предметов, помещающихся в один рюкзак, имеет переменную x i (имеется m шаблонов), а шаблон i использует предмет j b ij раз:
минимизировать | ||
при условии | для всех | |
для всех |
Если к задаче о рюкзаке с множественным выбором мы добавим ограничение, согласно которому каждое подмножество имеет размер n , и удалим ограничение на общий вес, мы получим задачу назначения , которая также является проблемой поиска максимального двустороннего паросочетания :
максимизировать | ||
при условии | для всех | |
для всех | ||
для всех и все |
В варианте ранца максимальной плотности присутствует начальный вес. , и мы максимизируем плотность выбранных элементов, которые не нарушают ограничение мощности: [7]
максимизировать | ||
при условии | ||
Хотя они менее распространены, чем описанные выше, существуют и другие проблемы, похожие на рюкзак, в том числе:
- Задача о вложенном рюкзаке
- Проблема сворачивающегося рюкзака
- Нелинейная задача о рюкзаке
- Обратно-параметрическая задача о рюкзаке
Последние три из них обсуждаются в справочной работе Келлерера и др «Задачи о рюкзаке» . . [2]
Ссылки [ править ]
- ^ Мартелло, Сильвано и Тот, Паоло (1990). Задачи о рюкзаке: алгоритмы и компьютерные реализации . Джон Уайли и сыновья . ISBN 978-0471924203 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Jump up to: Перейти обратно: а б с д Келлерер, Ганс и Пферши, Ульрих и Пизингер, Дэвид (2004). Проблемы с рюкзаком . Издательство Спрингер . ISBN 978-3-540-40286-2 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Люкер, Г.С. (1975). Две NP-полные задачи неотрицательного целочисленного программирования . Отчет № 178, Лаборатория компьютерных наук, Принстон.
- ^ Генс, Г.В.; Левнер, Э.В. (1979). «Алгоритмы сложности и аппроксимации комбинаторных задач: обзор». Центральный экономико-математический институт АН СССР, Москва.
- ^ «О существовании схем быстрого приближения». Нелинейное программирование . 4 : 415–437. 1980.
- ^ Журнал Майкла Дж.; Черн, Мау-Шенг (1984). «Заметка о схемах аппроксимации многомерных задач о рюкзаке». Математика исследования операций . 9 (2): 244–247. дои : 10.1287/moor.9.2.244 .
- ^ Коэн, Реувен; Кацир, Лиран (2008). «Обобщенная проблема максимального покрытия». Письма об обработке информации . 108 : 15–22. CiteSeerX 10.1.1.156.2073 . дои : 10.1016/j.ipl.2008.03.017 .
- «Алгоритмы решения задач о рюкзаке» , Д. Пизингер. доктор философии диссертация, DIKU, Копенгагенский университет, Отчет 95/1 (1995).