Гармоническая упаковка бункера
Гармоничная упаковка в корзину — это семейство онлайн-алгоритмов для упаковки в корзину . Входными данными для такого алгоритма является список элементов разного размера. На выходе получается упаковка — разбиение предметов на ячейки фиксированной вместимости так, чтобы сумма размеров предметов в каждой ячейке не превышала вместимости. В идеале нам хотелось бы использовать как можно меньше ячеек, но минимизация количества ячеек — NP-сложная задача.
Алгоритмы гармонической упаковки в контейнеры основаны на разделении предметов на категории в зависимости от их размеров в соответствии с гармонической прогрессией . Есть несколько вариантов этой идеи.
Гармоника- к
[ редактировать ]Алгоритм Harmonic k - разбивает интервал размеров гармонично в куски для и такой, что . Предмет называется -предмет, если .
Алгоритм делит множество пустых контейнеров на бесконечные классы для , один тип ячейки для каждого типа товара. Тип контейнера используется только для контейнеров для упаковки предметов типа . Каждый контейнер типа для может содержать ровно -предметы. Теперь алгоритм действует следующим образом:
- Если следующий элемент это -предмет для , предмет помещается в первое (только открытое) контейнер, содержащий менее частей или открывает новый, если такого контейнера не существует.
- Если следующий элемент это -item, алгоритм помещает его в ячейки типа с помощью Next-Fit.
Этот алгоритм был впервые описан Ли и Ли. [1] Имеет временную сложность где n — количество входных элементов. На каждом шаге существует не более открытые контейнеры, которые потенциально могут быть использованы для размещения предметов, т. е. это алгоритм с ограниченным k пространством.
Ли и Ли также изучили коэффициент асимптотической аппроксимации. Они определили последовательность , для и доказал, что для он утверждает, что . Для он утверждает, что . Кроме того, они представили семейство наихудших примеров этого случая.
Утонченная гармоника (RH)
[ редактировать ]Refined-Harmonic сочетает в себе идеи алгоритма Harmonic-k с идеями Refined-First-Fit . Он помещает элементы размером больше, чем аналогично методу Refined-First-Fit, тогда как более мелкие элементы размещаются с использованием Harmonic-k. Идея этой стратегии заключается в том, чтобы уменьшить количество огромных отходов в контейнерах, содержащих куски размером чуть больше .
Алгоритм классифицирует элементы по следующим интервалам: , , , , , для , и . Алгоритм размещает -items, как в Harmonic-k, хотя для элементов в нем используется другая стратегия. и . Есть четыре возможности упаковки. -предметы и - вещи в контейнеры.
- Ан -bin содержит только один -элемент.
- Ан -bin содержит только один -элемент.
- Ан -bin содержит один -предмет и один -элемент.
- Ан -bin содержит два -предметы.
Ан -bin обозначает бункер, предназначенный для хранения второго -элемент. Алгоритм использует числа N_a, N_b, N_ab, N_bb и N_b' для подсчета количества соответствующих интервалов в решении. Кроме того, N_c= N_b+N_ab
Алгоритм Refined-Harmonic-k для списка L = (i_1, \dots i_n):1. N_a = N_b = N_ab = N_bb = N_b' = N_c = 02. Если i_j — I_k-кусок затем используйте алгоритм Harmonic-k для его упаковки3. иначе, если i_j является I_a-элементом тогда если N_b != 1, затем упакуйте i_j в любой J_b-bin; Н_б--; Н_аб++; иначе поместите i_j в новую (пустую) корзину; Н_а++;4. иначе, если i_j является I_b-элементом тогда если N_b' = 1 затем поместите i_j в I_b'-bin; Н_б' = 0; Н_бб++;5. иначе, если N_bb <= 3N_c затем поместите i_j в новый контейнер и назовите его I_b'-bin; Н_б' = 1 иначе, если N_a != 0 затем поместите i_j в любой I_a-bin; Н_а--; N_ab++;N_c++ иначе поместите i_j в новую корзину; Н_b++;N_c++
Этот алгоритм был впервые описан Ли и Ли. [1] Они доказали, что для он утверждает, что .
Другие варианты
[ редактировать ]Модифицированная гармоника (MH) имеет асимптотическое соотношение . [2]
Модифицированная гармоника 2 (MH2) имеет асимптотическое соотношение . [2]
Гармоника + 1 (H+1) имеет асимптотическое соотношение . [3]
Гармоника ++ (H++) имеет асимптотическое соотношение [3] и . [3]
Ссылки
[ редактировать ]- ^ Jump up to: а б Ли, CC; Ли, DT (июль 1985 г.). «Простой онлайн-алгоритм упаковки в контейнеры» . Журнал АКМ . 32 (3): 562–572. дои : 10.1145/3828.3833 . S2CID 15441740 .
- ^ Jump up to: а б Раманан, Пракаш; Браун, Донна Дж; Ли, CC; Ли, DT (сентябрь 1989 г.). «Онлайн-упаковка контейнеров в линейное время». Журнал алгоритмов . 10 (3): 305–326. дои : 10.1016/0196-6774(89)90031-X . hdl : 2142/74206 .
- ^ Jump up to: а б с Сейден, Стивен С. (2002). «О проблеме онлайн-упаковки корзин». Журнал АКМ . 49 (5): 640–671. дои : 10.1145/585265.585269 . S2CID 14164016 .