AVL Aga - PowerPoint PPT Presentation

1 / 46
About This Presentation
Title:

AVL Aga

Description:

AVL A a lar : Motivasyon kili arama a a lar zerindeki tart malar m z hat rlarsak A ac n y ksekli i ekleme s ras na ba ml d r. – PowerPoint PPT presentation

Number of Views:114
Avg rating:3.0/5.0
Slides: 47
Provided by: zafer4
Category:
Tags: avl | aga | splay | tree

less

Transcript and Presenter's Notes

Title: AVL Aga


1
AVL 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.

2
Yü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

3
AVL Agaçlari Tanim
  1. Tüm bos agaç AVL agacidir.
  2. 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.
  3. TL ve TR AVL agaçlari ise
  4. hL ve hR TL ve TR nin yükseklikleri olmak üzere
    hL hR lt 1 olmak zorundadir.


TR
TL
hL1 or hL-1
hL
4
AVL 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
5
AVL 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.
6
AVL 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.

7
AVL 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.
8
AVL 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
9
AVL 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
10
Denge 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.

11
AVL 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.

12
AVL 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)

13
LL 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.

14
LL 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

15
LL 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

16
RR 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

17
RR 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

18
RR 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

19
LR 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

20
LR 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

21
RL 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.

22
RL 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

23
Silme
  • 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.

24
Silme Ö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

25
Silme Ö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

26
Silme Ö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
27
Silme ö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.
28
Silme Ö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

29
Arama (Bul)
  • AVL agaci bir tür Ikili Arama Agaci (BST)
    oldugundan arama algoritmasi BST ile aynidir.
  • O(logN) de çalismasi garantidir.

30
AVL 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

31
Splay 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.

33
Splay 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
34
Splay 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

35
Splay 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.

36
Splay 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.

37
Splay 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)

38
Splay 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)

39
Splay 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.

40
Splay 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.

41
Splay 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)
42
Splay 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)
43
Diger 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.

44
Splay 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.
Write a Comment
User Comments (0)
About PowerShow.com