AVL Ağaçları

Download Report

Transcript AVL Ağaçları

AVL-Ağaçları (Trees)
AVL Trees / Slide 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)

AVL Trees / Slide 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.
AVL Trees / Slide 4
AVL Ağaçlar
ağaç bir ikili ağaçtır ve aşağıdaki şartı
sağlar
 AVL

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 Trees / Slide 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
N  N
N
h
h 1
h2
1
 2 N h2  1
 2 N h2
N h  2i N h  2



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.
AVL Trees / Slide 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
y
C
A
B
B
A
Dönüşten önce
Dönüşten sonra
C
AVL Trees / Slide 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.
AVL Trees / Slide 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.

AVL Trees / Slide 9
Ekleme
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.
 X,

left(x) in yüksekliği h+2 (yani right(x) in yüksekliği h)
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üş
left(left(x))

right(x) yüksekliği h+2 (yani left(x) in yüksekliği h)
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üş
right(right(x))
AVL Trees / Slide 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.
AVL Trees / Slide 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.
AVL Trees / Slide 12
5
4
1
4
A
0.8
Ekle 0.8
3
5
1
4
0.8
8
Dönüşten sonra
8
y
3
8
3
1
x
5
AVL Tree
B
C
AVL Trees / Slide 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
AVL Trees / Slide 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
AVL Trees / Slide 15
5
5
AVL Tree
y
8
3
A
4
1
C
8
3
4
1
B
3.5
ekle 3.5
4
5
3
1
x
3.5
8
Dönüşten sonra
z
AVL Trees / Slide 16
Genişletilmiş örnek
ekle 3,2,1,4,5,6,7, 16,15,14
Tek dönüş
3
3
2
3
Şekil 1
2
2
1
Şekil 4
3
Şekil 2
1
2
Şekil 3
1
2
1
3
3
Şekil 5
Şekil 6
4
Tek dönüş
4
5
AVL Trees / Slide 17
2
2
Tek dönüş
1
1
4
4
3
5
3
5
Şekil 8
Şekil 7
6
4
2
1
4
Tek dönüş
2
5
6
3
6
3
1
4
5
Şekil 10
Şekil 9
2
1
6
7
3
5
Şekil 11
7
AVL Trees / Slide 18
4
2
6
7
3
1
16
5
Şekil 12
4
Çift dönüş
2
4
6
2
1
7
3
16
5
Şekil 13
6
1
3
5
15
16
15
Şekil 14
7
AVL Trees / Slide 19
4
2
1
4
Çift dönüş
2
6
3
5
15
1
7
3
6
15
16
Şekil 15
7
14
5
14
Şekil 16
16
AVL Trees / Slide 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.

AVL Trees / Slide 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.
AVL Trees / Slide 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üş
AVL Trees / Slide 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
AVL Trees / Slide 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.