Upload
leliem
View
247
Download
4
Embed Size (px)
Citation preview
DOSYA ORGANİZASYONU
ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Ağaç Yapıları
Sunum planı
Genel kavramlar
İkili ağaç
İkili arama ağacı
AVL Tree
B-Tree
Genel Kavramlar
Bir ağaç yapısı örneği
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.)
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.)
İ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
İ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
İ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
İ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.
İ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!
İ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ı
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.
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.
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.
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.
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.
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.
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 ˆ
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
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
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
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
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
B-Tree -- Silme
Anahtar silme:
1. Minimum kapasitenin (d/2) üzerindeki yapraklardan kayıt rahatlıkla silinebilir.
* 88 anahtarlı kaydın silinmesi
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:
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.
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.
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.