Алгоритм зменшення висоти першого розміру (FFDH)
FFDH пакує наступний елемент R (у зростаючу висоту) на перший рівень, де R підходить. Якщо жоден рівень не може вмістити R, створюється новий рівень.
Часова складність FFDH: O (n · log n).
Коефіцієнт наближення: FFDH (I) <= (17/10) · OPT (I) +1; асимптотична межа 17/10 є тісною.
Алгоритм зменшення висоти "Next-Fit" (NFDH) "
NFDH" пакує наступний елемент R (у зростаючу висоту) на поточний рівень, якщо R підходить. В іншому випадку поточний рівень "закритий" і створюється новий рівень.
Часова складність: O (n · log n).
Коефіцієнт наближення: NFDH (I) <= 2 · OPT (I) +1; асимптотична межа 2 щільна.
Алгоритм зменшення висоти найкращого пристосування (BFDH)
BFDH запаковує наступний елемент R (у зростаючу висоту) на рівні, серед тих, що можуть вмістити R, для якого залишковий горизонтальний простір є мінімальним. Якщо жоден рівень не може вмістити R, створюється новий рівень.
Алгоритм знизу вліво (BL)
BL позицій першого порядку за шириною, що не збільшується. BL упаковує наступний предмет так само ближче до нижнього, як він буде вміщуватися, а потім як можна ближче ліворуч, наскільки він може пройти, не перекриваючи жоден упакований предмет. Зауважте, що BL не є алгоритмом упаковки, орієнтованого на рівень.
Часова складність: O (n ^ 2).
Коефіцієнт наближення: BL (I) <= 3 · OPT (I).
Алгоритм "Угору вниз" Бейкера
UD використовує комбінацію BL та узагальнення NFDH. Ширина смуги та елементів нормалізується так, щоб смуга була одиничною шириною. UD упорядковує елементи з не збільшується шириною, а потім ділить їх на п'ять груп, кожна з шириною в діапазоні (1/2, 1], (1 / 3,1 / 2], (1 / 4,1 / 3 ], (1 / 5,1 / 4], (0,1 / 5]. Смуга також розділена на п’ять областей R1, ···, R5. В основному деякі елементи ширини в діапазоні (1 / i + 1, 1 / i], для 1 <= i <= 4, упаковуються в область Ri по BL. Оскільки BL залишає простір збільшення ширини зверху вниз в правій частині смуги, UD використовує цю перевагу спочатку упаковка предмета в Rj для j = 1, ···, 4 (для порядку) зверху вниз. Якщо немає такого місця, предмет упаковується в Ri по BL. Нарешті, розмір елементів не більше 1/5 упаковані в пробіли в R1, ···, R4 за алгоритмом (узагальненим) NFDH.
Коефіцієнт наближення: UD (I) <= (5/4) · OPT (I) + (53/8) H, де H - максимальна висота елементів; асимптотична межа 5/4 є тісною.
Алгоритм
RF із зворотним приляганням (RF) також нормалізує ширину смуги та елементів так, щоб смуга була одиничною шириною. РФ спочатку укладає всі предмети шириною більше 1/2. Залишки відсортовані по висоті, що не збільшується, і будуть упаковані вище висоти H0, досягнутої на ті, що перевищують 1/2. Потім РФ повторює наступний процес. Грубо кажучи, РФ упаковує предмети зліва направо дном по лінії висоти H0, поки не залишиться місця. Потім упакуйте елементи праворуч ліворуч і зверху вниз (називаються зворотним рівнем), поки загальна ширина не буде не менше 1/2. Потім зворотний рівень опускається вниз, поки (принаймні) один з них не торкнеться якогось елемента нижче. Падіння вниз якось повторюється.
Коефіцієнт наближення: RF (I) <= 2 · OPT (I).
Алгоритм
Штейнберга Алгоритм Штейнберга, позначений як M у статті, оцінює верхню межу висоти H, необхідної для упаковки всіх елементів, щоб було доведено, що елементи введення можуть бути упаковані у прямокутник шириною W і висотою H. Вони потім визначте сім процедур (із семи умовами), кожна з яких розділить проблему на дві менші та вирішить їх рекурсивно. Було показано, що будь-яка простежена проблема задовольняє одній із семи умов.
Коефіцієнт наближення: M (I) <= 2 · OPT (I).
Алгоритм Split-Fit (SF) SF розділяє елементи на дві групи, L1 шириною більше 1/2, а L2 максимум 1/2. Усі позиції L1 спочатку запаковуються FFDH. Потім вони розташовуються так, що всі предмети шириною більше 2/3 виявляються нижче розмірів шириною не більше 2/3. Це створює прямокутник R простору шириною 1/3. Залишилися елементи в L2 потім упаковуються в R, а простір вище тих, які упаковані L1, використовуючи FFDH. Рівні, створені в R, вважаються нижчими за рівні, створені над упаковкою L1.
Коефіцієнт наближення: SF (I) <= (3/2) · OPT (I) + 2; асимптотична межа 3/2 є тісною.
Алгоритм Sleator Алгоритм Sleater
складається з чотирьох кроків:
Усі предмети шириною більше 1/2 упаковуються один на одного в нижній частині смужки. Припустимо, h0 - висота отриманої упаковки. Усі наступні упаковки відбудуться вище h0.
Залишилися елементи впорядковуються по зростаючій висоті. Рівень елементів упакований (у порядку, що не збільшується) зліва направо по лінії висоти h0.
Потім посередині прорисовується вертикальна лінія, щоб розрізати смужку на дві рівні половини (зверніть увагу, що ця лінія може вирізати предмет, який частково упакований у правій половині). Накресліть два відрізки горизонтальної лінії довжиною одна половина, один через ліву половину (називається лівою базовою лінією) та один поперек правої половини (називається правою базовою лінією) якомога нижче, щоб дві лінії не перетинали жоден предмет.
Виберіть ліву або праву базову лінію, яка має меншу висоту, і запакуйте рівень елементів у відповідну половину смужки, поки наступний елемент не стане занадто широким.
Формується нова базова лінія, і крок (4) повторюється на нижній базовій лінії, поки всі елементи не будуть упаковані.
Часова складність: O (n · log n).
Коефіцієнт наближення алгоритму Слятора становить 2,5, що є щільним.