AVL- Ağaçları (Trees)

24
AVL-Ağaçları (Trees)

description

AVL- Ağaçları (Trees). 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. - PowerPoint PPT Presentation

Transcript of AVL- Ağaçları (Trees)

Page 1: AVL- Ağaçları (Trees)

AVL-Ağaçları (Trees)

Page 2: 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)

Page 3: AVL- Ağaçları (Trees)

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.

Page 4: AVL- Ağaçları (Trees)

AVL Trees / Slide 4

AVL Ağaçlar

AVL ağaç bir ikili ağaçtır ve aşağıdaki şartı sağlar 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

Page 5: AVL- Ağaçları (Trees)

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

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.

2

2

21

2

12

1

h

h

hhh

N

N

NNN

22 hi

h NN

Page 6: AVL- Ağaçları (Trees)

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.

x

y

AB

C

y

x

AB C

Dönüşten önce Dönüşten sonra

Örnek: Tek dönüş

Page 7: AVL- Ağaçları (Trees)

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.

Page 8: AVL- Ağaçları (Trees)

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.

Page 9: AVL- Ağaçları (Trees)

AVL Trees / Slide 9

Ekleme

X, 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.

left(x) in yüksekliği h+2 (yani right(x) in yüksekliği h) left(left(x)) 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üş

right(x) yüksekliği h+2 (yani left(x) in yüksekliği h) right(right(x)) 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üş

Page 10: AVL- Ağaçları (Trees)

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.

Page 11: AVL- Ağaçları (Trees)

AVL Trees / Slide 11

Tek dönüş

Tek dönüş O(1) kadar zaman alır.

Ekleme O(log N) kadar zaman alır.

C altağacına yeni bir anahtar eklendi. x ‘ de AVL ağaç özelliği ihlal edildi.

Page 12: AVL- Ağaçları (Trees)

AVL Trees / Slide 12

5

3

1 4

Ekle 0.8

AVL Tree

8

0.8

5

3

1 4

8

x

y

A

B

C

3

51

0.84 8

Dönüşten sonra

Page 13: AVL- Ağaçları (Trees)

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

Page 14: AVL- Ağaçları (Trees)

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

Page 15: AVL- Ağaçları (Trees)

AVL Trees / Slide 15

5

3

1 4

ekle 3.5

AVL Tree

8

3.5

5

3

1 4

8

4

5

1

3

3.5 Dönüşten sonra

x

y

A z

B

C

8

Page 16: AVL- Ağaçları (Trees)

AVL Trees / Slide 16

Genişletilmiş örnek

ekle 3,2,1,4,5,6,7, 16,15,14

3

Şekil 1

3

2

Şekil 2

3

2

1

Şekil 3

2

1 3Şekil 4

2

1 3

4Şekil 5

2

1 3

4

5

Şekil 6

Tek dönüş

Tek dönüş

Page 17: AVL- Ağaçları (Trees)

AVL Trees / Slide 17

2

1 4

53

Şekil 7 6

2

1 4

53

Şekil 8

4

2 5

61 3

Şekil 9

4

2 5

61 3

7Şekil 10

4

2 6

71 3

5 Şekil 11

Tek dönüş

Tek dönüş

Page 18: AVL- Ağaçları (Trees)

AVL Trees / Slide 18

4

2 6

71 3

5 16

Şekil 12

4

2 6

71 3

5 16

15Şekil 13

4

2 6

151 3 5

167Şekil 14

Çift dönüş

Page 19: AVL- Ağaçları (Trees)

AVL Trees / Slide 19

5

4

2 7

151 3 6

1614

Şekil 16

4

2 6

151 3 5

167

14

Şekil 15

Çift dönüş

Page 20: AVL- Ağaçları (Trees)

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.

Page 21: AVL- Ağaçları (Trees)

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.

Page 22: AVL- Ağaçları (Trees)

AVL Trees / Slide 22

Silme işlemindeki tek dönüşler

Sol çocuk üzerinden dönüş

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.

Page 23: AVL- Ağaçları (Trees)

AVL Trees / Slide 23

Silme işlemindeki tek dönüşler

rotate with right child

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.

Page 24: AVL- Ağaçları (Trees)

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.