YZM 2116 Veri Yapıları

Benzer belgeler
YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

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

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

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 > =

Algoritmalar. İkili Arama Ağaçları. Bahar 2016 Doç. Dr. Suat Özdemir 1

BIL222 Veri Yapıları ve Algoritmalar

Final Sınavı Soruları Bahar 2018

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

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

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

YZM 2116 Veri Yapıları

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

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

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

Arasınav Örnek Soruları Bahar 2018

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

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

Veri Yapıları. Ağaçlar. Ağaçlar genel bilgi

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

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

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

Algoritmalar. DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar Kırmızı-siyah ağacın yüksekliği Rotation / Dönme Insertion / araya yerleştirme

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

AĞAÇ-TREE VERİ YAPISI

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ü

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

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

YZM 2116 Veri Yapıları

YZM 3215 İleri Web Programlama

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

Yrd. Doç. Dr. Caner ÖZCAN

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

Algoritmalar. Kırmızı Siyah Ağaçları Red Black Trees. Bahar 2017 Doç. Dr. Suat Özdemir 1

Veri Yapıları. Ağaçlar

BIP116-H14-1 BTP104-H014-1

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

Final Sınavı Örnek Soruları Bahar 2018

Ağaç (Tree) Veri Modeli

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

Alıştırma 1: Yineleme

Arasınav Soruları Bahar 2018

Yrd. Doç. Dr. Caner ÖZCAN

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

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

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

İ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İ

Binary Tree nedir?uygulamas nasl yaplr?

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ALGORİTMA VE PROGRAMLAMA I

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

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

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

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

ALGORİTMA VE PROGRAMLAMA I

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

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

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

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

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

ALGORİTMA VE PROGRAMLAMA II

GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi VERİ YAPILARI. Bilgisayar Mühendisliği ÖĞR.GÖR.GÜNAY TEMÜR 1

MOBİL UYGULAMA GELİŞTİRME

ALGORİTMA VE PROGRAMLAMA I

Algoritmalara Giriş 6.046J/18.401J

VERİ YAPILARI VE PROGRAMLAMA

Veri Yapıları Laboratuvarı

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

Çizgeler (Graphs) Doç. Dr. Aybars UĞUR

YMT219 VERİ YAPILARI ÖDEV-1

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

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

YZM 2105 Nesneye Yönelik Programlama

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

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

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Yrd. Doç. Dr. Caner ÖZCAN

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İ

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

#$% &'#(# Konular. B-Tree and Derivatives. B-Trees B#-Trees B+-Trees Deerlendirme

ALGORİTMA VE PROGRAMLAMA I

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

C++ Dersi: Nesne Tabanlı Programlama

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Veri Yapıları ve Algoritmalar dönem

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

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

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

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

Transkript:

YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği

Bu bölümde, BÖLÜM - 8 Problem Tanımı Arama Ağaçları İkili Arama Ağacı İkili Arama Ağacı Gerçekleştirim Arama Ekleme Min ve Maks Değer Bulma Silme Uygulamalar konusuna değinilecektir.

Soru Elimizde bir grup veri varsa (mesela 1 kilo) ve bu veriler üzerinde o Arama o Silme o Değiştirme gibi işlemler yapılmak isteniyorsa hangi veri yapısını seçmeliyiz? Dizi? Bağlı Liste?

Cevap 1: Dizi DİKKAT o Insert (x) için dizinin dolması durumunda karmaşıklığın artacağını ve O(n) olacağını dikkate alınız. o Remove (x) için en kötü durumda (n-1) eleman kaydırılacağı için O(n) olur.

Cevap 2: Bağlı Liste YENİ SORU? o Her iki veri yapısında da arama performansını nasıl arttırırız? CEVAP: o Elemanları sırala ve İkili Arama (Binary Search) kullan.

İkili Arama Cevabı Üzerine YENİ SORU? o Peki Ekleme (insert) ve Silme (remove) işlemleri için performans iyileştirme yapılabilir mi? CEVAP: o İkili arama ağacıyla mümkün olabilir. o Örneğin: İkili Arama Ağacı (Binary Search Tree) ile

Arama Ağaçları Arama, gezinme, ekleme ve silme gibi işlemleri destekleyen ağaçlar, arama ağacı olarak adlandırılır. Bu bağlamda arama ağacı, belirli sayıda düzenli/sıralı elemana/değere sıralı erişimi sağlar. Bir arama ağacı, verilerin düğümlere belli bir düzende eklenmesiyle elde edilir. Arama ağaçlarının önemli avantajı, veri girişinin disipline edilmesi sayesinde, aranan elemana ulaşmak için tüm ağacın dolaşılmasına (traverse) gerek olmamasıdır.

Arama Ağaçları (devam ) Bilinen arama ağaçları aşağıdaki gibidir: 1. İkili Arama Ağacı (Binary search tree (BST)) 2. AVL Ağacı 3. Splay Ağacı 4. 2-3-4 Ağacı 5. Red-Black Ağacı 6. B Ağacı ve B+ Ağacı

İkili Arama Ağacı (Binary Search Tree) Özyinelemeli (recursive) olarak BST, tüm elemanların kök referans olmak şartı ile: i. Kökten küçükse kökün solunda ii. Kökten büyükse kökün sağında yer almasıdır.

İkili Arama Ağacı (BST) (devam ) x: ikili arama ağacında herhangi bir düğüm olsun. Eğer, y düğümü x in sol alt ağacında ise key[y] key[x] Eğer, y düğümü x in sağ alt ağacında ise key[y] key[x] Kök 5 2 Kök SolAA 3 7 SağAA 3 7 SağAA 2 4 8 >2 5 8 <5 >5 4

İkili Arama Ağacı Gerçekleştirim

İkili Arama Ağacı Üzerinde Bazı İşlemler Dolaşma/Gezinme (Traversal) Ara MinDeger MaksDeger SonraGelenEnKucuk (Successor) Ekle Sil DugumSayisi YaprakSayisi Vb.

İkili Arama Ağacı - Gezinme İkili ağaç ile aynı mantıkta çalışır: Önce-kök/ziyaret (Preorder - NLR): Kök/ziyaret, Sol, Sağ Ortada-kök/ziyaret (Inorder - LNR): Sol, Kök/ziyaret, Sağ Not: Inorder gezinme, düğüm değerlerinin sıralı elde edilmesini sağlar. Sonra-kök/ziyaret (Postorder - LRN): Sol, Sağ, Kök/ziyaret

İkili Arama Ağacı Arama Bir k anahtar değerini aramak için, kök düğümden başlanarak aşağı doğru bir yol izlenir. Bir sonraki ziyaret edilecek düğüm, k anahtar değerinin, geçerli düğümün anahtar değeriyle karşılaştırılması sonucuna bağlıdır. Aranan değer, kök düğümden küçükse sol alt ağaç üzerinden aramaya devam edilir. Aranan değer, kök düğümden büyükse sağ alt ağaç üzerinden aramaya devam edilir. Eğer yaprağa ulaşıldıysa anahtar bulunamamıştır ve null değer geri döndürülür.

İkili Arama Ağacı Arama (devam ) ARA( x, k) 1 2 3 4 5 if if x NILL or key key then k key return x x x then return ARA( left else return ARA( right x, k) x, k) Aranan sayı, k = 13 15 6 18 Kırmızı renkli düğümler arama sırasında ziyaret edilen düğümlerdir. 3 7 17 20 2 4 13

İkili Arama Ağacı Arama (devam )

İkili Arama Ağacı MinDeger Ağaçtaki en küçük elemanı içeren düğümü bulur ve geri döndürür. En küçük elemanı içeren düğüm en soldaki düğümde bulunur. Kökten başlayarak devamlı sola gidilerek bulunur. MINDEGER ( x) 1 2 3 while do x return left[ x] NILL left[ x] x

İkili Arama Ağacı MinDeger (devam ) MinDeger = 2 15 6 18 3 7 17 20 2 4 13

İkili Arama Ağacı MaksDeger Ağaçtaki en büyük elemanı içeren düğümü bulur ve geri döndürür. En büyük elemanı içeren düğüm en sağdaki düğümde bulunur. Kökten başlayarak devamlı sağa gidilerek bulunur. MAKSDEGER ( x) 1 2 3 while do x return right[ x] NILL right[ x] x

İkili Arama Ağacı MaksDeger (devam ) MaksDeger = 20 15 6 18 3 7 17 20 2 4 13

İkili Arama Ağacı SonraGelenEnKucuk Bir düğümün kendinden sonra gelen (kendinden büyük) en küçük değeri yani successor u geriye döndürülür. Kendinden büyük bu değerler, düğümlerin sağ altağaçlarında olduğu için düğümün sağ-alt ağacının olup olmamasına göre algoritma değişiklik gösterir.

İkili Arama Ağacı SonraGelenEnKucuk (devam ) 15 in successor düğümü hangisidir? 15 6 18 3 7 17 20 2 4 13 15 in Successor ı 9

İkili Arama Ağacı SonraGelenEnKucuk (devam ) 13 ün successor düğümü hangisidir? 15 13 ün successor ı 6 18 3 7 17 20 2 4 13 9

İkili Arama Ağacı Ekleme Eklenecek değeri içeren z isimli yeni bir düğüm oluştur. Kökten başlayarak ağaç üzerinde eklenecek sayıyı arıyormuş gibi aşağıya doğru ilerle. Yeni düğüm, aramanın bittiği düğümün çocuğu olmalıdır.

İkili Arama Ağacı Ekleme (devam ) EKLE( T, z) 1 y NILL 2 x root[ T ] 3 while x NILL 4 do y x 5 if key[ z] key[ x] 6 then x left[ x] 7 else x right[ x] 8 p[ z] y 9 if y NILL 10 then root[ T ] z 11 else if key[ z] key[ y] 12 then left[ y] z 13 else right[ y] z 12 Ekle 15 6 18 3 7 17 2 4 13 12 20

İkili Arama Ağacı Ekleme (devam ) Soru: Aşağıdaki ağacı ekleme fonksiyonu kullanarak nasıl oluştururuz? a = new İkiliAramaAgaci(); a.ekle(15); a.ekle(6); a.ekle(3); a.ekle(2); a.ekle(4); a.ekle(7); a.ekle(13); a.ekle(18); a.ekle(17); a.ekle(20); 3 2 4 15 6 18 7 13 17 20 Ekleme sırası size tanıdık geldi mi?

İkili Arama Ağacı Ekleme

İkili Arama Ağacı Silme Silme işlemi diğer işlemlere göre daha karmaşıktır. Silme işleminde 3 durum bulunmaktadır: 1. Silinecek düğümün hiç çocuğu yoksa (yaprak düğüm) 2. Silinecek düğümün 1 çocuğu varsa 3. Silinecek düğümün 2 çocuğu varsa

Durum 1 Yaprak Düğümü Silme Soru: 13 değerine sahip düğüm nasıl sileriz? 15 5 16 23 12 20 10 13 z 18 23 6 7

Durum 1 Yaprak Düğümü Silme Cevap: Düğüm bulunur, kaldırılır ve bağlantısı güncellenir. 15 5 16 23 12 20 10 18 23 6 7

Durum 2 1 Çocuklu Düğüm Silme Soru: 16 değerine sahip düğüm nasıl sileriz? 15 5 16 z 23 12 20 10 13 18 23 6 7

Durum 2 1 Çocuklu Düğüm Silme Cevap: Silinecek düğüm bulunur. Düğümün ailesinin solunda mı yoksa sağında mı olduğu saklanır. Silinecek düğümün çocuğu ile düğümün ailesi arasında bağ kurulur. 15 5 16 z 23 12 20 10 13 18 23 6 7

Durum 2 1 Çocuklu Düğüm Silme Cevap: Silinecek düğüm bulunur. Düğümün ailesinin solunda mı yoksa sağında mı olduğu saklanır. Silinecek düğümün çocuğu ile düğümün ailesi arasında bağ kurulur. 15 5 20 23 12 18 23 10 13 6 7

Durum 2 1 Çocuklu Düğüm Silme

Durum 3 2 Çocuklu Düğüm Silme Soru: 5 değerine sahip düğümü nasıl sileriz? 15 z 5 16 23 12 20 6 y 10 13 18 23 7

Durum 3 2 Çocuklu Düğüm Silme Cevap: 5 in successor u bulunur (sağ alt ağaçtaki en küçük eleman 6). 5 ve 6 nın içerikleri değiştirilir 6 elemanının 1 çocuğu varmış gibi silinir. 15 z 5 16 23 12 20 10 13 18 23 6 y 7

Durum 3 2 Çocuklu Düğüm Silme 15 56 16 23 12 20 10 13 18 23 7

Durum 3 2 Çocuklu Düğüm Silme

Silme 1. ADIM DÜĞÜMÜ BUL current: Silmek için bulunan düğüm parent: current düğümün parent ı

Silme (devam ) DURUM 1 EĞER YAPRAK DÜĞÜMSE

Silme (devam ) DURUM 2 EĞER TEK ÇOCUKLU DÜĞÜMSE

Silme (devam ) DURUM 3 EĞER İKİ ÇOCUKLU DÜĞÜMSE

İkili Arama Ağacı Karmaşıklık Analizi Soru: İkili arama ağacının, arama işlemi için karmaşıklık analiz sonucu nedir?

İkili Arama Ağacı Karmaşıklık Analizi Cevap: İkili arama ağaç işlemlerinin karmaşıklığı O(h) dır. Fakat h ağacın derinliğine bağlıdır. Ağaç dengeli olmazsa O(n) dir. Ağaç dengeli olursa O(logn) dir. Nasıl dengeli yaparız? 1. AVL-ağaçları 2. Splay ağaçları 3. Red-Black ağaçları 4. B ağaçları, B+ agaçları

İkili Arama Ağacı Uygulamaları İkili arama ağacı harita, sözlük gibi birçok uygulamada kullanılır. Anahtar-değer çifti şeklinde kullanılacak sistemler için uygundur. Şehir Bilgi Sistemi: Posta kodu verilip, şehir ismi döndürülür. (posta kodu/ Şehir ismi) Telefon Rehberi: İsim verilir telefon numarası veya adres döndürülür (İsim, Adres/Telefon). Sözlük: Kelime verilir anlamı döndürülür (Kelime, anlam).

İYİ ÇALIŞMALAR

Yararlanılan Kaynaklar Ders Kitabı: Data Structures through JAVA, V.V.Muniswamy Yardımcı Okumalar: Data Structures and Algorithms in Java, Narashima Karumanchi Data Structures, Algorithms and Applications in Java, Sartaj Sahni Algorithms, Robert Sedgewick