1 / 24

AVL- Ağaçları (Trees)

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.

wolfe
Télécharger la présentation

AVL- Ağaçları (Trees)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  16. 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üş

  17. 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üş

  18. 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üş

  19. 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üş

  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.

More Related