• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Algoritmalar

B Ağaçları (B Trees)

İrem Türkü ÇINAR by İrem Türkü ÇINAR
Ağustos 24, 2020
in Algoritmalar
5 min read
0
B Ağaçları (B Trees)
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Merhaba Yazılım Karavanı Ailesi 🙂

Bir önceki yazımda ağaç veri yapısından bahsetmiştim. Şimdi sizlere B Ağaçlarından bahsedecek ve örnekler çözeceğim. Bu yazıda B ağaçlarına eleman ekleme, daha sonraki yazılarımda ise B ağaçlarından eleman silme ve B ağaçlarında dolaşım işlemlerini gerçekleyeceğiz. İşinize yaramasını dilerim. B ağaçları, ilk kez Boeing firmasında çalışan Bayer isimli bir mühendis tarafından tanıtılmıştır. 
B ağaçları, hem sıralı hem de doğrudan erişimleri desteklediği için bilgisayar literatüründe en çok kullanılan veri yapılarından birisi olmuştur.

Kullanıldığı yerler:
– Veritabanı Yönetim Sistemleri
– İşletim Sistemlerinin Dosya-Dizin Yapıları

B ağaçları ikili arama ağaçlarının aksine bir düğümde birden fazla veri tutulmasına olanak sağlamaktadır. Bir düğümde kaç veri tutulacağı ise o ağacın kapasite derecesi (capacity order-d) ile belirlenmektedir.

d, B ağacının kapasite değeri olacak şekilde;
1. Kök düğümde en az 1, en çok 2d kayıt tutulabilir.
2. Kök düğümden en az 2, en çok (2d+1) düğüme işaret edilebilir.
3. Kök düğüm dışındaki herhangi bir düğüm en az d, en çok 2d kayıt içerebilir.
4. Kök düğüm dışındaki herhangi bir düğüm en az (d+1), en çok (2d+1) düğüme işaret eder.
5. B ağaçları, ikili arama ağaçlarının aksine yukarıdan aşağıya doğru değil de aşağıdan yukarıya doğru büyür. Bu doğrultuda B ağaçları rotasyon işlemlerine gerek duymaz ve sürekli dengeli halde bulunurlar.

**ÖNEMLİ NOT** B ağaçları, kök düğüm dışında diğer düğümlerin en az %50 doluluk oranını ister.

Örneğin;  Kapasite derecesi (d=1) 1 olan B ağacı düğümü, i. özellikten en az 1, en çok 2 kayıt tutabilir.

Ekran Resmi 2020 08 24 20.19.03

ii. Özellikten yola çıkarak, kök düğümünün en az 2, en çok ise 3 düğüme işaret etmesi gerektiğini söyleyebiliriz.
Bu durumda basit bir B ağacı oluşturacak olursak;
Ekran Resmi 2020 08 24 20.19.08
Şeklinde düşünebiliriz. B ağaçlarına karşı ufak da olsa fikrimiz oluştuğuna göre B ağacına eleman ekleme ile devam edelim.

B Ağacına Eleman Ekleme (Insert B-Tree)
78, 52, 81, 40, 33, 90, 85, 20, 38 sayılarını kapasite derecesi (d=1) olan B ağacına yerleştirelim.

1) d=1 olduğu için kök düğümü en fazla 2 elaman alabilir. Ayrıca elemanları eklerken %50 doluluk şartını unutmamamız da fayda var. 78 elemanını ekledik. Root düğüm maksimum iki eleman alabileceği için sıradaki eleman olan 52 yi ekleyelim.

i.   
Ekran Resmi 2020 08 24 20.21.06

ii.
Ekran Resmi 2020 08 24 20.21.11

2) Üçüncü eleman olan 81’i rootta yer bulunmadığı için artık roota ekleyemeyiz. Peki şimdi ne yapmalıyız? İlk üç elamanı yan yana fakat sıralı olarak düşünelim.
52 78 81, bu durumda ortanca sayı yukarı taşınmalıdır.

iii.
Ekran Resmi 2020 08 24 20.21.13

Hala her bir düğümün iki eleman alabileceğini unutmamalıyız 🙂

3) Şimdi geldik 4. Eleman olan 40 sayısını B ağacına eklemeye…

İkili arama ağaçları gibi düşündüğümüzde 40<78 olduğu için sol tarafa kayacaktır. Sol taraftaki düğümde ise 40<52 olduğu aynı zamanda hala bir elemanlık yer olduğu için 40 ı ağaca eklemekte hiçbir sorun bulunmamaktadır (d=1 olduğu için her düğümde 1 eleman %50 doluluk şartını sağlar).

iv.

Ekran Resmi 2020 08 24 20.21.18

4) Elemanımız olan 33 ü eklememiz gerekiyor. Fakat biliyorum ki siz de sol taraftaki düğümün dolmuş olduğunu farkettiniz. Az önce roota yaptığımız yukarı kaydırma işlemini şimdi çocuk düğümlere yapalım.

Bu durumda 33 40 52 ‘yi sıraladığımız zaman 40’ın ortanca olduğunu ve yukarı taşması gerektiğini görüyoruz.

v.
Ekran Resmi 2020 08 24 20.21.21

     Sanırım buraya kadar hiçbir sorunumuz kalmadı. Sıradaki elemana bakalım 🙂

5) 90 ı eklediğimiz zaman hiçbir taşırma işlemi yapmamıza gerek yok çünkü 78<90 ve 81<90 olduğu için 81 elemanın bulunduğu düğümde hala bir elemanlık boşluk bulunmaktadır. Ee ekleyelim o halde 🙂 

vi.
Ekran Resmi 2020 08 24 20.21.25

6) 85’ eklemek istediğimiz zaman kaydırma işlemi yapmamız gerekmektedir. Bu durumda 81 85 ve 90’ı sıralayıp 85’i kaydırmamız gerektiğini gördük. Peki 85’i kaydırdığımız zaman kökün de dolu olduğunu gördük mü? 40 78 ve 85 elemanlarını d=1’ den ötürü aynı rootta tutamayacağımız için rottan da kaydırma işlemi yapmamız gerekiyor. Bu durumda 40 78 ve 85’i sıralayarak ortanca olan 78’i root yapalım.

vii.
Ekran Resmi 2020 08 24 20.21.28

7) Ağacın 6. Adımdaki son haline baktığımız zaman 20 elamanını rahatlıkla ağacın en soluna yerleştirebilecek olduğumuzu görüyoruz.

viii.
Ekran Resmi 2020 08 24 20.21.31

8) Geldik son eleman olan 38’i eklemeye… Baktığımız zaman sol tarafta olması gerektiğinin hepimiz farkındayız fakat sol tarafta nereye yerleştirmeliyiz? Bu durumda şunu yapmalıyız 38<78 ve 38<40 olduğu için tekrar sol tarafa yerleşmelidir. Bu durumda 20 33 ve 38’i sıralayıp 33’ün bir üst düğüme kayması gerektiğini gördük. O halde:

ix.
Ekran Resmi 2020 08 24 20.21.34

Ağacımızın son hali ix’de görüldüğü gibidir.

iremturkucinar
SendTweet16Share4Share
Önceki Gönderi

Ağaç Veri Yapısı

Sonraki Gönderi

Flutter’da TFLite Kullanımı

İlgili Yazılar

Ağaç Veri Yapısı

Ağaç Veri Yapısı

by İrem Türkü ÇINAR
Ağustos 24, 2020
0

Merhaba arkadaşlar :) Bu yazımda sizlere ağaç veri yapısından bahsedeceğim. Benim üniversitede aldığım dersler arasında pek çok yerde karşıma çıkmış...

Araya Sokma (Insertion Sort) Algoritması

Araya Sokma (Insertion Sort) Algoritması

by Ali Murat Çevik
Mayıs 24, 2018
0

Insertion sort algoritması temel sıralama algoritmalarından bir tanesidir. Algoritmanın mantığına göre elimizdeki A dizisinin elemanları arasında sıralama yapılmak istenildiğinde A...

Hızlı Sıralama (Quick Sort) Algoritması

Hızlı Sıralama (Quick Sort) Algoritması

by Ali Murat Çevik
Mayıs 24, 2018
0

Hızlı sıralama algoritması, sıralama algoritmalarında karşımıza sık sık çıkan bir algoritmadır. Böl ve yönet (divide and conquer) felsefesiyle çalışır. İlgili...

İkili Arama (Binary Search) Algoritması

İkili Arama (Binary Search) Algoritması

by Ali Murat Çevik
Mayıs 24, 2018
0

İkili arama, arama algoritmaların temelini oluşturmaktadır. Algoritmalar konusunda sık sık karşımıza çıkmakta olan ikili arama algoritmasını inceleyelim. Örneğin bir sayı...

Bogo (Permutation) Sort Algoritması

Bogo (Permutation) Sort Algoritması

by Ali Murat Çevik
Mayıs 19, 2018
0

Bogo Sort algoritması Permütasyon Sıralaması veya Saçma Sıralama olarak da adlandırılır. Verilen sayı dizisinin rastgele karıştırılması ile olası bütün ihtimalleri...

Next Post
Flutter’da TFLite Kullanımı

Flutter'da TFLite Kullanımı

Özel KODLAB İndirimi!

Özel KODLAB İndirimi!

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025
OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

Aralık 14, 2024

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.