Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

AVL-Ağaçları (Trees).

Benzer bir sunumlar


... konulu sunumlar: "AVL-Ağaçları (Trees)."— Sunum transkripti:

1 AVL-Ağaçları (Trees)

2 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)

3 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.

4 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

5 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.

6 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üş y x x A y B C C B A Dönüşten sonra Dönüşten önce

7 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.

8 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.

9 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üş

10 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.

11 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.

12 x AVL Tree C y 8 B A Ekle 0.8 3 5 Dönüşten sonra 5 5 8 3 3 4 1 4 1 0.8

13 Ç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

14 Ç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

15 x y A z B C AVL Tree 8 ekle 3.5 4 5 Dönüşten sonra 5 5 8 3 3 4 1 4 1

16 Genişletilmiş örnek ekle 3,2,1,4,5,6,7, 16,15,14 3 3 3 5 Tek dönüş
Şekil 3 2 1 3 Şekil 4 3 2 Şekil 2 3 Şekil 1 2 1 3 4 Şekil 5 2 1 3 4 5 Şekil 6 Tek dönüş

17 5 Tek dönüş Şekil 10 6 2 1 4 5 3 Şekil 8 2 1 4 5 3 Şekil 7 Tek dönüş 4

18 4 2 6 7 1 3 5 16 Şekil 12 4 2 6 7 1 3 5 16 15 Şekil 13 Çift dönüş 4 2 6 15 1 3 5 16 7 Şekil 14

19 5 4 2 7 15 1 3 6 16 14 Şekil 16 4 2 6 15 1 3 5 16 7 14 Şekil 15 Çift dönüş

20 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.

21 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.

22 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üş

23 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

24 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.


"AVL-Ağaçları (Trees)." indir ppt

Benzer bir sunumlar


Google Reklamları