You are on page 1of 46

AVL Aalar: Motivasyon

kili arama aalar zerindeki tartmalarmz


hatrlarsak
Aacn ykseklii ekleme srasna bamldr.
.g., 1, 2, 3, 4, 5, 6, 7 saylarn bo bir aaca eklersek
Problem: Dengenin bozulmas Aa balantl liste seklinde
bozulur.
Tm operasyonlarn karmakl O(h) olduunda,
log N <= h <= N-1, kili arama aac operasyonlarnn
en kt alma zaman O(N) olur.

Soru: Ekleme srasna bakmadan BST nin


ykseklii log(n) olabilir mi? Bir baka deyile,
BSTyi dengeli bir ekilde tutabilir miyiz.

1
Ykseklik Dengeli Aalar
BST operasyonlarn daha ksa srede
gerekletirmek iin pek ok BST dengeleme
algoritmas vardr.
Adelson-Velskii ve Landis (AVL) aalar (1962)
Splay aalar (1978)
B-aac ve dier ok ynl arama aalar (1972)
Red-Black aalar (1972)
Ayrca Simetrik kili B-Aalar(Symmetric Binary B-Trees)
eklinde de bilinir

2
AVL Aalar: Tanm
1. Tm bo aa AVL aacdr.
2. Eer T bo olmayan TL ve TR eklinde sol ve
sa alt aalar olan ikili arama aac ise, T
ancak ve ancak aadaki artlar salarsa AVL
aac eklinde isimlendirilir.
1. TL ve TR AVL aalar ise
2. hL ve hR TL ve TR nin ykseklikleri olmak zere |
hL hR| <= 1 olmak zorundadr.

hL+1 or hL-1
hL
TL TR 3
AVL Aalar
AVL aalar dengeli ikili arama
aalardr. AVL Aac

0
6
Bir dmdeki denge faktr =
ykseklik(sol altaa) - 1 -1
7
ykseklik(sa altaa) 4

0 1 0
9
AVL aalarnda balans faktr
sadece -1, 0, 1 olabilir. Krmz numaralar balans
Her bir dmn sol ve sa alt fartrdr.

aalarnn ykseklikleri arasndaki


fark en fazla 1 olabilir.

4
AVL Aalar: rnekler
6 0 6 -1 6 0
1 4 10 2 0
1 5 7 -1 4 9 1

0 4 0 1 8 0 0 1 5 8 0
9 0
0 7 9 0
AVL Aac AVL Aac
AVL Aac Deildir

6 -1 6 0
6 1
1 2 4 7 -2
4 9 2 0 4 9 0
0 1 7 -1 1 3 8 -1
0 1 5 0
8 0 0 1 9 0

AVL Aac Deildir AVL Aac AVL Aac Deildir

Krmz numaralar balans faktrdr.


5
AVL Aac: Gerekletirim
AVL aacnn gerekletirimi iin her x
dmnn ykseklii kaydedilir.
class AVLDugumu{
x
int deger;
key int yukseklik;
left right AVLTDugumu sol;
height AVLDugumu sag;
}

xin balans faktr = xin sol alt aacnn


ykseklii xin sa alt aacnn ykseklii
AVL aalarnda, bf sadece {-1, 0, 1}
deerlerini alabilir. 6
AVL Aalar
N dml bir AVL aacnn
ykseklii daima O(log N) dir. AVL Aac

Ykseklik = O(logN)
Peki nasl? 6
0

1 -1
5 7

0 4 0
9

Krmz numaralar balans


fartrdr.

7
AVL Aalar: Gzel ve irkin
Gzel:
Arama sresi O(h) = O(logN)
irkin
Ekleme ve silme ilemleri aacn dengesiz olmasna neden
olabilir.

0 Ekle 3
6 6 1

1 -1
5 7 2 5 7
-1

0 4 0 1 4
9 9 0

0 3
AVL Tree
Artk AVL aac deil

8
AVL Aacnda Dengenin Salanmas
Problem: Ekleme ilemi baz durumlarda ekleme
noktasna gre kk olan blgelerde balans faktrn 2
veya -2 olmasna neden olabilir.

Fikir: Yeni dm ekledikten sonra


1. Balans faktr dzelterek kke doru k.
2. Eer dmn balans faktr 2 veya -2 ise aa bu dm
zerinde dndrlerek dzeltilir.
6 1

2 -1
5 7

1 4 9 0

0 3
9
Denge Salama: rnek
Ekle 3 Dndrme
0
6 6 1 6 0

1
5 7
-1 2 5 7
-1
0 4 7
-1

0 4 9 0 1 4 9 0 0 3 5 0 9 0

AVL 0 3
AVL
AVL Deil

Yeni dm ekledikten sonra


1. Balans faktr dzelterek kke doru k.
2. Eer dmn balans faktr 2 veya -2 ise aa bu dm
zerinde dndrlerek dzeltilir.

10
AVL Aac - Ekleme (1)
P Pivot: bf 2 veya -2
P

L R

A B C D

P dmnn dengeyi bozan dm olduu


dnlrse.
P pivot dm eklinde isimlendirilir.
Eklemeden sonra kke doru karken bfnin 2 veya
-2 olduu ilk dmdr.
11
AVL Aac - Ekleme (2)

P P Pivot: bf 2 veya -2

L R

A B C D

4 farkl durum vardr:


D Durum (tek dndrme gerektiren) :
1. Pnin sol alt aacnn soluna eklendiinde (LL Dengesizlii).
2. Pnin sa alt aacnn sana eklendiinde (RR Dengesizlii)
Durum (2 kez dndrme ilemi gerektiren) :
3. Pnin sol alt aacnn sana eklendiinde (RL Dengesizlii)
4. Pnin sa alt aacnn soluna eklendiinde(LR Dengesizlii)
12
LL Dengesizlii & Dzeltme
Dndrme
L
2 P
P
0 veya 1L R
A
R
A B C B
D

Ekleme ileminden sonra aa C D


LL Dzeltmesinden sonra aa

LL Dengesizlii: Pnin sol alt aacnn soluna


eklendiimizde (A alt aacnna)
Pnin bfsi 2
Lnin bfsi 0 veya 1
Dzeltme: P etrafnda saa doru dnderme. 13
LL Dengesizlii Dzeltme rnei (1)

1 Ekle(2) 1 1 Dndr 1
10 10 10 10

1 4 20 0 1 4 20 0 2 4 0 20 0 0 3 20 0

0 3 0 3 1 3 0 2 4 0
Balangtaki
0 2 0 2 LL Dzeltmesi
AVL Aac Pivotun yapldktan sonra
2 eklendikten sonra belirlenmesi AVL aac
aacn durumu
Dengesizliin trnn
Balans faktr
belirlenmesi
dzelterek kke
doru ilerle LL Dengesizlii:
P(4)n bfsi 2
L(3)n bfsi 0 veya 1 14
LL Dengesizlii Dzeltme rnei (2)

1
10
Ekle(2)
1 10
2 10 Dndr
0 4

0 4 0 4 1 4 20 0
20 0 20 0
1 3 10 0

0 3 5 0 0 3 1 3 5 0
5 0 0 2 5 0 20 0
Balangtaki 0 2
AVL Aac 0 2
Pivotun LL Dzeltmesi
2 eklendikten sonra belirlenmesi yapldktan sonra
aacn durumu AVL aac
Dengesizliin
Balans faktr trnn
dzelterek kke belirlenmesi
doru ilerle
LL Dengesizlii:
P(4)n bfsi 2
15
L(3)n bfsi 0 veya 1
RR Dengesizlii & Dzeltme
Dndr R
P -2
P
L R 0 veya -1 D
L
C
A B C D

Ekledikten sonra A B

RR Dzeltmesi yapldktan sonra

RR Dengesizlii: Pnin sa alt aacnn sana


eklendiinde (D alt aacna eklendiinde)
P bf = -2
R bf = 0 veya -1
Dzeltme: P etrafnda sala doru dnderme 16
RR Dengesizlii Dzeltme rnei (1)
Ekle(40) Dndr
10 -1 10 -1 10 -1 10 -1

0 4 20 -1 0 4 20
-1 0 4 20 -2 0 4 30 0

30 0 30 0 30 -1 0 20 40 0
Balangtaki
AVL Aac 40 0 40 0 RR Dzeltmesi
yapldktan sonra
40 eklendikten sonra Pivotun AVL aac
aacn durumu belirlenmesi

Balans faktr Dengesizliin trnn


dzelterek kke belirlenmesi
doru ilerle
RR Dengesizlii:
P(20) bf = -2
R(30) bf = 0 veya -1
RR Dengesizlii Dzeltme rnei (2)

10 -1 Ekle(40) 10 -2 Dndr 20 0

0 4 20 0 0 4 20 -1 0 10 30 -1

0 15 30 0 0 15 30 -1 0 4 15 0 40 0

Balangtaki
40 0
AVL Aac
40 eklendikten sonra RR Dzeltmesi
aacn durumu yapldktan sonra
AVL aac
Balans faktr Dengesizliin trnn
dzelterek kke doru belirlenmesi
ilerle ve 10u pivot
olarak belirle RR Dengesizlii:
P(10) bf = -2
R(20) bf = 0 veya -1
LR Dengesizlii & Dzeltme

1. Dndrme 2. Dndrme
2 P P LR

-1 L 2 R LR 2 R L P
1 L
LR R
A C D B2 C D A
B1 B2
A
B1 B2 B1
C D
Eklemeden sonra aa 1. Dndrmeden sonra aa LR Dzeltmesinden sonra

LR Dengesizlii: Pnin sol alt aacnn sana


eklendiinde (LR aacna)
P bf = 2
L bf = -1
Dzeltme: L & P etrafnda 2 kez dndrme
LR Dengesizlii Dzeltme rnei
2
1 Ekle(5) Dndr
10 10 0 7

2
0 4 20 0 -1 4 20 0 0 4 10 -1
1
0 3 7 0 0 3 0 3 5 0 20 0
7 1

Balangtaki 5 0 LR Dzeltmesinden sonra


AVL Aac aacn durumu
2 eklendikten sonra
aacn durumu
Balans faktr Dengesizliin trnn
dzelterek kke doru belirlenmesi
ilerle ve 10u pivot
olarak belirle LR Dengesizlii:
P(10) bf = 2 20
L(4) bf = -1
RL Dengesizlii & Dzeltme
1. Dndrme 2. Dndrme RL
P -2 P -2
2 2 P R
L R 1 L RL

R L
1
RL
C1 C1 C2 D
A B D A B
A B
C1 C2 C2 D
Eklemeden sonra aa 1. Dndrmeden sonra RL Dzeltmesinden sonra

RL Dengesizlii: Pnin sa alt aacnn soluna


eklendiinde (RL alt aacna)
P bf = -2
R bf = 1
Dzeltme: R & P etrafnda 2 kez dndrme.
RL Dengesizlii Dzeltme rnei

-1 10 Ekle(17) -2 10 Dndr 15 0
2
0 4 20 1 1 10
0 4 20 0 20 1
1
0 15 -1 15 30 0 0 4 0 17 30 0
30 0

Balangtaki 17 0
RL Dzeltmesi
AVL Aac
17 eklendikten sonra yapldktan sonra
aacn durumu AVL aac
Balans faktr
dzelterek kke Dengesizliin trnn
doru ilerle ve 10u belirlenmesi
pivot olarak belirle
RL Dengesizlii:
P(10) bf = -2
R(20) bf = 1 22
Silme
Silme ilemi ekleme ilemi ile benzerlik gsterir.

ncelikle ikili arama aacndaki gibi normal silme


ilemi yaplr.

Dm silindikten sonra, aata kke doru


ilerleyin ve balans faktrn gncelleyin.
Eer dengesiz bir dm tespit edilirse, uygun
dndrme ilemlerini yapn.
Bu ilem srasnda birden fazla dndrme ilemi
yaplabilir.
23
Silme rnei (1)

Sil(20)
1 1 Dndr
10 10 2 10 4 -1

0 4 20 0 0 4 0 4 10 1
0 3

0 3 5 0 0 3 5 0 0 3 5 0 0 5

Balangtaki 20 silindikten sonra 10un pivot olarak LL Dzeltmesinden


AVL Aac Aacn durumu belirlenmesi Sonra AVL Aac

Dengesizliin
Balans faktr trnn
dzelterek kke belirlenmesi
doru ilerle
LL Dengesizlii:
P(10)n bfsi 2
L(4)n bfsi 0 veya 1
Silme rnei (2)

Sil(20)
1 1 Dndr
10 10 2 10 5 0

-1 4 2
20 0 -1 4 -1 4 0 4 10 0
1
5 0 LR Dzeltmesinden
5 0 5 0
sonra AVL Aac
Balangtaki 20 silindikten sonra 10un pivot olarak
AVL Aac Aacn durumu belirlenmesi

Balans faktrn Dengesizliin


dzelterek kke trnn belirlenmesi
doru ilerle
LR Dengesizlii:
P(10) bf = 2
L(4) bf = -1 25
Silme rnei (3)
1
15
1
10 Sil(10)
-1
-1 1 5 20
1 5 20
1 3 -1 7 30 -1
1 3 -1 7 0 15 30 -1
1 2 0 4
1 2 0 4
0 8 0 40
0 8 0 40
0 1
0 1 10 silindikten sonra
Balangtaki AVL Aac
10 ve 15(sa alt aataki
en kk eleman) yer
deitirdi ve 15 silindi.

Balans faktr
dzelterek kke
doru ilerle 26
Silme rnei (3) - devam
Dndr 1
1
15 15

-2 1 5 30 0
1 5 20

1 3 -1 7 30 -1 1 3 -1 7 20 0 40 0

1 2 1 2 0 4 0 8
0 4 0 8 0 40

0 1 0 1
20nin pivot olarak seilmesi RR Dengesizlii
dzeltildikten sonra
Dengesizliin
trn belirle Yukardaki AVL
aac mdr?
RR Dengesizlii: Balans faktr
P(20) bf = -2 dzelterek kke
R(30) bf = 0 veya -1 doru ilerle. 27
Silme rnei (3) - devam
2 15 Dndr 0 5

1 5 30 0 1 3 15 0

1 3 -1 7 20 0 40 0 1 2 0 4 7 -1 30 0

1 2 0 4 0 8 0 1
0 8 20 0 40 0

0 1 Dzeltilmi AVL aac


15in pivot olarak belirlenmesi

Dengesizliin
trn belirle

LL Dengesizlii:
P(15) bf = 2
L(5) bf = 0 veya 1 28
Arama (Bul)
AVL aac bir tr kili Arama Aac (BST)
olduundan arama algoritmas BST ile ayndr.
O(logN) de almas garantidir.

29
AVL Aalar - zet
AVL Aalarnn Avantajlar
1. AVL aac devaml dengeli olduu iin
Arama/Ekleme/Silme ilemi O(logN) yaplr.
2. Dzeltme ilemi algoritmalarn karmakln
etkilemez.

AVL Aalarnn Dezavantajlar:


1. Balans faktr iin ekstra yer gereklidir.
2. Ar dengeli aalarda AVL aalar kadar iyi
performans verir ayrca bu tr algoritmalarda balans
faktr kullanlmaz
Splay aalar
30
Splay Aalar
Splay aalar ikili arama aa yaplarndan
birisidir.
Her zaman dengeli deildir.
Arama ve ekleme ilemlerinde dengelemeye allr
bylece gelecek operasyonlar daha hzl alr.

Sezgiseldir.
Eer X bir kez eriildi ise, bir kez daha eriilecektir.
X eriildikten sonra "splaying" operasyonu yaplr.
X kke tanr.

31
rnek
Kk Kk

15 Bul(12) den sonra 12


2
6 18 Splay ana dnce: 6 15
Dndrme kullanarak
1
3 12 12yi kke getir. 3 9 14 18

9 14
12 arandktan sonra
Balangtaki aa

Burada aacn dengeli olmasnn yan sra 12 ye O(1)


zamannda eriilebiliyor.
Aktif (son eriilenler) dmler kke doru tanrken
aktif olmayan dmler kkten uzaklatrlr.

32
Splay Aac Terminolojisi
X kk olmayan bir dm olsun. (ailesi olan)
P dm Xin aile dm olsun.
G dm Xin ata dm olsun.
G ve X arasndaki yol dnldnde:
Her sola gitme ilemine zig ilemi denilmektedir.
Her saa gitme ilemine zag ilemi denilmektedir.
Toplam 6 farkl durum oluabilir:
G G G G

P P P P P P

X X X X X X
1. zig 2. zig-zig 3. zig-zag 4. zag-zig 5. zag-zag 6. zag
33
Splay Aa lemleri
Xe eriildiinde 6 tane rotasyon ileminden
birisi uygulanr:
Tek Dnme (X Pye sahip ama Gye sahip deil)
zig, zag

ift Dnme (X hem P hemde Gye sahip)


zig-zig, zig-zag
zag-zig, zag-zag

34
Splay Aalar: Zig lemi
Zig ilemi AVL aacndaki gibi tek dndrme ilemidir.
rnein eriilen elemann 6 olduu dnlrse.

15
6
Zig-Sa
6 18 15
3

3 12 12 18

Zig-Sa ilemi 6y kke tar.


Bir sonraki ilemde 6ya O(1) de eriilebilir.
AVL aacndaki sa dnme ilemi ile benzerdir.

35
Splay Aalar: Zig-Zig lemi
Zig-Zig ilemi ayn trde 2 tane dnme ilemi ierir.
rnein eriilen elemann 3 olduu dnlrse.

15 6 3
Zig-Sa Zig-Sa

18 1 6
6 3 15
4 15
3 12 1 4 12 18

1 4 12 18

zig-zig ilemi ile birlikte 3 kke tanm oldu.


Not: Aile - ata arasndaki dndrme nce yaplyor.
36
Splay Aalar: Zig-Zag lemi
Zig-Zag ilemi farkl trde 2 tane dnme ilemi ierir.
rnein eriilen elemann 3 olduu dnlrse.

15 Zag-Sol 15 Zig-Sa 12

6 18 12 18 6 15

3 10 14 18
3 12 6 14

10 14 3 10

zig-zag ilemi ile birlikte 3 kke tanm oldu.


AVL aacndaki LR dengesizliini dzeltmek iin kullanlan
ilemler ile ayndr.(nce sol dnme, daha sonra sa dnme)
37
Splay Aalar: Zag-Zig lemi
Zag-Zig ilemi farkl trde 2 tane dnme ilemi ierir.
rnein eriilen elemann 17 olduu dnlrse.

15 15 Zag-Sol 17
Zig-Sa

6 20 6 15 20
17
6 16 18 30
17 30 16 20

18 30
16 18

zag-zig ilemi ile birlikte 17 kke tanm oldu.


AVL aacndaki RL dengesizliini dzeltmek iin kullanlan
ilemler ile ayndr.(nce sa dnme, daha sonra sol dnme)
38
Splay Aalar: Zag-Zag lemi
Zag-Zag ilemi ayn trde 2 tane dnme ilemi ierir.
rnein eriilen elemann 30 olduu dnlrse.

15 Zag-Sol 20 Zag-Sol 30
15 30
6 20 20 40
6 17 25 40 15 25
17 30

6 17
25 40

zag-zag ilemi ile birlikte 30 kke tanm oldu.


Not: Aile - ata arasndaki dndrme nce yaplyor.
39
Splay Aalar: Zag lemi
Zag ilemi AVL aacndaki gibi tek dndrme ilemidir.
rnein eriilen elemann 15 olduu dnlrse.

6 15

Zag-Sol
3 15 6 18

12 18 3 12

Zag-sol ilemi 15i kke tar.


Bir sonraki ilemde 15e O(1) de eriilebilir.
AVL aacndaki sol dnme ilemi ile benzerdir.

40
Splay Aac rnek: 40a Eriildiinde

80
80 40
70 85
70 85 30 70

60 75 80
50
40 75
50 65 45 60 75 85
30 50
55 65
40 55 45 60

55 65
30 45 Zig-zig
Zig-zig
(a) (b) (c)

41
Splay Aac rnek: 60a Eriildiinde

40 40
60

30 70 30 60 40 70

50 70
50 80 30 50 65 80

45 60 75 85 45 55 65 80
45 55 75 85

55 65 75 85

Zig-zag
zag
(a) (b) (c)

42
Dier ilemler Srasnda Splaying
Splaying sadece Arama ileminden sonra deil
Ekle/Sil gibi deer ilemlerden sonra da uygulanabilir.

Ekle X: X yaprak dme eklendikten sonra (BST


ilemi) Xi kke ta.

Sil X: Xi ara ve kke ta. Kkte bulunan Xi sil ve sol


alt aataki en byk eleman kke ta.

Bul X: Eer X bulunamazsa aramann sonland yaprak


dm kke ta.

43
Splay Aalar - zet
Splaying ilemi ile aa genel olarak dengede kalyor.

Analiz Sonucu: N boyutlu bir Splay aac zerinde M


tane ilemin alma sresi O(M log N) dir.
Dolaysyla tek bir ilem iin alma zaman O(log N)
dir.

Eriilecek elemanlarn derinlii ok byk olsa bile,


arama ilemlerinin sresi bir sre sonra ksalacaktr.
nk her bir arama ilemi aacn dengelenmesini
salyor.

44
rnek - 1
1, 2, , 6 elemanlar sras ile bo bir Splay
aacna ekleniyor.
Oluan aac izerek gsteriniz.
6" ya eriim nasl olur.
"1" e eriim salandktan sonra aacn yapsn
izerek gsteriniz.

45
rnek - 2
1, 2, , 6 elemanlar sras ile bo bir AVL
aacna ekleniyor.
Her bir eleman eklendiinde oluan aalar
izerek gsteriniz.
6" ya eriim nasl olur.

46

You might also like