BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Benzer belgeler
Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

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

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

YZM 2116 Veri Yapıları

BIP116-H14-1 BTP104-H014-1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Çanakkale Onsekiz Mart Üniversitesi. Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

VERİ YAPILARI VE PROGRAMLAMA

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

BIL222 Veri Yapıları ve Algoritmalar

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme

Ağaç (Tree) Veri Modeli

YZM 2116 Veri Yapıları

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Yrd. Doç. Dr. Ümit ATİLA

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI.

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Veri Yapıları Laboratuvarı

Final Sınavı Soruları Bahar 2018

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Arama metodlarında temel işlem anahtarları karşılaştırmaktır.

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

Arasınav Örnek Soruları Bahar 2018

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

Final Sınavı Örnek Soruları Bahar 2018

HASH(KARMA) TABLOSU VERİ YAPISI

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

#$% &'#(# Konular. Binary Tree Structures. Binary Search Trees AVL Trees Internal Path Reduction Trees Deerlendirme

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Veritabanı. SQL (Structured Query Language)

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

ALGORİTMA VE PROGRAMLAMA II

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

AĞAÇLAR. Doç. Dr. Aybars UĞUR

Sıralı Erişimli Dosyalar. Kütük Organizasyonu 1

Mantıksal çıkarım yapmak. 9 ve üzeri

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Yrd. Doç. Dr. Caner ÖZCAN

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

YZM 2116 Veri Yapıları

Fiziksel Veritabanı Modelleme

Yrd. Doç. Dr. Caner ÖZCAN

Fiziksel Tasarım Konuları. Dosya Organizasyon Teknikleri Kayıt Erişim Yöntemleri Veri Yapıları

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Indeksli Sıralı Erişimli Dosya Yapıları (Indexed Sequential File Organization) ve. Bit Seviyesinde İşlemler (Bit Level and Related Structures)

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Algoritmalar ve Karmaşıklık

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

Alıştırma 1: Yineleme

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

ALGORİTMA VE PROGRAMLAMA I

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Ağaçlar (Trees) Ağaçlar (Trees)

Yrd. Doç. Dr. Caner ÖZCAN

Veri Tabanı Tasarım ve Yönetimi

DOSYA ORGANİZASYONU. Doğrudan erişimli dosya organizasyonu ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

ALGORİTMA VE PROGRAMLAMA I

BMT207 VERİ YAPILARI DATA STRUCTURE

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

C++ Dilinde Bazı Temel Algoritmalar

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

#$% &'#(# Konular. Direct File Organization. Computed Chaining Comparison of Collision Resolution Methods Perfect Hashing Cichelli s Algorithm

Yrd. Doç. Dr. Caner ÖZCAN

Dr. Fatih AY Tel: fatihay@fatihay.net

YZM 2116 Veri Yapıları

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

SQL Komutları (2) Uzm. Murat YAZICI

SQL e Giriş. Uzm. Murat YAZICI

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Pratik Ara Sınav 1 Çözümleri

ALGORİTMA VE PROGRAMLAMA II

6.Hafta Bilinen Probleme İndirgeme Tasarım Yöntemi

KARİYER PLANLAMA Amaç ve Fayda Yayın Tarihi Kategori Ürün Grubu Modül Versiyon Önkoşulu Yükleme ve Gereken Dosyalar Yükleme Sonrası

VERİTABANI. SQL (Structured Query Language)

Transkript:

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Dersin Planı B+ Tree Temel bir veritabanı çalışma kodu Hash (Karma) Heap

Ağaçlar Ağaç Çeşitleri Binary Tree * Dengeli ikili ağaçlar Dengeli d li ağaç yapıları AVL Tree * Red-Black Trees Splay Trees 2-3-4 Tree B Tree B+ Tree * Bu derste veritabanı sistemleri açısından önemli olan B+ tree algoritması ve aramayı daha da hızlandırma imkanı olan Hash yapısı incelenecektir. Ve sıralamayı hızlandıran Heap yapısı genel olarak anlatılacaktır. Derste işlenen algoritmalar * ile işaretlenmiştir.

B+ Tree Dengeli arama ağacı yapısı kurmanın bir başka yolu da her düğümde bir değil birden fazla değer saklamaktır. Bu tip ağaç yapıları ikili ağaçların genellemeleri olup, literatürde d-li ağaç yapıları olarak adlandırılırlar.

B+ Tree B+ ağacı dinamik bir arama ağacı yapısı olup, indeks kısmı ve verilerin saklandığı kısım olmak üzere iki kısımdan oluşmaktadır. İndeks kısmı d-li ağaç yapısında olup, her düğüm d m 2d değer içermektedir. d değeri B+ ağacının parametresi olup, B+ ağacının kapasitesini göstermekte ve ağacın derecesi olarak ifade edilmektedir. 15 veri içeren d=2 dereceli örnek bir B+

B+ Tree Kök düğüm bu kuralın tek istisnası olup 1 m 2d değer içerebilmektedir. Her düğüm kendisine ait m+1 tane çocuk düğümü gösteren m+1 tane işaretçi içerir. Bu işaretçiler yardımıyla, ağaç yukarıdan aşağı doğru gezilebilmektedir. Pi, i. Çocuk düğümü gösteren işaretçi, Ki ise aynı düğümde saklanan i. değeri göstermek üzere, i. Çocuk düğüm ve bu düğümün tüm soyundaki veriler Ki K<Ki+1 aralığında değer alırlar. Veriler yaprak düğümlerde saklanmakta olup, ağaç tanımı gereği yaprak düğümlerin çocuk düğümleri olamaz. 15 veri içeren d=2 dereceli örnek bir B+

B+ Tree 15 veri içeren d=2 dereceli örnek bir B+ Yukarıdaki şekilde 15 veri içeren d=2 dereceli örnek bir B+ ağacı gösterilmiştir. d=2 olduğundan düğümler en az 2, en fazla 4 değer içerebilmektedirler. Üst kısımda sadece kök düğüm olup, toplam 4 değer ve 5 işaretçi içermektedir. Alt kısımda ise K<11 aralığında 4 veri, 11 K<18 aralığında 2 veri, 18 K<25 aralığında 2 veri, 25 K<32 aralığında 3 veri ve son olarak K 32 aralığında ise 4 veri bulunmaktadır.

B+ Tree 13 veri içeren d=1 dereceli başka bir B+ ağacı Üst kısımda kök dahil olmak üzere toplam 4 düğüm bulunmaktadır. d = 1 olduğundan düğümler en az 1, en fazla 2 değer içerebilmektedirler. 1. Şekildeki ağaçtan farklı olarak bu ağaçta tam dolu olmayan bir düğüm bulunmakta, bu sebeple aynı düğümün diğer düğümlerden farklı olarak 2 çocuğu bulunmaktadır.

B+ Tree

B+ Tree Arama B+ ağacında belirli bir elemanı aramak, ikili arama ağacında belirli bir elemanı aramaya benzer. Arama işlemine ikili arama ağacında olduğu gibi yine kök düğümünden başlanır ve her aşamada ağaçta bir seviye aşağı inilir. İkili arama ağacına göre B+ ağacında eleman arama iki noktada farklıdır. Birincisi, ikili arama ağacında veriler düğümlerde veya yapraklarda olabildiği halde, B+ ağacında veriler sadece yaprak düğümlerde saklanır.

B+ Tree Arama Bu sebeple, ikili arama ağacında arama işlemi ağacın herhangi bir yerinde bitebilecekken, B+ ağacında arama ancak ve ancak yaprak düğümlere ulaşıldığında sona erer. İkinci olarak, ikili arama ağacında aranan eleman düğümdeki tek bir değerle karşılaştırılıp sol veya sağ çocukla aramaya devam edilirken, B+ ağacının düğümlerinde m tane değer olduğundan, bu değerlerin bir kısmı veya hepsiyle karşılaştırma yapılıp, hangi çocukla aramaya devam edileceğinin belirlenmesi gerekir.

B+ Tree 30 un aranması

B++ Tree Ekleme B+ ağacına eleman eklerken AVL ağacında olduğu gibi ağacın yeniden şekillendirilmesi gerekebileceği gibi sadece ağacın alakalı yaprağına eklemek de yeterli olabilir. B+ ağacında veriler yapraklarda saklandığı için eklenecek elemanın önce hangi yaprağa ekleneceğinin bulunması gerekir. Bu yaprak bulunduktan sonra, önce eleman yaprağa eklenir, sonra yapraktaki veri sayısı sınırı aşmışsa yaprak ikiye bölünüp bir üst düğüme yeni bir eleman eklenir. Eğer üst düğüme eklenen eleman da üst düğümün sınırı aşmasına sebep olursa, üst düğüm ikiye bölünür ve iki üst düğüme yeni bir eleman eklenir. İşlem bu şekilde herhangi bir üst düğümde sınır aşılmayıncaya kadar devam eder.

B+ Tree 22 in eklenmesi

B+ Tree Ekleme Algoritması

B+ Tree Farklı bir ağaca 22 in eklenmesi 22 nin ekleneceği yaprakta daha önceden 25 ve 27 olup, ekstra eleman için yer bulunmamaktadır. Önce bu yaprağa 22 eklenmekte, ardından yaprak ikiye bölünüp bir tanesi 22 ve diğeri 25 ile 27 içeren iki yaprak meydana gelmektedir. Bu durum, üst düğüme 25 in eklenmesini gerektirmektedir.

B+ Tree Farklı bir ağaca 22 in eklenmesi İlk üst düğümde 20 ve 28 olup, ekstra eleman için yer bulunmamaktadır. Önce ilk üst düğüme 25 eklenmekte, ardından düğüm ikiye bölünüp bir tanesi 20 diğeri 28 içeren iki düğüm meydana gelmekte, bu durum yine bir üst düğüme 25 in eklenmesini gerektirmektedir. İkinci üst düğümde 18 ve 32 olup, ekstra eleman için yer bulunmamaktadır. Önce ikinci üst düğüme 25 eklenmekte, ardından düğüm ikiye bölünüp bir tanesi 18 diğeri 32 içeren iki düğüm meydana gelmekte, bölünen düğüm kök düğümü olduğundan yeni bir kök düğümü oluşturulup 25 kök düğüme yerleştirilmektedir.

B+ Tree Farklı bir ağaca 22 in eklenmesi

İndeksleme Temeli Ağaç Dizin Örneği Veritabanı dersinde indeksleme konusunda ağaçların kullanıldığı ve indekslemenin arama ve filtreleme işlemlerini hızlandırdığını belirtmiştik. Bu konuda amacımız bu hız artışını algoritmik açıdan incelemektir.

Bir Select Sorgusu Ogrenci(No, Ad, Soyad) bilgileri sahip olalım. Select Ad, Soyad From Ogrenci Where No=18 ile 18 nolu öğrencinin bilgilerine ulaşabiliriz.

Bir Select Sorgusu Select count(*) From Ogrenci Where No > 23 23 ten büyük olan öğrencilerin sayısını bulmak isteyebiliriz. Her iki SQL de amacımız hızlı bir şekilde sonuç üretmek olsun.

Kod Yapısı No kolonu primary key olarak düşünülebilir.

Kod Yapısı 18 no lu öğrenci bilgileri alan kod Select Ad, Soyad From Ogrenci Where No=18

Kod Yapısı 23 ten büyük öğrenci sayısını bulan kod Select count(*) From Ogrenci Where No > 23

Hash (Karma) İkili Arama da ekleme, silme ve arama O(log n) zamanında yapılabiliyordu. Hash sayesinde bunu O(1) düzeye indirgemeye çalışacağız. Fakat, diğer taraftan maksimum ve minimum elemanları bulma, sıralı biçimde gösterme gibi özellikleri Hash yapısı desteklemektedir. Ayrıca, Hash yapısında çakışmalar diğer bir sorundur.

Hash Hash tablosu veri yapısı bir dizi elemandan oluşmaktadır. Dizideki her bir eleman sayı veya karakter olabileceği gibi herhangi bir veri yapısından da gelebilir. Tablo N elemandan oluşuyorsa, Hash tablosunun büyüklüğü N dir denir ve 0 ile N-1 arasında normal bir dizi gibi adreslenirler. Hash veri yapısının özelliği elemanlar ile adreslerini birbirine bağlayan birebir bir fonksiyon kullanmasıdır. Bu fonksiyon sayesinde elemanların bulundukları konumlar fonksiyonun hesaplama zamanı kadar zamanda belirlenir. Bu fonksiyona Hash fonksiyonu denir. İyi bir Hash fonksiyonu hem elemanları dizide iyi serpiştirmeli hem de mümkünse iki farklı elemanı aynı pozisyona adreslememelidir.

Hash Hash veri yapısındaki temel problemler hangi karma fonksiyonunun adreslemede kullanılacağı, hash tablosunun büyüklüğünün nasıl seçileceği ve eğer hash fonksiyonu birden fazla elemanı aynı pozisyona adreslerse ne yapılacağıdır.

Hash Karma tablosunu oluşturan elemanlar tamsayı ise karma fonksiyonu içerik %N olabilir..burada çıkabilecek bir sorun, içeriğin belirli değerleri daha fazla diğer değerleri ise hiç almamasıdır. Genellikle böyle durumlarda uygulanan çözüm N yi asal sayılardan seçmektir.

Hash Örneği Sayısal bir değer için hash hesabı String(Katar) bir değer için hash hesabı

Bağlı Liste ile Hash Çakışmaları çözmenin bir yolu da bağlı liste ile Hash tutmaktır.

Açık Adresleme Çakışma problemi bağlı liste kullanımı ile çözülebilse de yeni bir veri yapısını kullanmak zorunda olma ve her yeni eleman eklendiğinde hafızada yer açmanın getirdiği yavaşlama nedeniyle dezavantajlıdır. Çakışma probleminin çözümü için önerilen diğer bir metod da açık adreslemedir. Açık adreslemede bir çakışma olduğunda boş bir pozisyon bulunana kadar alternatif pozisyonlar denenmektedir. Doğrusal Strateji İkinci Derece Strateji Çift Karma Strateji

Doğrusal Strateji Doğrusal stratejide f bir doğrusal fonksiyondur ve f(i)=i dir. Böylece bu stratejiyle aranan pozisyonun ardındaki hücreler sırasıyla denenir. Aşağıdaki şekilde doğrusal strateji ile düzenlenmiş açık adreslemeli bir karma tablosu ve bu karma tablosuna sırasıyla 89, 18, 49, 58 ve 69 sayıları girildiğinde oluşan durum gösterilmiştir.

Doğrusal Strateji 89 ve 18 herhangi bir çakışmaya neden olmaz. 49 ilk çakışmaya neden olur(49%10=9 ve 9 numaralı pozisyon dolu). 9 numaralı pozisyondan sonra gelen ilk pozisyon 0 numaralı pozisyondur ve boştur. Bu sebeple 49 bu pozisyona yerleştirilir,. Hash tablosu büyük olduğu sürece doğrusal strateji ile boş bir pozisyon bulunabilir. Fakat bu boş pozisyonu bulmak için doğrusal strateji çok zaman harcayabilir. Çünkü tablo boş olsa bile ardışık bloklar halinde dolu adresler oluşmaya başlar. Bu da birçok deneme yapmak gerektirir.

İkinci Derece Strateji Doğrusal stratejinin öbeklenme problemini gidermek için oluşturulmuştur. Bu stratejide çakışma fonksiyonu fonksiyonu ikinci dereceden bir fonksiyondur. Aşağıdaki şekilde ikinci derece strateji ile düzenlenmiş açık adreslemeli bir karma tablosu ve bu karma tablosuna sırasıyla 89, 18, 49, 58 ve 69 sayıları girildiğinde oluşan durum gösterilmiştir.

İkinci Derece Strateji 89 ve 18 herhangi bir çakışmaya neden olmaz. 49 ilk çakışmaya neden olur(49%10=9 ve 9 numaralı pozisyon dolu). 9 numaralı pozisyondan sonra gelen ilk pozisyon (9+1^2)%10=0 numaralı pozisyondur ve boştur. Bu sebeple 49 bu pozisyona yerleştirilir. 58 sayısı ikinci çakışmaya neden olur (58%10=8 ve 8 numaralı pozisyon dolu). 8 numaralı pozisyondan sonra gelen (8+1^2)%10=9 numaralı pozisyon dolu olduğu için sonraki boş pozisyon (8+2^2)%10=2 numaralı pozisyondur ve boştur, 58 buraya yerleştirilir,. Fakat ikinci derece stratejisi de belli bir elemandan sonra yine benzer bir öbeklenme ile sonuçlanır.

Çift Karma Strateji Bu da ikinci derece stratejisinin öbeklenme problemini çözmek için oluşturulmuştur. Bu stratejiye, aynı pozisyona karma fonksiyonu ile adreslenen elemanların deneyecekleri pozisyonlar yine bir karma fonksiyonu ile belirlendiği için çift karma strateji denir. Çift karma stratejisinde kullanılan çakışma fonksiyonu f(i)=ixkf2(x) tir. S karma tablosunun büyüklüğünden küçük bir asal sayı olmak üzere ikinci karma fonksiyonu KF2(x)=S-(x%S) şeklinde seçilebilir.

Çift Karma Strateji Aşağıdaki şekilde çift karma strateji ile düzenlenmiş açık adreslemeli bir karma tablosu ve bu karma tablosuna sırasıyla 89, 18, 49, 58 ve 69 sayıları girildiğinde oluşan durum gösterilmiştir. ikinci karma fonksiyonu olarak 7-(x %7) kullanılmıştır.

Çift Karma Strateji 89 ve 18 herhangi bir çakışmaya neden olmaz. 49 ilk çakışmaya neden olur(49%10=9 ve 9 numaralı pozisyon dolu). 9 numaralı pozisyondan sonra gelen ilk pozisyon (9+(7-(49%7)))%10=6 numaralı pozisyondur ve boştur. Bu sebeple 49 bu pozisyona yerleştirilir. 58 sayısı ikinci çakışmaya neden olur (58%10=8 ve 8 numaralı pozisyon dolu). 8 numaralı pozisyondan sonra ilk gelen (8+(7-(58%7)))%10=3 numaralı pozisyondur ve 58 buraya yerleştirilir,.

Heap Tree Bu bölümde, bilgisayar biliminde çok önemli bir yere sahip olan, hem veri yapısı hem de bir sıralama algoritması olarak bilinen heap (yığın) veri yapısı anlatılacaktır. (Stack ile karıştırmayın.) Bu bölümde heap en yaygın türü olan ikili heap (binary heap) anlatılacaktır.

Heap Tree Temelde ağaç veri yapısıyla oluşturulur; ancak bu ağaçlar kendi özelliklerinin yanı sıra yine heap adı verilen bir başka özelliğe sahiptir. Tam ikili ağaçtaki her düğümün değeri çocuklarından küçük değilse söz konusu ikili ağaç maksimum yığın (max heap ) olarak isimlendirilir. Tam ikili ağaçtaki her düğümün değeri, çocuklarından büyük değilse söz konusu ikili ağaç minimum yığın (min heap) olarak isimlendirilir.

Max Min Heap

Max Heap Ekleme Max ve Min heap birbirine benzer olduğu için sadece max heap anlatılacaktır. Sırasıyla 15, 109, 107, 3, 15 değerleri eklenecektir. En iyi durumda Ω(1) de de ekleme yapılır (3 ün eklemesi). Mevcut tüm elemanlardan daha büyük bir öğe eklendiğinde ise yeni öğenin köke kadar kaydırılması gerekeceği için O( log(n) ) de ekleme yapıldığını görüyoruz (109 un eklenmesi).

Max Heap Ekleme

Max Heap Ekleme

Max Heap Silme

Max Heap Silme

Max Heap Silme

Kaynaklar C && Java ile Veri Yapılarına Giriş, Olcay Taner Yıldız, Boğaziçi Üniversitesi Yayınevi http://firatyazilim.com/dosyalar/2.sinif 1.Donem/Veri_Yapilari/7. Hafta_Btree.pdf http://e-bergi.com/y/yigin-veri-yapisi Animasyonlu Gösterim http://www.cs.usfca.edu/~galles/visualization/algorithms.html Derste anlatılan ve anlatılmayan ağaç örnekleri http://firatyazilim.com/dosyalar/2.sinif 1.Donem/Veri_Yapilari/