Упаковка контейнеров Next-fit

Next-fit — это онлайн-алгоритм для упаковки контейнеров . Его входные данные — список предметов разных размеров. Его выход — упаковка — разбиение элементов на контейнеры фиксированной емкости, так что сумма размеров предметов в каждом контейнере не превышает емкость. В идеале мы хотели бы использовать как можно меньше контейнеров, но минимизация количества контейнеров — это NP-трудная задача. Алгоритм next-fit использует следующую эвристику :

  • Он сохраняет текущую ячейку , которая изначально пуста.
  • При поступлении товара проверяется, помещается ли он в текущую корзину.
    • Если он подходит, то его помещают внутрь.
    • В противном случае текущая корзина закрывается, открывается новая корзина, и новый предмет помещается в эту новую корзину.

Next-Fit — это алгоритм ограниченного пространства — он требует, чтобы в любой момент времени была открыта только одна частично заполненная ячейка. Алгоритм был изучен Дэвидом С. Джонсоном в его докторской диссертации [1] в 1973 году.

Время выполнения

Время работы NextFit может быть ограничено , где — количество элементов в списке. [2] О ( н ) {\displaystyle {\mathcal {O}}(n)} н {\displaystyle n}

Коэффициент аппроксимации

Обозначим через NF(L) количество ячеек, используемых NextFit, а через OPT(L) — оптимальное количество ячеек, возможных для списка L.

Верхняя граница

Затем для каждого списка , . Интуиция доказательства следующая. Количество контейнеров, используемых этим алгоритмом, не более чем вдвое превышает оптимальное количество контейнеров. Другими словами, невозможно, чтобы 2 контейнера были заполнены не более чем наполовину, поскольку такая возможность подразумевает, что в какой-то момент ровно один контейнер был заполнен не более чем наполовину, и был открыт новый для размещения элемента размером не более . Но поскольку первый имеет по крайней мере пространство , алгоритм не будет открывать новый контейнер для любого элемента, размер которого не более . Только после того, как контейнер заполнится более чем или если поступит элемент с размером больше, чем , алгоритм может открыть новый контейнер. Таким образом, если у нас есть контейнеры, по крайней мере контейнеры заполнены более чем наполовину. Следовательно, . Поскольку является нижней границей оптимального значения , мы получаем, что и, следовательно , . [3] : 74  Л {\displaystyle L} Н Ф ( Л ) 2 О П Т ( Л ) 1 {\displaystyle NF(L)\leq 2\cdot \mathrm {OPT} (L)-1} Б / 2 {\displaystyle B/2} Б / 2 {\displaystyle B/2} Б / 2 {\displaystyle B/2} Б / 2 {\displaystyle B/2} Б / 2 {\displaystyle B/2} К {\displaystyle К} К 1 {\displaystyle К-1} я я с ( я ) > К 1 2 Б {\displaystyle \sum _{i\in I}s(i)>{\tfrac {K-1}{2}}B} я я с ( я ) Б {\displaystyle {\tfrac {\sum _{i\in I}s(i)}{B}}} О П Т {\displaystyle \mathrm {OPT} } К 1 < 2 О П Т {\displaystyle K-1<2\mathrm {OPT} } К 2 О П Т {\displaystyle K\leq 2\mathrm {OPT} }

Нижняя граница

Для каждого существует список такой, что и . Н Н {\displaystyle N\in \mathbb {N} } Л {\displaystyle L} О П Т ( Л ) = Н {\displaystyle \mathrm {OPT} (L)=N} Н Ф ( Л ) = 2 О П Т ( Л ) 2 {\displaystyle NF(L)=2\cdot \mathrm {OPT} (L)-2}

Семейство списков, для которых это выполняется, задается с . Оптимальное решение для этого списка имеет ячейки, содержащие два элемента размером и одну ячейку с элементами размером (т. е. общее количество ячеек), в то время как решение, сгенерированное NF, имеет ячейки с одним элементом размером и одним элементом размером . Н Ф ( Л ) = 2 О П Т ( Л ) 2 {\displaystyle NF(L)=2\cdot \mathrm {OPT} (L)-2} Л := ( 1 2 , 1 2 ( Н 1 ) , 1 2 , 1 2 ( Н 1 ) , , 1 2 , 1 2 ( Н 1 ) ) {\displaystyle L:=\left({\frac {1}{2}},{\frac {1}{2(N-1)}},{\frac {1}{2}},{\frac {1}{2(N-1)}},\dots ,{\frac {1}{2}},{\frac {1}{2(N-1)}}\right)} | Л | = 4 ( Н 1 ) {\displaystyle |L|=4(N-1)} Н 1 {\displaystyle N-1} 1 / 2 {\displaystyle 1/2} 2 ( N 1 ) {\displaystyle 2(N-1)} 1 / 2 ( N 1 ) {\displaystyle 1/2(N-1)} N {\displaystyle N} 2 ( N 1 ) {\displaystyle 2(N-1)} 1 / 2 {\displaystyle 1/2} 1 / ( 2 ( N 1 ) ) {\displaystyle 1/(2(N-1))}

Ограниченный размер элемента

Если максимальный размер элемента равен , то асимптотическое отношение аппроксимации удовлетворяет условию: α {\displaystyle \alpha } R N F {\displaystyle R_{NF}^{\infty }}

  • R N F ( size α ) 2 {\displaystyle R_{NF}^{\infty }({\text{size}}\leq \alpha )\leq 2} для всех ; α 1 / 2 {\displaystyle \alpha \geq 1/2}
  • R N F ( size α ) 1 / ( 1 α ) {\displaystyle R_{NF}^{\infty }({\text{size}}\leq \alpha )\leq 1/(1-\alpha )} для всех . α 1 / 2 {\displaystyle \alpha \leq 1/2}

Другие свойства

Next-Fit упаковывает список и его обратный список в одинаковое количество ячеек. [4]

Следующий-к-Подходит (НкФ)

Next-k-Fit — это вариант Next-Fit, но вместо того, чтобы оставлять открытым только один контейнер, алгоритм оставляет открытыми последние контейнеры и выбирает первый контейнер, в который помещается элемент. k {\displaystyle k}

Для , NkF обеспечивает результаты, которые улучшены по сравнению с результатами NF, однако увеличение до постоянных значений, больших, чем не улучшает алгоритм в его худшем случае. Если алгоритм является AlmostAnyFit-алгоритмом и тогда . [1] k 2 {\displaystyle k\geq 2} k {\displaystyle k} 2 {\displaystyle 2} A {\displaystyle A} m = 1 / α 2 {\displaystyle m=\lfloor 1/\alpha \rfloor \geq 2} R A ( size α ) R N 2 F ( size α ) = 1 + 1 / m {\displaystyle R_{A}^{\infty }({\text{size}}\leq \alpha )\leq R_{N2F}^{\infty }({\text{size}}\leq \alpha )=1+1/m}

Смотрите также

  • Next-fit-decreasing (NFD) — это офлайновый вариант Next-Fit: он принимает все входные элементы, упорядочивает их по убыванию размера и вызывает Next-Fit. Его асимптотическое приближение намного лучше: менее 1,7 вместо 2.

Ссылки

  1. ^ ab Джонсон, Дэвид С. (1973). "Почти оптимальные алгоритмы упаковки контейнеров" (PDF) . Массачусетский технологический институт .
  2. ^ Сури, Субхаш. «Упаковка контейнеров». UCSB Computer Science . Получено 7 октября 2021 г.
  3. ^ Вазирани, Виджай В. (2003), Алгоритмы аппроксимации , Берлин: Springer, ISBN 3-540-65367-8
  4. ^ Фишер, Дэвид К. (1988-12-01). «Next-fit упаковывает список и его обратный список в то же количество ячеек». Operations Research Letters . 7 (6): 291– 293. doi :10.1016/0167-6377(88)90060-0. ISSN  0167-6377.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Next-fit_bin_packing&oldid=1174658159"