280 likes | 663 Views
AVL- Ağaçları (Trees). Dengeli İkili Ağaç. İkili arama ağacının dezavantajı, yüksekliğin N-1 kadar olabilmesidir. Bunun manası: Ekleme ve silme ve diğer bir çoğu işlem gerçekleştirilirken karmaşıklığın en kötü durumda O(N) olmasıdır. İstenen özellik ağacın yüksekliğinin küçük olmasıdır.
E N D
Dengeli İkili Ağaç • İkili arama ağacının dezavantajı, yüksekliğin N-1 kadar olabilmesidir. • Bunun manası: Ekleme ve silme ve diğer bir çoğu işlem gerçekleştirilirken karmaşıklığın en kötü durumda O(N) olmasıdır. • İstenen özellik ağacın yüksekliğinin küçük olmasıdır. • N tane düğümü olan ikili ağacın yüksekliği en az (log N) ‘ dir. • Bu nedenle, amaç ikili arama ağacının yüksekliğini O(log N) olarak tutabilmektir. • Bu tür ağaçlara dengeli ikili ağaçlar denilir.Örnekler AVL ağaçlar, kırmızı-siyah ağaçlar (red-black tree)
AVL ağaçlar Bir düğümün yüksekliği • Bir yaprağın yüksekliği 1’dir.Null işaretçinn yüksekliği sıfırdır. • İç bir düğümün yüksekliği çocuklarının maksimum yüksekliğinin 1 fazlasıdır. Not: Burada yapılan yükseklik tanımı daha önce yapılandan farklıdır.
AVL Ağaçlar • AVL ağaç bir ikili ağaçtır ve aşağıdaki şartı sağlar • ağaçtaki herbir düğüm için, sol ve sağ altağaçların yükseklikleri en fazla 1 farklılık gösterir. AVL özelliği burada ihlal edilmiştir
AVL Ağaç • x, yüksekliği h olan bir AVL ağacın kökü olsun. • Nh, yüksekliği h olan bir AVL ağaçtaki düğümlerin minimum sayısını göstersin. • Açıkça görülebilir ki Ni≥ Ni-1 • Böylece • Genel form aşağıdaki gibi olur. • Sınır şartlar: N1=1 ve N2 =2. Buradan h = O(log Nh) manası çıkarılır. • Böylece, AVL ağaç üzerinde yapılacak işlemlerin çoğu O(log N) zaman alır.
y x A C B Dönüşler (Rotations) • Ağaç yapısı değiştiği zaman (ekleme veya silme gibi), AVL ağaç özelliğini sağlama için ağacı değiştirmeliyiz. • Bu işlem tek dönüş veyaçift dönüş yapılarak sağlanır. Örnek: Tek dönüş x y C B A Dönüşten sonra Dönüşten önce
Dönüşler • Ekleme/ silme işlemi tek bir düğüm ekleme ve silme içerdiği için, bazı altağaçların yüksekliği 1 kadar artabilir / azalabilir. • Böylece, bir x düğümünde, AVL ağaç özelliği ihlal edildiği zaman, bunun manası of left(x) ve right(x) kesinlikle 2 birim fark ediyor demektir. • AVL ağaç özelliğini korumak için x’ e dönüpler uygulanacaktır.
Ekleme (Insertion) • Öncelikle, sıradan bir ikili ağaca ekleniyormuş gibi yeni anahtarı yeni bir yaprak olarak ekle • Yeni yapraktan köke kadar olan yolu takip et.Karşılaşılan herbir x düğümü için left(x) ve right(x) ‘in en fazla 1 farklılık içerip içermediğini kontrol et. • Evet ise parent(x) ile devam et. Değilse, ya bir tek dönüş yada bir çift dönüş ile • Eklem için, x düğümünde bir dönüş gerçekleştirdikten sonra, x’ in geri kalan ata sında herhangi bir dönüp gerçekleştirilmesine gerek yoktur.
Ekleme • X, left(x) ve right(x) değerlerinin birden fazla farklı olduğu yerde bir düğüm olsun. • x in yüksekliğini h+3 olduğunu varsayalım • Bu halde 4 durum oluşur. • left(x) in yüksekliği h+2 (yani right(x) in yüksekliği h) • left(left(x)) in yüksekliği h+1 sol çocuk ile (üzerinde) tek dönüş • right(left(x)) in yüksekliği h+1 sol çocuk ile çift dönüş • right(x) yüksekliği h+2 (yani left(x) in yüksekliği h) • right(right(x)) in yüksekliği h+1 sağ çocuk ile (üzerinde) tek dönüş • left(right(x)) in yüksekliği h+1 sağ çocuk ile (üzerinde) çift dönüş
Tek dönüş A altağacına yeni bir anahtar eklendi. x ‘ de AVL ağaç özelliği ihlal edildi. left(x) yüksekliği h+2 right(x) yüksekliği h.
Tek dönüş C altağacına yeni bir anahtar eklendi. x ‘ de AVL ağaç özelliği ihlal edildi. Tek dönüş O(1) kadar zaman alır. Ekleme O(log N) kadar zaman alır.
3 1 4 4 8 1 0.8 3 5 5 8 3 4 1 x AVL Tree 5 C y 8 B A 0.8 Ekle 0.8 Dönüşten sonra
Çift dönüş B1 veya B2 alt ağaçlarına yeni anahtar eklendi. x de AVL-özelliği ihlal edildi. x-y-z bir zig-zag şekli oluşturur Ayrıca sol-sağ dönüş olarak da isimlendirilir
Çift dönüş B1 veya B2 alt ağaçlarına yeni anahtar eklendi. x de AVL-özelliği ihlal edildi. Ayrıca sağ-sol dönüş olarak da isimlendirilir
x C y 3 A z 8 4 3.5 1 4 B 3.5 5 5 8 3 3 4 1 AVL Tree 5 8 ekle 3.5 Dönüşten sonra 1
2 2 2 3 3 4 4 2 1 1 2 1 3 3 Şekil 1 3 5 3 Şekil 4 Şekil 2 Şekil 3 1 Şekil5 Şekil 6 Genişletilmiş örnek ekle 3,2,1,4,5,6,7, 16,15,14 Tek dönüş Tek dönüş
2 4 2 4 4 Şekil 8 Şekil 7 6 5 5 7 6 3 7 3 3 1 2 2 1 2 5 4 6 4 5 6 Şekil 10 Şekil 9 5 Şekil 11 3 3 1 1 1 Tek dönüş Tek dönüş
4 4 4 7 15 7 16 3 16 3 3 16 2 2 2 Şekil12 Şekil 13 15 6 6 6 5 7 Şekil 14 5 5 1 1 1 Çift dönüş
4 4 6 14 15 16 15 14 3 3 16 2 2 Şekil 15 Şekil 16 7 6 5 7 5 1 1 Çift dönüş
Silme • Sıradan bir ikili ağaçta olduğu gibi x düğümünü sil. Daha sonra köke olan yol aşağıdaki gibi incelenir. • Karşılaşılan herbir x düğümü için sol(x) (left(x)) ve sağ(x) (right(x)) altağaçlarının yükseklik farkının 1 olup olmadığına bak. Eğer fark 1 ise ebeveyn(x) üzerinden işleme devam et. Aksi takdirde x üzerinde gerekli dönüşleri yap. Eklemede olduğu gibi silmede de 4 durum vardır. • Silme için, x’de dönüş yaptıktan sonra, x’in atalarında da (ancestor) dönüşler yapmamız gerekebilir. Bu işlemi köke ulaşana kadar uygularız.
Deletion • Silme için tek dönüşler 4 duruma (iki durum yerine ) ayrılabilir. On closer examination: the single rotations for deletion can be divided into 4 cases (instead of 2 cases) • Sol çocukla dönüşler için iki durum. • Sağ çocukla dönüşler için iki durum.
Silme işlemindeki tek dönüşler Her iki şekilde de , altağaç C’den bir düğüm silimiştir ve yükseklihi h’ a düşürmüştür. y’nin yüksekliği h+2 ‘ dir.A’nın yüksekliği h+1 olduğu zaman, B’nin yüksekliği ya h’dır yada h+1’dir. Her iki durumu da aynı tek dönüş düzeltebilir. Sol çocuk üzerinden dönüş
Silme işlemindeki tek dönüşler Her iki şekilde de altağaaç A’dan bir düşüm silimiştir ve yükseklik h’ a düşmüştür. y’nin yüksekliği h+2’ dir. C’nin yüksekliği h+1 olduğu zaman, B’nin yükseklikliği h veya h+1 olabilir. Her iki durumu da tek dönüş düzeltebilir. rotate with right child
Silmedeki dönüşler • Tek dönüş için 4 durum vardır fakat hepsini ayrı ayrı değerlendirmeye gerek olmayabilir. • Çift dönüş için eklemede olduğu gibi 2 durum vardır. • Dolayısı ile eklemede belirlendiği mantıkla silmede de hangi dönüşlerin gerçekleştirilebileceği belirlenebilir.