29
DOSYA ORGANİZASYONU ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Ağaç Yapıları

Ağaç Yapıları

  • Upload
    leliem

  • View
    233

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Ağaç Yapıları

DOSYA ORGANİZASYONU

ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Ağaç Yapıları

Page 2: Ağaç Yapıları

Sunum planı

Genel kavramlar

İkili ağaç

İkili arama ağacı

AVL Tree

B-Tree

Page 3: Ağaç Yapıları

Genel Kavramlar

Bir ağaç yapısı örneği

Page 4: Ağaç Yapıları

Genel Kavramlar

Düğüm (node) : Ağacın her bir elemanına düğüm adı verilir. (A, B, C)

Kök (root) : En üst seviyedeki tek düğümdür. (A bilgisini içeren düğüm.)

Çocuk (child) : Bir düğümün sol ve sağ bağı aracılığı ile bağlandığı düğümler o düğümün çocuklarıdır. (B ve C, A'nın çocuklarıdır.)

Aile (parent) : Bir düğüm, sağ ve sol bağları ile bağlandığı düğümlerin ailesidir. (A düğümü, B ve C düğümlerinin ailesidir.)

Bir düğümün düzey (level) veya derinliği (depth) : Bir düğümün kök düğümden olan uzaklığıdır. (D düğümünün düzeyi veya derinliği 2'dir.)

Page 5: Ağaç Yapıları

Genel Kavramlar

Ağacın derinliği (depth of tree) : En derindeki yaprağın derinliği veya yüksekliği

(Verilen ağacın derinliği 3'tür. )

Yaprak (leaf) : Herhangi bir çocuğu bulunmayan düğümlere yaprak adı verilir. (D,G,H,I)

Kardeş (sibling, brother) : Aynı aileye sahip düğümlerdir.

(B ile C kardeştir. D ile E kardeştir. H ile I kardeştir.)

Page 6: Ağaç Yapıları

İkili Ağaç (Binary Tree)

Düğümlerinin en fazla 2 çocuğa sahip olduğu ağaçlardır.

a

b c

d e

g h i

l

f

j k

Page 7: Ağaç Yapıları

İkili ağaç üzerinde dolaşma (traverse)

Dolaşma (traverse), ağaç üzerindeki herhangi bir düğüme erişmek için ağaç üzerinde gezmedir.

1. Kökten başlayarak dolaşma (Preorder (depth-first order) traverse)

I. Köke uğra

II. Sol alt ağacı preorder olarak dolaş.

III. Sağ alt ağacı preorder olarak dolaş.

A

B C

D E F G

A B D E C F G

Page 8: Ağaç Yapıları

İkili ağaç üzerinde dolaşma (traverse)

2. Sıralı Dolaşma (Inorder (Symmetric order) Traverse)

I. Sol alt ağacı inorder'a göre dolaş

II. Köke uğra

III. Sağ alt ağacı inorder'a göre dolaş.

3. Sondan başlayarak dolaşma (Postorder Traverse)

I. Sol alt ağacı postorder'a göre dolaş

II. Sağ alt ağacı postorder'a göre dolaş.

III. Köke uğra

A

B C

D E F G

A

B C

D E F G

D B E A F C G D E B F G C A

Page 9: Ağaç Yapıları

İkili arama ağaçları (Binary search tree)

İkili ağaçların özel bir halidir.

İkili arama ağaçları, her bir düğümün solundaki tüm düğümler kendisinden küçük, sağındakiler de kendisinden büyük olacak şekilde oluşturulurlar.

Page 10: Ağaç Yapıları

İkili arama ağaçlarında arama

9 anahtarının aranması:

I. 9 ile kökteki 15 karşılaştır. 9<15 olduğundan sol alt ağaca git.

II. 9 ile 6 karşılaştır. 9>6 olduğundan sağ alt ağaca git.

III. 9 ile 7 karşılaştır. 9>7 olduğundan sağ alt ağaca git.

IV. 9 ile 13 karşılaştır. 9<13 olduğundan sol alt ağaca git.

V. 9=9 dur. Aranan anahtar bulundu!

Page 11: Ağaç Yapıları

İkili arama ağaçları

İndeks sıralı dosyalarda ağaç yapısı indeks amacıyla kullanılırken, kayıtlar yapraklarda bulunur.

İkili arama ağaçlarında kayıtlar hem yapraklarda hem düğümlerde tutulurlar.

İndeks

Veri İndeks ve veri

İndeks sıralı dosya İkili arama ağacı

Page 12: Ağaç Yapıları

AVL Tree

AVL ağacı, denge şartı olan ikili arama ağacıdır. Height balanced tree olarak da adlandırılırlar.

Herhangi bir ikili arama ağacının AVL ağacı olması için bütün düğümlerin çocukları arasındaki farkın en fazla bir olması gerekir.

Page 13: Ağaç Yapıları

Dengeli Ağaç (Balanced Tree)

Bütün düğümler için sol alt ağacın yüksekliği ile sağ alt ağacın yüksekliği arasında en fazla bir fark varsa bu dengeli ağaç olarak adlandırılır.

Denge faktörü (balance vector)önemlidir.

Denge faktörü = yükseklik (sağ altağaç) – yükseklik (sol altağaç)

Denge faktörü -1, 0 ve 1 değerini alabilir.

Page 14: Ağaç Yapıları

Dengeli Ağaç (Balanced Tree)

denge faktörü=2-3=-1 denge faktörü=1-3=-2

Dengeli bir ağaçtır. Dengeli bir ağaç değildir.

Page 15: Ağaç Yapıları

B-Tree

B-Tree, çok yollu bir arama ağacıdır.

Bir node’un en fazla m çocuğu vardır.

Her yaprak olmayan node’un (kök hariç) en az m/2 çocuğu olmalıdır.

Bir node’taki anahtar, sol alt ağaçtaki tüm anahtarlardan

büyüktür ve sağ alt ağaçtaki tüm anahtarlardan küçüktür.

Page 16: Ağaç Yapıları

B-Tree

Kök (root) node en az iki tane yaprak olmayan node’a sahiptir.

Yaprak ve kök olmayan her node k-1 tane anahtara ve k adet alt ağaç referansına sahiptir.

(m/2 ≤ k ≤ m)

k çocuklu bir yaprak olmayan node’u k -1 anahtara sahiptir.

Capacity order=d dersek, anahtarlar d ile 2d arasında olmak zorundadır. Sadece kök 1 ile 2d arasında olabilir. İşaretçiler ise d+1 ile 2d+1 arasındadır. Yalnız kökün işaretçileri 2 ile 2d+1 arasında olabilir.

Bütün yapraklar aynı düzeydedir.

Page 17: Ağaç Yapıları

B-Tree -- Ekleme

Anahtar Ekleme:

1. Eğer boş alanı olan bir yaprağa yerleştirilecekse doğrudan yaprağın ilgili alanına yerleştirilir.

2. Eğer ilgili yaprak doluysa, yaprak ikiye bölünür ve anahtarların yarısı yeni bir yaprak oluşturur. Eski yapraktaki en son anahtar bir üst seviyedeki node’ aktarılır ve yeni yaprağı referans olarak gösterir.

3. Eğer kök ve tüm yapraklar doluysa, önce ilgili yaprak ikiye bölünür ve eski yapraktaki en son anahtar köke aktarılır. Kök node’da dolu olduğu için ikiye bölünür ve eski node’daki en son anahtar kök yapılır.

Page 18: Ağaç Yapıları

B-Tree -- Ekleme

Örnek

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

capacity order=d=2

* 80 anahtarını ekleme

* 50 anahtarını ekleme

* 100 anahtarını ekleme

* 90 anahtarını ekleme

ˆ 80 ˆ ˆ ˆ ˆ

ˆ 50 ˆ 80 ˆ ˆ ˆ

ˆ 50 ˆ 80 ˆ 100 ˆ ˆ

ˆ 50 ˆ 80 ˆ 90 ˆ 100 ˆ

Page 19: Ağaç Yapıları

B-Tree -- Ekleme

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

* 60 anahtarının eklenmesi

* 65 anahtarının eklenmesi

Page 20: Ağaç Yapıları

B-Tree -- Ekleme

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

* 70 anahtarının eklenmesi

* 75 anahtarının eklenmesi

Page 21: Ağaç Yapıları

B-Tree -- Ekleme

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

* 55 ve 64 anahtarının eklenmesi

* 51 anahtarının eklenmesi

Page 22: Ağaç Yapıları

B-Tree -- Ekleme

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

* 76 ve 77 anahtarının eklenmesi

* 78 anahtarının eklenmesi

Page 23: Ağaç Yapıları

B-Tree -- Ekleme

Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150

* 200 ve 300 anahtarlarının eklenmesi

* 150 anahtarının eklenmesi

Page 24: Ağaç Yapıları

B-Tree -- Silme

Anahtar silme:

1. Minimum kapasitenin (d/2) üzerindeki yapraklardan kayıt rahatlıkla silinebilir.

* 88 anahtarlı kaydın silinmesi

Page 25: Ağaç Yapıları

B-Tree -- Silme

2. Bir yaprak olmayan node üzerinden kayıt silindiğinde inorder takipçisi yerine yazılır. (inorder takipçisi, eklemede soldaki en büyük düğüm, silmede sağdaki en küçük düğümdür.) Minimum kapasitenin altına düşülmediyse düzenlemeye gerek yoktur.

* 71 anahtarlı kaydın silinmesi:

Page 26: Ağaç Yapıları

B-Tree -- Silme

3. Bir node’daki kayıt sayısı minimum kapasiteden aşağı düşerse ve kardeş node’u fazla kayda sahipse, parent ve kardeş node ile yeniden düzenleme yapılır.

* 83 anahtarlı kaydın silinmesi:

83’ün silinmesi durumunda node’daki eleman sayısı minimum kapasite olan 1’ e (d/2=1) düşer. Bu durumda önce sağ, sonra sol node’da minimumdan fazla kayıt olup olmadığına bakılır. Sağ node’da olduğu için bir tane kayıt alınabilir. Burada 86, kayıdın silindiği node’a alınırken 89 bir üst node’a yazılır.

Page 27: Ağaç Yapıları

B-Tree -- Silme

4. İki kardeş node minimum kapasitenin altına düşerse ikisi ve parent node’daki kayıt birleştirilir.

* 73 anahtarlı kaydın silinmesi:

73 silindiğinde inorder takipçisi olan 74 yerine yazılır. 74 ün eski nodunda bulunan eleman sayısı minimumun altına düşer. Sağ ve sol kardeş nodelarında da minimum düzeyde kayıt olduğundan düzenleme yapılır. .86,89,91,96 birleştirilerek tek node yapılır.

Page 28: Ağaç Yapıları

B-Tree -- Silme

* 73 anahtarlı kaydın silinmesi devamı…

Üstten 89 alındığında üstteki node’da minimum kapasitenin altına düşer. Benzer şekilde 98 tek kalır, sağ ve sol kardeş nodelar’ından alınabilecek eleman olmadığından düzenleme yapmak gereklidir. 31,50,74,98 birleştirilerek tek node yapılır.