Upload
wolfe
View
70
Download
0
Embed Size (px)
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
Citation preview
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
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
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
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üş
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
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üş
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üş
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.
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
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
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
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üş
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üş
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üş
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üş
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
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.
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.
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.