Interested Article - Задача об упаковке в контейнеры

Задача об упаковке в контейнеры NP-трудная комбинаторная задача. Задача заключается в упаковке объектов предопределённой формы в конечное число контейнеров предопределённой формы таким способом, чтобы число использованных контейнеров было наименьшим или количество или объём объектов (которые упаковывают) были наибольшими.

Разновидности и методы решения задач упаковки

Существует множество разновидностей этой задачи ( , , , и т. п.), которые могут применяться в разных областях, как собственно в вопросе оптимального заполнения контейнеров, загрузки грузовиков с ограничением по весу, созданием резервных копий на съёмных носителях и т. д. Так как задача является NP-трудной , то использование точного переборного алгоритма возможно только при небольших размерностях. Обычно для решения задачи используют эвристические приближённые полиномиальные алгоритмы.

Задача упаковки в одномерные одинаковые контейнеры

Постановка задачи

Пусть дано множество контейнеров размера и множество предметов размеров . Надо найти целое число контейнеров и разбиение множества на подмножеств таких, что для всех . Решение называется оптимальным, если минимально. Минимальное далее обозначается OPT .

Упаковка как задача целочисленного программирования

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

Минимизировать
при ограничениях

где , если контейнер используется и , если предмет помещён в контейнер .

Приближённые полиномиальные алгоритмы

Простейшими полиномиальными алгоритмами упаковки являются алгоритмы Best Fit Decreasing — BFD (Наилучший подходящий по убыванию) и First Fit Decreasing — FFD (Первый подходящий по убыванию). Предметы упорядочивают по убыванию размеров и последовательно пакуют либо в контейнер, в котором после упаковки останется наименьший свободный объём — BFD, либо в первый контейнер куда он помещается — FFD. Доказано, что эти алгоритмы используют не более

контейнеров .

Однако для задачи упаковки существуют и асимптотически ε -оптимальные полиномиальные алгоритмы.

Задача определения, равно ли OPT двум или трем является NP-трудной. Поэтому для любого ε > 0, трудно упаковать предметы в (3/2 − ε)OPT контейнеров. (Если такой полиномиальный алгоритм существует, то за полиномиальное время можно определить разделятся ли n неотрицательных чисел на два множества с одинаковой суммой элементов. Однако известно, что эта проблема NP-трудна.) Следовательно, если P не совпадает с NP, то для задачи упаковки в контейнеры нет алгоритма приближенной схемы полиномиального времени (PTAS). С другой стороны, для всякого ε >0  можно найти решение с не более, чем (1 + ε)OPT + 1 контейнерами за полиномиальное время. Такие алгоритмы относятся к асимптотической PTAS. Но поскольку в оценке сложности этого класса алгоритмов обе константы произвольно зависят от  ε, подобные алгоритмы в отличие от FFD и BFD могут быть практически бесполезными.

Вероятностный подход

Для некоторого класса вероятностных распределений размеров упаковываемых предметов, включающего функции распределения выпуклые вверх и вниз, существует практический полиномиальный алгоритм упаковки асимптотически оптимальный почти наверное при неограниченном росте числа предметов. Для распределений не входящих в этот класс могут строиться индивидуальные полиномиальные асимптотически оптимальные алгоритмы.

Примечания

  1. Silvano Martello and Paolo Toth. (неопр.) . — Chichester, UK: John Wiley and Sons , 1990. — С. 221. — ISBN 0471924202 . 21 сентября 2013 года.
  2. Yue, Minyi (1991), "A simple proof of the inequality FFD (L) ≤ 11/9 OPT (L) + 1, ∀L for the FFD bin-packing algorithm", Acta Mathematicae Applicatae Sinica , 7 (4): 321—331, doi : , ISSN {{ citation }} : |contribution= игнорируется ( справка ) ; Неизвестный параметр |month= игнорируется ( справка )
  3. Fernandez de la Vega, W.; Lueker, G. S. (1981), "Bin packing can be solved within 1 + ε in linear time", Combinatorica , Springer Berlin / Heidelberg, 1 (4): 349—355, doi : , ISSN {{ citation }} : |contribution= игнорируется ( справка ) ; Неизвестный параметр |month= игнорируется ( справка )
  4. Дата обращения: 19 февраля 2016. 7 марта 2016 года.

См. также

Источник —

Same as Задача об упаковке в контейнеры