Thuật toán First-Fit Giảm chiều cao (FFDH)
FFDH đóng gói vật phẩm tiếp theo R (ở chiều cao không tăng) ở cấp độ đầu tiên mà R phù hợp. Nếu không có cấp nào có thể chứa R, một cấp mới sẽ được tạo.
Độ phức tạp thời gian của FFDH: O (n · log n).
Tỷ lệ xấp xỉ: FFDH (I) <= (17/10) · OPT (I) +1; giới hạn tiệm cận của 17/10 là chặt chẽ.
Thuật toán Next-Fit Giảm chiều cao (NFDH)
NFDH gói mục tiếp theo R (ở chiều cao không tăng) ở mức hiện tại nếu R phù hợp. Mặt khác, mức hiện tại là "đóng" và một mức mới được tạo.
Độ phức tạp thời gian: O (n · log n).
Tỷ lệ xấp xỉ: NFDH (I) <= 2 · OPT (I) +1; ràng buộc tiệm cận của 2 là chặt chẽ.
Thuật toán Best-Fit Giảm chiều cao phù hợp (BFDH)
BFDH gói mục tiếp theo R (ở chiều cao không tăng) ở cấp độ, trong số các mức có thể chứa R, trong đó không gian ngang còn lại là tối thiểu. Nếu không có cấp nào có thể chứa R, một cấp mới sẽ được tạo.
Thuật toán dưới cùng bên trái (BL)
BL các mục thứ tự đầu tiên theo chiều rộng không tăng. BL đóng gói các mặt hàng tiếp theo gần với đáy vì nó sẽ vừa và sau đó càng gần bên trái càng tốt mà không bị chồng chéo với bất kỳ mặt hàng đóng gói nào. Lưu ý rằng BL không phải là một thuật toán đóng gói theo định hướng cấp.
Độ phức tạp thời gian: O (n ^ 2).
Tỷ lệ xấp xỉ: BL (I) <= 3 · OPT (I).
Thuật toán Up-Down (UD) của Baker
UD sử dụng kết hợp BL và tổng quát hóa NFDH. Chiều rộng của dải và các mục được chuẩn hóa để dải có chiều rộng đơn vị. UD sắp xếp các mục theo chiều rộng không tăng và sau đó chia các mục thành năm nhóm, mỗi nhóm có chiều rộng trong phạm vi (1/2, 1], (1 / 3,1 / 2], (1 / 4,1 / 3 ], (1 / 5,1 / 4], (0,1 / 5]. Dải cũng được chia thành năm khu vực R1, ···, R5. Về cơ bản, một số mục có chiều rộng trong phạm vi (1 / i + 1, 1 / i], với 1 <= i <= 4, được đóng gói vào vùng Ri bởi BL. Vì BL để lại một khoảng trống tăng chiều rộng từ trên xuống dưới ở phía bên phải của dải, UD tận dụng lợi thế này trước tiên đóng gói vật phẩm vào Rj cho j = 1, · ////, 4 (theo thứ tự) từ trên xuống dưới. Nếu không có không gian như vậy, vật phẩm được đóng gói vào Ri bởi BL. Cuối cùng, các vật phẩm có kích thước tối đa 1/5 được đóng gói vào các khoảng trắng trong R1, · ////, R4 bằng thuật toán NFDH (tổng quát).
Tỷ lệ xấp xỉ: UD (I) <= (5/4) · OPT (I) + (53/8) H, trong đó H là chiều cao tối đa của các mục; giới hạn tiệm cận của 5/4 là chặt chẽ.
Thuật toán Reverse-fit (RF)
RF cũng bình thường hóa chiều rộng của dải và các vật phẩm để dải có chiều rộng đơn vị. RF đầu tiên xếp tất cả các mục có chiều rộng lớn hơn 1/2. Các mục còn lại được sắp xếp theo chiều cao không tăng và sẽ được đóng gói trên độ cao H0 đạt được bởi những người lớn hơn 1/2. Sau đó RF lặp lại quy trình sau. Nói một cách đơn giản, RF gói các vật phẩm từ trái sang phải với đáy của chúng dọc theo chiều cao H0 cho đến khi không còn chỗ trống. Sau đó đóng gói các mục từ phải sang trái và từ trên xuống dưới (được gọi là cấp độ ngược) cho đến khi tổng chiều rộng tối thiểu là 1/2. Sau đó, cấp độ ngược được thả xuống cho đến khi (ít nhất) một trong số chúng chạm vào một số mục bên dưới. Việc thả xuống bằng cách nào đó được lặp lại.
Tỷ lệ xấp xỉ: RF (I) <= 2 · OPT (I).
Thuật toán của Steinberg Thuật toán của
Steinberg, ký hiệu là M trong bài báo, ước tính giới hạn trên của chiều cao H cần thiết để đóng gói tất cả các mục sao cho chứng minh rằng các mục đầu vào có thể được đóng gói thành một hình chữ nhật có chiều rộng W và chiều cao H. xác định bảy thủ tục (với bảy điều kiện), mỗi điều kiện để chia một vấn đề thành hai quy trình nhỏ hơn và giải quyết chúng một cách đệ quy. Nó đã được chỉ ra rằng bất kỳ vấn đề có thể kéo được thỏa mãn một trong bảy điều kiện.
Tỷ lệ xấp xỉ: M (I) <= 2 · OPT (I).
Thuật toán Split-Fit (SF) SF chia các mục thành hai nhóm, L1 với chiều rộng lớn hơn 1/2 và L2 nhiều nhất là 1/2. Tất cả các mục của L1 được FFDH đóng gói đầu tiên. Sau đó, chúng được sắp xếp sao cho tất cả các mục có chiều rộng hơn 2/3 đều nằm dưới các mục có chiều rộng tối đa bằng 2/3. Điều này tạo ra một hình chữ nhật R của không gian với chiều rộng 1/3. Các mục còn lại trong L2 sau đó được đóng gói thành R và khoảng trống phía trên các mục được đóng gói với L1 bằng FFDH. Các mức được tạo trong R được coi là thấp hơn các mức được tạo bên trên bao bì của L1.
Tỷ lệ xấp xỉ: SF (I) <= (3/2) · OPT (I) + 2; giới hạn tiệm cận của 3/2 là chặt chẽ.
Thuật toán của Sleator Thuật toán của
Sleater bao gồm bốn bước:
Tất cả các mục có chiều rộng lớn hơn 1/2 được đóng gói chồng lên nhau ở dưới cùng của dải. Giả sử h0 là chiều cao của bao bì kết quả Tất cả các lần đóng gói tiếp theo sẽ xảy ra trên h0.
Các mặt hàng còn lại được sắp xếp theo chiều cao không tăng. Một mức độ của các mặt hàng được đóng gói (theo thứ tự chiều cao không tăng) từ trái sang phải dọc theo chiều cao h0.
Một đường thẳng đứng sau đó được vẽ ở giữa để cắt dải thành hai nửa bằng nhau (lưu ý dòng này có thể cắt một mặt hàng được đóng gói một phần ở nửa bên phải). Vẽ hai đoạn đường ngang có chiều dài một nửa, một ngang qua nửa bên trái (được gọi là đường cơ sở bên trái) và một đoạn ở nửa bên phải (được gọi là đường cơ sở bên phải) càng thấp càng tốt để hai đường không đi qua bất kỳ mục nào.
Chọn đường cơ sở bên trái hoặc bên phải có chiều cao thấp hơn và đóng gói một mức vật phẩm vào một nửa dải tương ứng cho đến khi mục tiếp theo quá rộng.
Một đường cơ sở mới được hình thành và Bước (4) được lặp lại ở đường cơ sở thấp hơn cho đến khi tất cả các mặt hàng được đóng gói.
Độ phức tạp thời gian: O (n · log n).
Tỷ lệ gần đúng của thuật toán Sleator là 2,5, chặt chẽ.