Title: AVL Aga
1AVL Agaçlari Motivasyon
- Ikili arama agaçlari üzerindeki tartismalarimizi
hatirlarsak - Agacin yüksekligi ekleme sirasina bagimlidir.
- Ö.g., 1, 2, 3, 4, 5, 6, 7 sayilarini bos bir
agaca eklersek - Problem Dengenin bozulmasi Agaç baglantili
liste seklinde bozulur. - Tüm operasyonlarin karmasikligi O(h) oldugunda,
log N lt h lt N-1, Ikili arama agaci
operasyonlarinin en kötü çalisma zamani O(N)
olur. -
- Soru Ekleme sirasina bakmadan BST nin
yüksekligi log(n) olabilir mi? Bir baska deyisle,
BSTyi dengeli bir sekilde tutabilir miyiz.
2Yükseklik Dengeli Agaçlar
- BST operasyonlarini daha kisa sürede
gerçeklestirmek için pek çok BST dengeleme
algoritmasi vardir. - Adelson-Velskii ve Landis (AVL) agaçlari (1962)
- Splay agaçlari (1978)
- B-agaci ve diger çok yönlü arama agaçlari (1972)
- Red-Black agaçlari (1972)
- Ayrica Simetrik Ikili B-Agaçlari(Symmetric Binary
B-Trees) seklinde de bilinir
3AVL Agaçlari Tanim
- Tüm bos agaç AVL agacidir.
- Eger T bos olmayan TL ve TR seklinde sol ve sag
alt agaçlari olan ikili arama agaci ise, T ancak
ve ancak asagidaki sartlari saglarsa AVL agaci
seklinde isimlendirilir. - TL ve TR AVL agaçlari ise
- hL ve hR TL ve TR nin yükseklikleri olmak üzere
hL hR lt 1 olmak zorundadir.
TR
TL
hL1 or hL-1
hL
4AVL Agaçlari
- AVL agaçlari dengeli ikili arama agaçlaridir.
- Bir dügümdeki denge faktörü yükseklik(sol
altagaç) - yükseklik(sag altagaç) -
- AVL agaçlarinda balans faktörü sadece -1, 0, 1
olabilir. - Her bir dügümün sol ve sag alt agaçlarinin
yükseklikleri arasindaki fark en fazla 1 olabilir.
AVL Agaci
5AVL Agaçlari Örnekler
-1
0
6
0
6
6
1
0
4
10
2
-1
1
1
9
4
7
5
0
0
8
1
0
0
1
8
0
5
4
9
0
9
7
0
0
AVL Agaci
AVL Agaci
AVL Agaci Degildir
0
-1
6
6
1
6
2
1
4
7
-2
4
9
2
0
0
4
9
-1
1
8
3
-1
0
7
1
0
0
1
5
0
1
0
8
0
9
AVL Agaci
AVL Agaci Degildir
AVL Agaci Degildir
Kirmizi numaralar balans faktörüdür.
6AVL Agaci Gerçeklestirim
- AVL agacinin gerçeklestirimi için her x dügümünün
yüksekligi kaydedilir.
class AVLDugumu int deger int
yukseklik AVLTDugumu sol AVLDugumu sag
x
key
left
right
height
- xin balans faktörü xin sol alt agacinin
yüksekligi xin sag alt agacinin yüksekligi - AVL agaçlarinda, bf sadece -1, 0, 1
degerlerini alabilir.
7AVL Agaçlari
- N dügümlü bir AVL agacinin yüksekligi daima O(log
N) dir. - Peki nasil?
AVL Agaci
Yükseklik O(logN)
Kirmizi numaralar balans fartörüdür.
8AVL Agaçlari Güzel ve Çirkin
- Güzel
- Arama süresi O(h) O(logN)
- Çirkin
- Ekleme ve silme islemleri agacin dengesiz
olmasina neden olabilir.
Ekle 3
0
1
6
6
-1
1
2
-1
5
7
7
5
0
4
4
1
9
0
9
0
3
0
AVL Tree
Artik AVL agaci degil
9AVL Agacinda Dengenin Saglanmasi
- Problem Ekleme islemi bazi durumlarda ekleme
noktasina göre kök olan bölgelerde balans
faktörün 2 veya -2 olmasina neden olabilir. - Fikir Yeni dügümü ekledikten sonra
- Balans faktörü düzelterek köke dogru çik.
- Eger dügümün balans faktörü 2 veya -2 ise agaç bu
dügüm üzerinde döndürülerek düzeltilir.
1
6
2
-1
5
7
4
1
9
0
3
0
10Denge Saglama Örnek
Ekle 3
Döndürme
0
1
0
6
6
6
2
-1
-1
1
-1
7
7
5
5
4
7
0
4
0
4
1
5
0
0
3
9
9
0
0
9
0
3
0
AVL
AVL
AVL Degil
- Yeni dügümü ekledikten sonra
- Balans faktörü düzelterek köke dogru çik.
- Eger dügümün balans faktörü 2 veya -2 ise agaç bu
dügüm üzerinde döndürülerek düzeltilir.
11AVL Agaci - Ekleme (1)
P Pivot bf 2 veya -2
P
L
R
A
B
C
D
- P dügümünün dengeyi bozan dügüm oldugu
düsünülürse. - P pivot dügüm seklinde isimlendirilir.
- Eklemeden sonra köke dogru çikarken bfnin 2 veya
-2 oldugu ilk dügümdür.
12AVL Agaci - Ekleme (2)
P Pivot bf 2 veya -2
P
L
R
- 4 farkli durum vardir
- Dis Durum (tek döndürme gerektiren)
- Pnin sol alt agacinin soluna eklendiginde (LL
Dengesizligi). - Pnin sag alt agacinin sagina eklendiginde (RR
Dengesizligi) - Iç Durum (2 kez döndürme islemi gerektiren)
- Pnin sol alt agacinin sagina eklendiginde (RL
Dengesizligi) - Pnin sag alt agacinin soluna eklendiginde(LR
Dengesizligi)
13LL Dengesizligi Düzeltme
2
P
0 veya 1
L
R
Ekleme isleminden sonra agaç
- LL Dengesizligi Pnin sol alt agacinin soluna
eklendigimizde (A alt agacinina) - Pnin bfsi 2
- Lnin bfsi 0 veya 1
- Düzeltme P etrafinda saga dogru dönderme.
14LL Dengesizligi Düzeltme Örnegi (1)
1
10
4
1
20
0
3
0
Baslangiçtaki AVL Agaci
Dengesizligin türünün belirlenmesi
Balans faktörü düzelterek köke dogru ilerle
- LL Dengesizligi
- P(4)ün bfsi 2
- L(3)ün bfsi 0 veya 1
15LL Dengesizligi Düzeltme Örnegi (2)
1
10
4
0
20
0
5
3
0
0
Baslangiçtaki AVL Agaci
Dengesizligin türünün belirlenmesi
Balans faktörü düzelterek köke dogru ilerle
- LL Dengesizligi
- P(4)ün bfsi 2
- L(3)ün bfsi 0 veya 1
16RR Dengesizligi Düzeltme
-2
P
L
R
0 veya -1
Ekledikten sonra
- RR Dengesizligi Pnin sag alt agacinin sagina
eklendiginde (D alt agacina eklendiginde) - P ? bf -2
- R ? bf 0 veya -1
- Düzeltme P etrafinda sala dogru dönderme
17RR Dengesizligi Düzeltme Örnegi (1)
10
-1
4
20
-1
0
30
0
Baslangiçtaki AVL Agaci
Dengesizligin türünün belirlenmesi
Balans faktörü düzelterek köke dogru ilerle
- RR Dengesizligi
- P(20) ? bf -2
- R(30) ? bf 0 veya -1
18RR Dengesizligi Düzeltme Örnegi (2)
10
-1
4
20
0
0
15
30
0
0
Baslangiçtaki AVL Agaci
Balans faktörü düzelterek köke dogru ilerle ve
10u pivot olarak belirle
Dengesizligin türünün belirlenmesi
- RR Dengesizligi
- P(10) ? bf -2
- R(20) ? bf 0 veya -1
19LR Dengesizligi Düzeltme
2
P
R
L
-1
LR
Eklemeden sonra agaç
- LR Dengesizligi Pnin sol alt agacinin sagina
eklendiginde (LR agacina) - P ? bf 2
- L ? bf -1
- Düzeltme L P etrafinda 2 kez döndürme
20LR Dengesizligi Düzeltme Örnegi
1
10
4
0
20
0
3
7
0
0
Baslangiçtaki AVL Agaci
2 eklendikten sonra agacin durumu
Balans faktörü düzelterek köke dogru ilerle ve
10u pivot olarak belirle
Dengesizligin türünün belirlenmesi
- LR Dengesizligi
- P(10) ? bf 2
- L(4) ? bf -1
21RL Dengesizligi Düzeltme
-2
P
1
R
L
RL
Eklemeden sonra agaç
- RL Dengesizligi Pnin sag alt agacinin soluna
eklendiginde (RL alt agacina) - P ? bf -2
- R ? bf 1
- Düzeltme R P etrafinda 2 kez döndürme.
22RL Dengesizligi Düzeltme Örnegi
-1
10
4
0
20
0
15
30
0
0
Baslangiçtaki AVL Agaci
17 eklendikten sonra agacin durumu
Balans faktörü düzelterek köke dogru ilerle ve
10u pivot olarak belirle
Dengesizligin türünün belirlenmesi
- RL Dengesizligi
- P(10) ? bf -2
- R(20) ? bf 1
23Silme
- Silme islemi ekleme islemi ile benzerlik
gösterir. - Öncelikle ikili arama agacindaki gibi normal
silme islemi yapilir. - Dügüm silindikten sonra, agaçta köke dogru
ilerleyin ve balans faktörünü güncelleyin. - Eger dengesiz bir dügüm tespit edilirse, uygun
döndürme islemlerini yapin. - Bu islem sirasinda birden fazla döndürme islemi
yapilabilir.
24Silme Örnegi (1)
1
10
4
0
20
0
5
3
0
0
Baslangiçtaki AVL Agaci
Dengesizligin türünün belirlenmesi
Balans faktörü düzelterek köke dogru ilerle
- LL Dengesizligi
- P(10)ün bfsi 2
- L(4)ün bfsi 0 veya 1
25Silme Örnegi (2)
1
10
4
-1
20
0
5
0
Baslangiçtaki AVL Agaci
Balans faktörünü düzelterek köke dogru ilerle
Dengesizligin türünün belirlenmesi
- LR Dengesizligi
- P(10) ? bf 2
- L(4) ? bf -1
26Silme Örnegi (3)
1
10
-1
5
20
1
-1
30
15
7
3
1
0
-1
2
1
4
0
40
8
0
0
1
0
Baslangiçtaki AVL Agaci
Balans faktörü düzelterek köke dogru ilerle
27Silme örnegi (3) - devam
Dengesizligin türünü belirle
Yukardaki AVL agaci midir?
- RR Dengesizligi
- P(20) ? bf -2
- R(30) ? bf 0 veya -1
Balans faktörü düzelterek köke dogru ilerle.
28Silme Örnegi (3) - devam
2
15
5
30
1
0
20
0
7
3
40
1
0
-1
2
1
4
0
8
0
1
0
15in pivot olarak belirlenmesi
Dengesizligin türünü belirle
- LL Dengesizligi
- P(15) ? bf 2
- L(5) ? bf 0 veya 1
29Arama (Bul)
- AVL agaci bir tür Ikili Arama Agaci (BST)
oldugundan arama algoritmasi BST ile aynidir. - O(logN) de çalismasi garantidir.
30AVL Agaçlari - Özet
- AVL Agaçlarinin Avantajlari
- AVL agaci devamli dengeli oldugu için
Arama/Ekleme/Silme islemi O(logN) yapilir. - Düzeltme islemi algoritmalarin karmasikligini
etkilemez. - AVL Agaçlarinin Dezavantajlari
- Balans faktörü için ekstra yer gereklidir.
- Ari dengeli agaçlarda AVL agaçlari kadar iyi
performans verir ayrica bu tür algoritmalarda
balans faktör kullanilmaz - Splay agaçlari
31Splay Agaçlari
- Splay agaçlari ikili arama agaç yapilarindan
birisidir. - Her zaman dengeli degildir.
- Arama ve ekleme islemlerinde dengelemeye
çalisilir böylece gelecek operasyonlar daha hizli
çalisir. - Sezgiseldir.
- Eger X bir kez erisildi ise, bir kez daha
erisilecektir. - X erisildikten sonra "splaying" operasyonu
yapilir. - X köke tasinir.
32Örnek
Kök
15
Bul(12) den sonra
18
6
Splay ana düsünce Döndürme kullanarak 12yi
köke getir.
12
3
9
14
Baslangiçtaki agaç
- Burada agacin dengeli olmasinin yani sira 12 ye
O(1) zamaninda erisilebiliyor. - Aktif (son erisilenler) dügümler köke dogru
tasinirken aktif olmayan dügümler kökten
uzaklastirilir.
33Splay Agaci Terminolojisi
- X kök olmayan bir dügüm olsun. (ailesi olan)
- P dügümü Xin aile dügümü olsun.
- G dügümü Xin ata dügümü olsun.
- G ve X arasindaki yol düsünüldügünde
- Her sola gitme islemine zig islemi
denilmektedir. - Her saga gitme islemine zag islemi
denilmektedir. - Toplam 6 farkli durum olusabilir
G
G
G
G
P
P
P
P
P
P
X
X
X
X
X
X
2. zig-zig
1. zig
3. zig-zag
4. zag-zig
5. zag-zag
6. zag
34Splay Agaç Islemleri
- Xe erisildiginde 6 tane rotasyon isleminden
birisi uygulanir - Tek Dönme (X Pye sahip ama Gye sahip degil)
- zig, zag
- Çift Dönme (X hem P hemde Gye sahip)
- zig-zig, zig-zag
- zag-zig, zag-zag
35Splay Agaçlari Zig Islemi
- Zig islemi AVL agacindaki gibi tek döndürme
islemidir. - Örnegin erisilen elemanin 6 oldugu düsünülürse.
15
6
Zig-Sag
18
6
15
3
12
3
18
12
- Zig-Sag islemi 6yi köke tasir.
- Bir sonraki islemde 6ya O(1) de erisilebilir.
- AVL agacindaki sag dönme islemi ile benzerdir.
36Splay Agaçlari Zig-Zig Islemi
- Zig-Zig islemi ayni türde 2 tane dönme islemi
içerir. - Örnegin erisilen elemanin 3 oldugu düsünülürse.
3
15
6
Zig-Sag
Zig-Sag
6
1
18
6
15
3
4
15
12
3
4
12
18
1
12
18
1
4
- zig-zig islemi ile birlikte 3 köke tasinmis
oldu. - Not Aile - ata arasindaki döndürme önce
yapiliyor.
37Splay Agaçlari Zig-Zag Islemi
- Zig-Zag islemi farkli türde 2 tane dönme islemi
içerir. - Örnegin erisilen elemanin 3 oldugu düsünülürse.
15
Zig-Sag
12
15
Zag-Sol
18
6
6
18
12
15
18
14
3
10
12
3
6
14
3
10
14
10
- zig-zag islemi ile birlikte 3 köke tasinmis
oldu. - AVL agacindaki LR dengesizligini düzeltmek için
kullanilan islemler ile aynidir.(önce sol dönme,
daha sonra sag dönme)
38Splay Agaçlari Zag-Zig Islemi
- Zag-Zig islemi farkli türde 2 tane dönme islemi
içerir. - Örnegin erisilen elemanin 17 oldugu düsünülürse.
15
15
Zag-Sol
17
Zig-Sag
15
20
6
20
6
17
16
6
30
18
20
30
17
16
30
18
18
16
- zag-zig islemi ile birlikte 17 köke tasinmis
oldu. - AVL agacindaki RL dengesizligini düzeltmek için
kullanilan islemler ile aynidir.(önce sag dönme,
daha sonra sol dönme)
39Splay Agaçlari Zag-Zag Islemi
- Zag-Zag islemi ayni türde 2 tane dönme islemi
içerir. - Örnegin erisilen elemanin 30 oldugu düsünülürse.
15
20
Zag-Sol
Zag-Sol
30
15
30
20
6
20
40
15
17
6
40
25
25
17
30
17
6
40
25
- zag-zag islemi ile birlikte 30 köke tasinmis
oldu. - Not Aile - ata arasindaki döndürme önce
yapiliyor.
40Splay Agaçlari Zag Islemi
- Zag islemi AVL agacindaki gibi tek döndürme
islemidir. - Örnegin erisilen elemanin 15 oldugu düsünülürse.
15
6
Zag-Sol
18
6
15
3
12
18
3
12
- Zag-sol islemi 15i köke tasir.
- Bir sonraki islemde 15e O(1) de erisilebilir.
- AVL agacindaki sol dönme islemi ile benzerdir.
41Splay Agaci Örnek 40a Erisildiginde
80
80
40
85
70
70
30
85
70
75
60
80
50
40
75
75
85
50
65
60
45
50
30
65
55
40
55
60
45
65
55
30
45
Zig-zig
Zig-zig
(c)
(a)
(b)
42Splay Agaci Örnek 60a Erisildiginde
40
40
60
30
60
70
30
40
70
70
50
80
30
50
50
80
65
80
45
55
65
85
75
60
45
85
75
45
55
85
75
65
55
Zig-zag
zag
(a)
(b)
(c)
43Diger islemler Sirasinda Splaying
- Splaying sadece Arama isleminden sonra degil
Ekle/Sil gibi deger islemlerden sonra da
uygulanabilir. - Ekle X X yaprak dügüme eklendikten sonra (BST
islemi) Xi köke tasi. - Sil X Xi ara ve köke tasi. Kökte bulunan Xi
sil ve sol alt agaçtaki en büyük elemani köke
tasi. - Bul X Eger X bulunamazsa aramanin sonlandigi
yaprak dügümü köke tasi.
44Splay Agaçlari - Özet
- Splaying islemi ile agaç genel olarak dengede
kaliyor. - Analiz Sonucu N boyutlu bir Splay agaci üzerinde
M tane islemin çalisma süresi O(M log N) dir.
Dolayisiyla tek bir islem için çalisma zamani
O(log N) dir. - Erisilecek elemanlarin derinligi çok büyük olsa
bile, arama islemlerinin süresi bir süre sonra
kisalacaktir. Çünkü her bir arama islemi agacin
dengelenmesini sagliyor.
45Örnek - 1
- 1, 2, , 6 elemanlari sirasi ile bos bir Splay
agacina ekleniyor. - Olusan agaci çizerek gösteriniz.
- 6" ya erisim nasil olur.
- "1" e erisim saglandiktan sonra agacin yapisini
çizerek gösteriniz.
46Örnek - 2
- 1, 2, , 6 elemanlari sirasi ile bos bir AVL
agacina ekleniyor. - Her bir eleman eklendiginde olusan agaçlari
çizerek gösteriniz. - 6" ya erisim nasil olur.