อัลกอริธึมการลดความสูงแบบ First-Fit (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)
อัลกอริทึมของ Baker's Up-Down (UD)
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 ยังปรับความกว้างของแถบและรายการให้เป็นปกติเพื่อให้แถบมีความกว้างของหน่วย RF อันดับแรกจัดเรียงรายการทั้งหมดที่มีความกว้างมากกว่า 1/2 รายการที่เหลืออยู่จะถูกจัดเรียงในระดับความสูงที่ไม่เพิ่มขึ้นและจะถูกบรรจุไว้เหนือระดับความสูง H0 ซึ่งมากกว่า 1/2 จากนั้น RF จะทำซ้ำกระบวนการต่อไปนี้ โดยทั่วไปแล้ว RF จะบรรจุสิ่งของจากซ้ายไปขวาพร้อมด้านล่างตามความสูง H0 จนกว่าจะไม่มีที่ว่างอีกต่อไป จากนั้นแพ็ครายการจากขวาไปซ้ายและจากบนลงล่าง (เรียกว่าย้อนกลับระดับ) จนกระทั่งความกว้างรวมอย่างน้อย 1/2 จากนั้นระดับย้อนกลับจะลดลงจนกระทั่ง (อย่างน้อย) หนึ่งในนั้นแตะรายการด้านล่าง หล่นลงจะถูกทำซ้ำอย่างใด
อัตราส่วนโดยประมาณ: RF (I) <= 2 · OPT (I)
อัลกอริทึมของ Steinberg อัลกอริทึมของ
Steinberg ซึ่งเขียนเป็น M ในกระดาษประเมินขอบเขตบนของความสูง H ที่จำเป็นในการบรรจุสิ่งของทั้งหมดเช่นที่พิสูจน์ว่ารายการอินพุตสามารถบรรจุในรูปสี่เหลี่ยมกว้าง W และความสูง H จากนั้นพวกเขา กำหนดเจ็ดโพรซีเดอร์ (โดยมีเงื่อนไขเจ็ดข้อ) แต่ละข้อแบ่งเป็นปัญหาเล็ก ๆ สองข้อและแก้ปัญหาแบบเรียกซ้ำ มันได้รับการแสดงให้เห็นว่าปัญหาที่เวิ้งว้างใด ๆ ตอบสนองหนึ่งในเจ็ดเงื่อนไข
อัตราส่วนการประมาณ: M (I) <= 2 · OPT (I)
อัลกอริทึมแบบแยกส่วน (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)
อัตราส่วนประมาณของอัลกอริทึมของ Sleator คือ 2.5 ซึ่งแน่น