Dosya organiz - Trakya Ãniversitesi
Dosya organiz - Trakya Ãniversitesi
Dosya organiz - Trakya Ãniversitesi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
DOSYA ORGANİZASYONU<br />
ÖZLEM AYDIN<br />
TRAKYA ÜNİVERSİTESİ<br />
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ<br />
Ağaç Yapıları
Sunum planı<br />
Genel kavramlar<br />
İkili ağaç<br />
İkili arama ağacı<br />
AVL Tree<br />
B-Tree
Genel Kavramlar<br />
Bir ağaç yapısı örneği
Genel Kavramlar<br />
Düğüm (node) : Ağacın her bir elemanına düğüm adı verilir. (A, B, C)<br />
Kök (root) : En üst seviyedeki tek düğümdür. (A bilgisini içeren düğüm.)<br />
Çocuk (child) : Bir düğümün sol ve sağ bağı aracılığı ile bağlandığı<br />
düğümler o düğümün çocuklarıdır. (B ve C, A'nın çocuklarıdır.)<br />
Aile (parent) : Bir düğüm, sağ ve sol bağları ile bağlandığı düğümlerin<br />
ailesidir. (A düğümü, B ve C düğümlerinin ailesidir.)<br />
Bir düğümün düzey (level) veya derinliği (depth) : Bir düğümün kök<br />
düğümden olan uzaklığıdır. (D düğümünün düzeyi veya derinliği 2'dir.)
Genel Kavramlar<br />
Ağacın derinliği (depth of tree) : En derindeki yaprağın derinliği veya<br />
yüksekliği<br />
(Verilen ağacın derinliği 3'tür. )<br />
Yaprak (leaf) : Herhangi bir çocuğu bulunmayan düğümlere yaprak adı<br />
verilir. (D,G,H,I)<br />
Kardeş (sibling, brother) : Aynı aileye sahip düğümlerdir.<br />
(B ile C kardeştir. D ile E kardeştir. H ile I kardeştir.)
İkili Ağaç (Binary Tree)<br />
Düğümlerinin en fazla 2 çocuğa sahip olduğu<br />
ağaçlardır.<br />
a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g h i<br />
j<br />
k<br />
l
İkili ağaç üzerinde dolaşma (traverse)<br />
<br />
Dolaşma (traverse), ağaç üzerindeki herhangi bir düğüme erişmek için<br />
ağaç üzerinde gezmedir.<br />
1. Kökten başlayarak dolaşma (Preorder (depth-first order) traverse)<br />
I. Köke uğra<br />
II.<br />
III.<br />
Sol alt ağacı preorder olarak dolaş.<br />
Sağ alt ağacı preorder olarak dolaş.<br />
A<br />
B<br />
C<br />
D E F G<br />
A B D E C F G
İkili ağaç üzerinde dolaşma (traverse)<br />
2. Sıralı Dolaşma (Inorder (Symmetric<br />
order) Traverse)<br />
I. Sol alt ağacı inorder'a göre dolaş<br />
II. Köke uğra<br />
III. Sağ alt ağacı inorder'a göre dolaş.<br />
3. Sondan başlayarak dolaşma<br />
(Postorder Traverse)<br />
I. Sol alt ağacı postorder'a göre dolaş<br />
II. Sağ alt ağacı postorder'a göre dolaş.<br />
III. Köke uğra<br />
A<br />
A<br />
B<br />
C<br />
B<br />
C<br />
D E F G<br />
D B E A F C G<br />
D E F G<br />
D E B F G C A
İkili arama ağaçları (Binary search tree)<br />
<br />
<br />
İkili ağaçların özel bir halidir.<br />
İkili arama ağaçları, her bir düğümün solundaki tüm<br />
düğümler kendisinden küçük, sağındakiler de kendisinden<br />
büyük olacak şekilde oluşturulurlar.
İkili arama ağaçlarında arama<br />
<br />
9 anahtarının aranması:<br />
I. 9 ile kökteki 15 karşılaştır. 96 olduğundan sağ alt ağaca git.<br />
III. 9 ile 7 karşılaştır. 9>7 olduğundan sağ alt ağaca git.<br />
IV. 9 ile 13 karşılaştır. 9
İkili arama ağaçları<br />
<br />
<br />
İndeks sıralı dosyalarda ağaç yapısı indeks amacıyla<br />
kullanılırken, kayıtlar yapraklarda bulunur.<br />
İkili arama ağaçlarında kayıtlar hem yapraklarda hem<br />
düğümlerde tutulurlar.<br />
İndeks<br />
Veri<br />
İndeks ve<br />
veri<br />
İndeks sıralı dosya<br />
İkili arama ağacı
AVL Tree<br />
<br />
<br />
AVL ağacı, denge şartı olan ikili arama ağacıdır. Height<br />
balanced tree olarak da adlandırılırlar.<br />
Herhangi bir ikili arama ağacının AVL ağacı olması için<br />
bütün düğümlerin çocukları arasındaki farkın en fazla bir<br />
olması gerekir.
Dengeli Ağaç (Balanced Tree)<br />
<br />
Bütün düğümler için sol alt ağacın yüksekliği ile sağ alt ağacın<br />
yüksekliği arasında en fazla bir fark varsa bu dengeli ağaç<br />
olarak adlandırılır.<br />
<br />
Denge faktörü (balance vector)önemlidir.<br />
Denge faktörü = yükseklik (sağ altağaç) – yükseklik (sol altağaç)<br />
<br />
Denge faktörü -1, 0 ve 1 değerini alabilir.
Dengeli Ağaç (Balanced Tree)<br />
denge faktörü=2-3=-1<br />
Dengeli bir ağaçtır.<br />
denge faktörü=1-3=-2<br />
Dengeli bir ağaç değildir.
B-Tree<br />
<br />
<br />
<br />
<br />
B-Tree, çok yollu bir arama ağacıdır.<br />
Bir node’un en fazla m çocuğu vardır.<br />
Her yaprak olmayan node’un (kök hariç) en az m/2 çocuğu<br />
olmalıdır.<br />
Bir node’taki anahtar, sol alt ağaçtaki tüm anahtarlardan<br />
büyüktür ve sağ alt ağaçtaki tüm anahtarlardan küçüktür.
B-Tree<br />
Kök (root) node en az iki tane yaprak olmayan node’a<br />
sahiptir.<br />
Yaprak ve kök olmayan her node k-1 tane anahtara ve k<br />
adet alt ağaç referansına sahiptir.<br />
(m/2 ≤ k ≤ m)<br />
k çocuklu bir yaprak olmayan node’u k -1 anahtara<br />
sahiptir.<br />
Capacity order=d dersek, anahtarlar d ile 2d arasında<br />
olmak zorundadır. Sadece kök 1 ile 2d arasında olabilir.<br />
İşaretçiler ise d+1 ile 2d+1 arasındadır. Yalnız kökün<br />
işaretçileri 2 ile 2d+1 arasında olabilir.<br />
Bütün yapraklar aynı düzeydedir.
B-Tree -- Ekleme<br />
Anahtar Ekleme:<br />
1. Eğer boş alanı olan bir yaprağa yerleştirilecekse<br />
doğrudan yaprağın ilgili alanına yerleştirilir.<br />
2. Eğer ilgili yaprak doluysa, yaprak ikiye bölünür ve<br />
anahtarların yarısı yeni bir yaprak oluşturur. Eski<br />
yapraktaki en son anahtar bir üst seviyedeki node’<br />
aktarılır ve yeni yaprağı referans olarak gösterir.<br />
3. Eğer kök ve tüm yapraklar doluysa, önce ilgili<br />
yaprak ikiye bölünür ve eski yapraktaki en son<br />
anahtar köke aktarılır. Kök node’da dolu olduğu<br />
için ikiye bölünür ve eski node’daki en son anahtar<br />
kök yapılır.
B-Tree -- Ekleme<br />
Örnek<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
capacity order=d=2<br />
* 80 anahtarını ekleme<br />
ˆ 80 ˆ ˆ ˆ ˆ<br />
* 50 anahtarını ekleme<br />
ˆ 50 ˆ 80 ˆ ˆ ˆ<br />
* 100 anahtarını ekleme<br />
ˆ 50 ˆ 80 ˆ 100 ˆ ˆ<br />
* 90 anahtarını ekleme<br />
ˆ 50 ˆ 80 ˆ 90 ˆ 100 ˆ
B-Tree -- Ekleme<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
* 60 anahtarının eklenmesi<br />
* 65 anahtarının eklenmesi
B-Tree -- Ekleme<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
* 70 anahtarının eklenmesi<br />
* 75 anahtarının eklenmesi
B-Tree -- Ekleme<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
* 55 ve 64 anahtarının eklenmesi<br />
* 51 anahtarının eklenmesi
B-Tree -- Ekleme<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
* 76 ve 77 anahtarının eklenmesi<br />
* 78 anahtarının eklenmesi
B-Tree -- Ekleme<br />
Anahtarlar= 80, 50, 100, 90, 60, 65, 70, 75, 55, 64, 51, 76, 77, 78, 200, 300, 150<br />
* 200 ve 300 anahtarlarının eklenmesi<br />
* 150 anahtarının eklenmesi
B-Tree -- Silme<br />
Anahtar silme:<br />
1. Minimum kapasitenin (d/2) üzerindeki yapraklardan<br />
kayıt rahatlıkla silinebilir.<br />
* 88 anahtarlı kaydın silinmesi
B-Tree -- Silme<br />
2. Bir yaprak olmayan node üzerinden kayıt silindiğinde<br />
inorder takipçisi yerine yazılır. (inorder takipçisi,<br />
eklemede soldaki en büyük düğüm, silmede sağdaki en<br />
küçük düğümdür.) Minimum kapasitenin altına<br />
düşülmediyse düzenlemeye gerek yoktur.<br />
* 71 anahtarlı kaydın silinmesi:
B-Tree -- Silme<br />
3. Bir node’daki kayıt sayısı minimum kapasiteden aşağı<br />
düşerse ve kardeş node’u fazla kayda sahipse, parent ve<br />
kardeş node ile yeniden düzenleme yapılır.<br />
* 83 anahtarlı kaydın silinmesi:<br />
83’ün silinmesi durumunda node’daki eleman sayısı minimum kapasite olan 1’ e<br />
(d/2=1) düşer. Bu durumda önce sağ, sonra sol node’da minimumdan fazla kayıt<br />
olup olmadığına bakılır. Sağ node’da olduğu için bir tane kayıt alınabilir. Burada<br />
86, kayıdın silindiği node’a alınırken 89 bir üst node’a yazılır.
B-Tree -- Silme<br />
4. İki kardeş node minimum kapasitenin altına düşerse ikisi<br />
ve parent node’daki kayıt birleştirilir.<br />
* 73 anahtarlı kaydın silinmesi:<br />
73 silindiğinde inorder takipçisi olan 74 yerine yazılır. 74 ün eski<br />
nodunda bulunan eleman sayısı minimumun altına düşer. Sağ ve sol<br />
kardeş nodelarında da minimum düzeyde kayıt olduğundan düzenleme<br />
yapılır. .86,89,91,96 birleştirilerek tek node yapılır.
B-Tree -- Silme<br />
* 73 anahtarlı kaydın silinmesi devamı…<br />
Üstten 89 alındığında üstteki node’da minimum kapasitenin<br />
altına düşer. Benzer şekilde 98 tek kalır, sağ ve sol kardeş<br />
nodelar’ından alınabilecek eleman olmadığından düzenleme<br />
yapmak gereklidir. 31,50,74,98 birleştirilerek tek node<br />
yapılır.
Kaynaklar<br />
http://en.wikipedia.org/wiki/B-tree