Упаковка следующего контейнера
Next-fit — это онлайн-алгоритм упаковки мусора . Его входные данные представляют собой список элементов разного размера. Результатом его работы является упаковка — распределение предметов по контейнерам фиксированной вместимости так, чтобы сумма размеров предметов в каждом контейнере не превышала вместимости. В идеале нам хотелось бы использовать как можно меньше ячеек, но минимизация количества ячеек — это NP-сложная задача. Алгоритм следующего соответствия использует следующую эвристику :
- Он сохраняет текущий контейнер , который изначально пуст.
- Когда товар прибывает, он проверяет, помещается ли он в текущую корзину.
- Если он подходит, он помещается внутрь него.
- В противном случае текущая ячейка закрывается, открывается новая ячейка, и поступающий товар помещается в эту новую ячейку.
Next-Fit — это алгоритм ограниченного пространства: для него требуется, чтобы в любой момент времени была открыта только одна частично заполненная корзина. Алгоритм был изучен Дэвидом С. Джонсоном в его докторской диссертации. [ 1 ] в 1973 году.
Время выполнения
[ редактировать ]Время работы NextFit может быть ограничено , где количество элементов в списке. [ 2 ]
Коэффициент аппроксимации
[ редактировать ]Обозначим через NF(L) количество ячеек, используемых NextFit, а через OPT(L) — оптимальное количество ячеек, возможное для списка L.
Верхняя граница
[ редактировать ]Затем для каждого списка , . Интуиция доказательства заключается в следующем. Количество ячеек, используемых этим алгоритмом, не более чем в два раза превышает оптимальное количество ячеек. Другими словами, невозможно, чтобы 2 контейнера были заполнены более чем наполовину, поскольку такая возможность подразумевает, что в какой-то момент ровно один контейнер был заполнен не более чем наполовину, и была открыта новая, чтобы вместить предмет размером не более . Но поскольку первый имеет по крайней мере пространство , алгоритм не откроет новую корзину для предметов, размер которых не превышает . Только после того, как контейнер наполнится более чем или если предмет размером больше прибывает, алгоритм может открыть новую корзину. Таким образом, если у нас есть контейнеры, по крайней мере контейнеры заполнены более чем наполовину. Поэтому, . Потому что — нижняя граница оптимального значения , мы поняли это и поэтому . [ 3 ] : 74
Нижняя граница
[ редактировать ]Для каждого , существует список такой, что и .
Семейство списков, для которых установлено, что дается с . Оптимальное решение для этого списка имеет корзины, содержащие два предмета размером и одна корзина с предметы с размером (т.е. всего бункеров), в то время как решение, сгенерированное NF, имеет контейнеры с одним предметом размера и один предмет с размером .
Ограниченный размер элемента
[ редактировать ]Если максимальный размер элемента , то коэффициент асимптотической аппроксимации удовлетворяет:
- для всех ;
- для всех .
Другие объекты недвижимости
[ редактировать ]Next-Fit упаковывает список и его инверсию в одинаковое количество ячеек. [ 4 ]
Next- k -Fit (NkF)
[ редактировать ]Next-k-Fit — это вариант Next-Fit, но вместо того, чтобы держать открытым только один контейнер, алгоритм оставляет последний контейнеры открываются и выбирают первый контейнер, в который помещается товар.
Для , NkF дает результаты, улучшенные по сравнению с результатами NF, однако увеличивая к постоянным значениям, большим, чем не улучшает алгоритм в худшем случае. Если алгоритм представляет собой алгоритм ПочтиAnyFit и затем . [ 1 ]
См. также
[ редактировать ]- Next-fit-decreasing (NFD) — это автономный вариант Next-Fit: он принимает все входные элементы, упорядочивает их по убыванию размера и вызывает Next-Fit. Его коэффициент асимптотической аппроксимации значительно лучше: менее 1,7 вместо 2.
Ссылки
[ редактировать ]- ^ Jump up to: а б Джонсон, Дэвид С. (1973). «Почти оптимальные алгоритмы упаковки контейнеров» (PDF) . Массачусетский технологический институт .
- ^ Сури, Субхаш. «Бин-упаковка» . UCSB Информатика . Проверено 7 октября 2021 г.
- ^ Vazirani, Vijay V. (2003), Approximation Algorithms , Berlin: Springer, ISBN 3-540-65367-8
- ^ Фишер, Дэвид К. (1 декабря 1988 г.). «Next-fit упаковывает список и его обратную сторону в одинаковое количество ячеек» . Письма об исследованиях операций . 7 (6): 291–293. дои : 10.1016/0167-6377(88)90060-0 . ISSN 0167-6377 .