AVL ağacı

testwiki sitesinden
10.01, 8 Mayıs 2024 tarihinde imported>SpdyBot tarafından oluşturulmuş 2609 numaralı sürüm (Kaynakça: Bot: kaynak dz. (hata bildir))
(fark) ← Önceki sürüm | Güncel sürüm (fark) | Sonraki sürüm → (fark)
Gezinti kısmına atla Arama kısmına atla
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 Şablon:Math zaman sürer, burada n 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 O(logn) 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.

Tanım

Dengeleme Faktörü (Balance factor)

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.

BF(X):=Uzunluk(SağAltAğaç(X))Uzunluk(SolAltAğaç(X))[4]Şablon:Rp

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

BF(X){1,0,1}[5] bütün düğmleri için geçerli olması gerekir.

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

Özellikleri

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.

n adet düğüme sahip bir AVL ağacının uzunluğu h (En fazla katman sayısı olarak sayılmaktadır), log2(n+1)h<logφ(n+2)+b aralığındadır[4]Şablon:Rp.
Burada φ:=1+521.618  altın oran ve b:=log252log2φ20.3277. Bunun sebebi h uzunluğundaki bir AVL ağacı en az Fh+21 düğüm içermektedir. Burada {Fn}n, değeri başlangıç değerleri F1=F2=1 olan Fibonacci dizisi.

Kaynakça

Şablon:Kaynakça