İçeriğe atla

AVL ağacı

Vikipedi, özgür ansiklopedi
Birkaç elemanın AVL ağacına eklenmesini gösteren animasyon. sol, sağ, sağ-sol ve sol-sağ rotasyonları göstermektedir.
Görsel. 1: Dengeleme faktörleriyle bir AVL ağacı (yeşil)

Bilgisayar bilimlerinde bir AVL ağacı (İsmini icat eden Adelson-Velsky ve Landis'den alır) kendi kendini dengeleyen bir İkili arama ağacıdır. Bu tip Veri yapılarının icat edilmiş ilk örneğidir.[1] Bir AVL ağacında, iki çocuk alt ağacın uzunluk farklı en fazla bir olabilir; Eğer herhangi bir anda fark birden fazlaysa, dengeleme yapılarak bu özellik korunur. Arama, ekleme ve silme işlemlerinin hepsi hem ortalama hem de en kötü durumlarda O(log n) zaman sürer, burada harfi operasyon öncesindeki düğüm(node) adetidir. Ekleme ve çıkarma işlemleri ağacın bir veya daha fazla ağaç rotasyonları ile dengelenmesini gerektirebilir.

AVL ağacı ismini iki Sovyet mucitlerinden alır, Georgy Adelson-Velsky ve Evgenii Landis algoritmayı 1962'deki makaleleri "An algorithm for the organization of information".[2]'de yayımladılar.

AVL ağaçı ve Kırmızı-siyah ağaç aynı operasyonları destekledikleri ve ikisinde de basit operasyonlar için zamanı sürdüğü için sıklıkla kıyaslanırlar. Arama işleminin fazla olduğu uygulamalar için AVL ağaçları daha katı şekilde dengelendiği için Kırmızı-siyah ağaçtan daha hızlıdır.[3] Kırmızı siyah ağaçlara benzer şekilde AVL ağaçları uzunluğa göre dengelenmiştir.

Dengeleme Faktörü (Balance factor)

[değiştir | kaynağı değiştir]

Bir İkili ağaçda bir düğümün(node) Dengeleme Faktörü X iki çocuk alt ağaçlarının uzunluk farkı olarak tanımlanır.

[4]:459

Bir ikili ağaçın AVL ağacı olarak tanımlanması için değişmez(Invariant)'ın

[5] bütün düğmleri için geçerli olması gerekir.

Bir düğüm X için eğer ise o düğüm sol taraf ağırlıklı(left-heavy), ise sağ taraf ağırlıklı(right-heavy) ve ise dengeli denir.

Denge faktörlerini güncel tutmak için daha önceki denge faktörünü ve uzunluktaki değişimi bilmek yeterlidir, yani mutlak uzunluğu bilmek gerekli değildir. AVL denge bilgisini alışıldık şekilde saklamak için, her düğüm başına iki bit yeterlidir. Ancak, sonraki araştırmalarda bir bitin de yeterli olduğu görülmüştür.

adet düğüme sahip bir AVL ağacının uzunluğu (En fazla katman sayısı olarak sayılmaktadır), aralığındadır[4]:460.
Burada   altın oran ve Bunun sebebi uzunluğundaki bir AVL ağacı en az düğüm içermektedir. Burada , değeri başlangıç değerleri olan Fibonacci dizisi.

  1. ^ Sedgewick, Robert (1983). "Balanced Trees". Algorithms. Addison-Wesley. s. 199. ISBN 0-201-06672-6. 
  2. ^ Adelson-Velsky, Georgy; Landis, Evgenii (1962). "An algorithm for the organization of information". Proceedings of the USSR Academy of Sciences (Rusça). 146: 263-266.  English translation 8 Mart 2021 tarihinde Wayback Machine sitesinde arşivlendi. by Myron J. Ricci in Soviet Mathematics - Doklady, 3.1259-1263, 1962.
  3. ^ Pfaff, Ben (June 2004). "Performance Analysis of BSTs in System Software" (PDF). Stanford University. 15 Eylül 2004 tarihinde kaynağından (PDF) arşivlendi. 
  4. ^ a b Knuth, Donald E. (2000). Sorting and searching (2. ed., 6. printing, newly updated and rev. bas.). Boston [u.a.]: Addison-Wesley. ISBN 0-201-89685-0. 
  5. ^ Rajinikanth. "AVL Tree : Data Structures". btechsmartclass.com. 27 Ekim 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mart 2018.