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 f g h i j k l
İ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. III. Sol alt ağacı preorder olarak dolaş. 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 A B C B C D E F G D B E A F C G D E F 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 Dengeli bir ağaçtır. denge faktörü=1-3=-2 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 ˆ 80 ˆ ˆ ˆ ˆ * 50 anahtarını ekleme ˆ 50 ˆ 80 ˆ ˆ ˆ * 100 anahtarını ekleme ˆ 50 ˆ 80 ˆ 100 ˆ ˆ * 90 anahtarını ekleme ˆ 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.
Kaynaklar http://en.wikipedia.org/wiki/b-tree