İlk Takılma Azalan Yükseklik (FFDH) algoritması
FFDH, R'nin uyduğu ilk seviyedeki bir sonraki R (artan yükseklikteki) öğeyi paketler. Hiçbir seviye R'yi barındıramazsa, yeni bir seviye oluşturulur.
FFDH'nin zaman karmaşıklığı: O (n · log n).
Yaklaşıklık oranı: FFDH (I) <= (17/10) · OPT (I) +1; 17 / 10'un asimptotik sınırı sıkıdır.
Next-Fit Azalan Yükseklik (NFDH) algoritması
NFDH, R uyuyorsa bir sonraki R öğesini (artan yükseklikte) geçerli seviyeye paketler. Aksi takdirde, geçerli seviye "kapalı" olur ve yeni bir seviye oluşturulur.
Zaman karmaşıklığı: O (n · log n).
Yaklaşıklık oranı: NFDH (I) <= 2 · OPT (I) +1; 2'nin asimptotik sınırı sıkıdır.
En Uygun Azaltma Yüksekliği (BFDH) algoritması
BFDH, kalan yatay boşluğun minimum olduğu R'yi barındırabilenler arasında bir sonraki R öğesini (artan yükseklikte) paketler. Hiçbir seviye R'yi barındıramazsa, yeni bir seviye oluşturulur.
Sol Alt (BL) Algoritma
BL artan sipariş genişliğine göre birinci dereceden eşyalar. BL, bir sonraki öğeyi sığacak kadar dibe yakın ve daha sonra herhangi bir paketlenmiş öğeyle örtüşmeden gidebildiği kadar sola yakın paketler. BL'nin seviye odaklı bir paketleme algoritması olmadığını unutmayın.
Zaman karmaşıklığı: O (n ^ 2).
Yaklaşıklık oranı: BL (I) <= 3 · OPT (I).
Fırıncı Yukarı-Aşağı (UD) algoritması
UD, BL'nin bir kombinasyonunu ve NFDH'nin genelleştirilmesini kullanır. Şeridin genişliği ve parçaları, şerit birim genişliği olacak şekilde normalleştirilir. UD, öğeleri genişlemeyen genişlikte sipariş eder ve ardından her biri genişliği (1/2, 1], (1 / 3,1 / 2], (1 / 4,1 / 3 aralığında olan öğeleri beş gruba böler. ], (1 / 5,1 / 4], (0,1 / 5]. Şerit ayrıca beş bölgeye ayrılır R1, ···, R5. Temel olarak, aralıktaki bazı genişlik öğeleri (1 / i + 1, 1 / i], 1 <= i <= 4 için, BL tarafından Ri bölgesine paketlenir BL, şeridin sağ tarafında yukarıdan aşağıya doğru artan bir boşluk bıraktığından, UD önce bu avantajı alır öğeyi yukarıdan aşağıya doğru j = 1, ···, 4 (sırayla) için Rj'ye paketleme Böyle bir alan yoksa, öğe BL tarafından Ri'ye paketlenir.Nihayet, en fazla 1/5 boyutunda öğeler (genelleştirilmiş) NFDH algoritması ile R1, ···, R4'teki alanlara paketlenir.
Yaklaşıklık oranı: UD (I) <= (5/4) · OPT (I) + (53/8) H, burada H, öğelerin maksimum yüksekliğidir; 5/4 asimptotik sınırı sıkıdır.
Ters takma (RF) algoritması
RF ayrıca şeridin ve öğelerin genişliğini normalleştirir, böylece şerit birim genişliğinde olur. RF, ilk önce genişliği 1 / 2'den büyük tüm parçaları istifler. Kalan öğeler artmayan yükseklikte sıralanır ve 1/2'den büyüklerin ulaştığı H0 yüksekliğinin üzerinde paketlenir. Ardından RF aşağıdaki işlemi tekrarlar. Kabaca konuşursak, RF, yer kalmayıncaya kadar öğeleri soldan sağa H0 yükseklik çizgisi boyunca paketler. Ardından, toplam genişlik en az 1/2 olana kadar öğeleri sağdan sola ve yukarıdan aşağıya (ters düzey denir) paketler. Ardından, ters seviye (en azından) biri aşağıdaki öğelere değene kadar düşürülür. Açılır menü bir şekilde tekrarlanır.
Yaklaşıklık oranı: RF (I) <= 2 · OPT (I).
Steinberg'in algoritması
Steinberg'in algoritması, kağıtta M olarak ifade edilir, tüm öğelerin paketlenmesi için gereken H yüksekliğinin üst sınırını tahmin eder, böylece giriş öğelerinin W ve H genişliğinde bir dikdörtgen içine paketlenebileceği kanıtlanır. her biri bir problemi iki küçük soruna bölmek ve bunları özyinelemeli olarak çözmek için yedi prosedür (yedi koşullu) tanımlayın. İzlenebilir herhangi bir sorunun yedi koşuldan birini karşıladığı gösterilmiştir.
Yaklaşıklık oranı: M (I) <= 2 · OPT (I).
Split-Fit algoritması (SF) SF, öğeleri iki gruba ayırır, L1 genişliği 1/2'den büyük ve L2 en fazla 1/2. L1'in tüm öğeleri ilk önce FFDH tarafından paketlenmiştir. Daha sonra, genişliği 2/3'ten fazla olan tüm öğeler, genişliği en fazla 2/3 olanların altında olacak şekilde düzenlenir. Bu, 1/3 genişliğinde bir dikdörtgen R alanı oluşturur. Daha sonra L2'de kalan öğeler R'ye paketlenir ve FFDH kullanılarak L1 ile paketlenenlerin üzerindeki boşluk paketlenir. R'de yaratılan seviyelerin, L1 ambalajının üzerinde yaratılan seviyelerin altında olduğu kabul edilir.
Yaklaşıklık oranı: SF (I) <= (3/2) · OPT (I) + 2; 3/2 asimptotik bağ sıkıdır.
Sleator algoritması
Sleater algoritması dört adımdan oluşur:
1/2 'den daha büyük tüm eşyalar, şeridin alt kısmında üst üste yerleştirilir. H0'ın sonuçta ortaya çıkan paketin yüksekliği olduğunu varsayalım Sonraki tüm paketleme h0'ın üzerinde gerçekleşecektir.
Kalan öğeler artan yükseklikle sipariş edilir. H0 yükseklik çizgisi boyunca soldan sağa doğru bir miktar öğe (artan yükseklik sırasına göre) paketlenir.
Daha sonra şeridi iki eşit yarıya kesmek için ortada dikey bir çizgi çizilir (bu çizginin kısmen sağ yarısında paketlenmiş bir öğeyi kesebileceğini unutmayın). İki satır herhangi bir öğeyi geçmeyecek şekilde, bir yarısı sol yarıya (sol taban çizgisi denir) ve bir sağ yarıya (sağ taban çizgisi denir) uzunluğunda iki yatay çizgi parçası çizin.
Daha düşük bir yüksekliğe sahip sol veya sağ taban çizgisini seçin ve bir sonraki öğe çok geniş olana kadar şeridin ilgili yarısına bir seviye öğe paketleyin.
Yeni bir taban çizgisi oluşturulur ve tüm maddeler paketlenene kadar Adım (4) alt taban çizgisinde tekrarlanır.
Zaman karmaşıklığı: O (n · log n).
Sleator algoritmasının yaklaşık oranı 2,5'tir ve bu da sıkıdır.