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

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

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

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

Final Sınavı Soruları Bahar 2018

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

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ı

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

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

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

Ağaç (Tree) Veri Modeli

BIL222 Veri Yapıları ve Algoritmalar

Final Sınavı Örnek Soruları Bahar 2018

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

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

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

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

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

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

YZM 2116 Veri Yapıları

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

Veri Yapıları. Ağaçlar

AĞAÇ-TREE VERİ YAPISI

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

Arasınav Örnek Soruları Bahar 2018

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

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

Arasınav Soruları Bahar 2018

Problem Seti 4 Çözümler

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

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

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

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

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

Yrd. Doç. Dr. Caner ÖZCAN

Binary Tree nedir?uygulamas nasl yaplr?

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

Veri Yapıları ve Algoritmalar dönem

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

BIP116-H14-1 BTP104-H014-1

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

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

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

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

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

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Ü

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

İçerik: Graflar. Tanım. Gösterim. Dolaşma Algoritmaları. Yönlü ve yönsüz graflar Ağırlıklı graflar. Komşuluk Matrisi Komşuluk Listesi

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

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

YZM 2116 Veri Yapıları

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

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İ

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

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

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

Alıştırma 1: Yineleme

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

Yrd. Doç. Dr. Caner ÖZCAN

AEGEE-Eskişehir Online Web Yönetim Paneli ( WEBBY ) Yardım Dökümanı

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

MICROSOFT WORD Şekil 1 TABLO HAZIRLAMA : Word 2002/II TAB AYARLARI :

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

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

Algoritmalara Giriş Eylül 21, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Çalışma notu 6

Dengeli Arama Ağaçları (Balanced Search Tree)

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

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ü

YZM 2116 Veri Yapıları

Dengeli Arama Ağaçları (Balanced Search Tree)

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

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

EXISTS VE NOT EXISTS fonksiyonları

Çok Yollu Ağaçlar (Multi-Way Trees)

TRAKYA BİRLİK WEBSİTE YÖNETİM PANELİ. Kullanıcı Dokümantasyonu

Algoritmalara Giriş 6.046J/18.401J

Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı. Mustafa Kemal Üniversitesi

Skip List veri yapısında Seviye Optimizasyonu

Anadolu Üniversitesi Endüstri Mühendisliği Bölümü İST328 Yöneylem Araştırması 2 Dersi Bahar Dönemi. Hazırlayan: Doç. Dr.

Q29.1 Dairesel bir halka şekilde görüldüğü gibi sabit bir manyetik alan içerisine yerleştiriliyor.buna göre indüksiyon emk için ne söylenebilir?

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

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

Algoritmalar. Çizge Algoritmaları. Bahar 2017 Doç. Dr. Suat Özdemir 1

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

Azalt ve Fethet Algoritmaları

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

YZM 3217 YAPAY ZEKA DERS#5: BİLGİLİ ARAMA YÖNTEMLERİ

Akademik Rapor Hazırlama ve Yazışma Teknikleri

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

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

İçindekiler. Glossary

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Algoritmalara Giriş 6.046J/18.401J

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

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

Transkript:

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

İkili Arama Ağaçları Binary Search Tree (BST) İkili arama ağaçları dinamik veri işlemlerini gerçekleştiren veri yapılarıdır Search, Minimum, Maximum, Predecessor, Successor, Insert, Delete Sözlükler, önceliklendirilmiş kuyruklar BST ile gerçekleştirilebilir Temel işlemler ağaç yüksekliği ile orantılı bir zamanda tamamlanabilir O(h) En kötü durum O(n) 56 26 200 18 28 190 213 12 24 27 Bahar 2016 Doç. Dr. Suat Özdemir 2

İkili Arama Ağaçları - Gösterim Düğümlerden oluşan bağlı bir veri yapısı olarak gösterilebilir root(t) ağacın kökünü gösterir Her düğüm aşağıdaki alanlara sahiptir key left sol çocuğu gösteren pointer right sağçocuğu gösteren pointer p parenti gösteren pointer. p[root[t]] = NIL Bahar 2016 Doç. Dr. Suat Özdemir 3

İkili Arama Ağaçları BST Özelliği Ağaçta bulunan tüm düğümler aşağıda tanımlanmış olan BST özelliğini sağlamak zorundadırlar y in left subtree of x, then key[y] key[x]. y in right subtree of x, then key[y] key[x]. 56 26 200 18 28 190 213 12 24 27 Bahar 2016 Doç. Dr. Suat Özdemir 4

İkili Arama Ağaçları Sıralı yürüme BST özelliği sayesinde ağaç üzerindeki tüm düğümler sıralı olarak yazdırılabilir (küçükten büyüğe). Sıralı yürüme - In order tree walk Çalışma zamanı O(n) Inorder-Tree-Walk (x) 1. if x NIL 2. then Inorder-Tree-Walk(left[p]) 3. print key[x] 4. Inorder-Tree-Walk(right[p]) 56 26 200 18 28 190 213 12 24 27 Bahar 2016 Doç. Dr. Suat Özdemir 5

İkili Arama Ağaçları Arama Tree-Search(x, k) 1. if x = NIL or k = key[x] 2. then return x 3. if k < key[x] 4. then return Tree-Search(left[x], k) 5. else return Tree-Search(right[x], k) Bahar 2016 Doç. Dr. Suat Özdemir 6

İkili Arama Ağaçları Arama Iterative-Tree-Search(x, k) 1. while x NIL and k key[x] 2. do if k < key[x] 3. then x left[x] 4. else x right[x] 5. return x Artımlı arama çoğu bilgisayarda çok daha hızlı çalışır Bahar 2016 Doç. Dr. Suat Özdemir 7

İkili Arama Ağaçları Max/Min BST özelliğine göre Minimum en sol çocukta Maximum en sağ çocukta yer alır Tree-Minimum(x) Tree-Maximum(x) 1. while left[x] NIL 1. while right[x] NIL 2. do x left[x] 2. do x right[x] 3. return x 3. return x Bahar 2016 Doç. Dr. Suat Özdemir 8

İkili Arama Ağaçları Önceki/Sonraki X in sonraki (successor) düğümü y ağaç içindeki key[y] değeri key[x] den büyük olan en küçük değere sahip düğümdür En büyük değere sahip düğümün sonraki düğümü NIL dir Sonraki düğümü arama işleminde iki durum vardır: Eğer x in bir sağ alt ağacı varsa: Bu durumda sağ alt ağacın en küçük değere sahip düğümü x in sonraki düğümüdür Eğer x in bir sağ alt ağacı yoksa: Ağaçta sola üste doğru çıkarken anahtar değerleri küçülmektedir Çıkabildiğin kadar sol üst ağaçta yukarı çık Çıkamadığın düğümün parenti x in sonraki düğümüdür Bahar 2016 Doç. Dr. Suat Özdemir 9

İkili Arama Ağaçları Önceki/Sonraki Tree-Successor(x) 1. if right[x] NIL 2. then return Tree-Minimum(right[x]) 3. y p[x] 4. while y NIL and x = right[y] 5. do x y 6. y p[y] 7. return y 56 26 200 18 28 190 213 12 24 27 Önceli için işlemler bunun tersidir. Çalışma zamanı O(h) Bahar 2016 Doç. Dr. Suat Özdemir 10

İkili Arama Ağaçları Ekleme BST nin tuttuğu dinamik seti değiştirir Eklenen her değer BST yi korumak zorundadır Ekleme, silmeye göre çok daha kolaydır 56 26 200 18 28 190 213 Tree-Insert(T, z) 1. y NIL 2. x root[t] 3. while x NIL 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 = NIL 10. then root[t] z 11. else if key[z] < key[y] 12. then left[y] z 13. else right[y] z 12 24 27 Bahar 2016 Doç. Dr. Suat Özdemir 11

İkili Arama Ağaçları Ekleme Satır 1-2 başlangıç işlemleri O(1) zaman Satır 3-7 deki while döngüsü parent y yi tutarak eklenecek olan z düğümü için yer arar Bu işlem O(h) zaman alır Satır 8-13 ekleme işlemi O(1) zaman Ekleme işlemi toplam O(h) zamanda tamamlanır Tree-Insert(T, z) 1. y NIL 2. x root[t] 3. while x NIL 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 = NIL 10. then root[t] z 11. else if key[z] < key[y] 12. then left[y] z 13. else right[y] z Bahar 2016 Doç. Dr. Suat Özdemir 12

İkili Arama Ağaçları Silme Silme işleminde sürekli aşağıdaki üç durum oluşur: if x has no children case 0 then remove x if x has one child case 1 then make p[x] point to child if x has two children (subtrees) case 2 then swap x with its successor perform case 0 or case 1 to delete it Silme işlemi toplam O(h) zamanda tamamlanır Bahar 2016 Doç. Dr. Suat Özdemir 13

Tree-Delete(T, z) /* Determine which node to splice out: either z or z s successor. */ 1. if left[z] = NIL or right[z] = NIL 2. then y z 3. else y Tree-Successor[z] /* Set x to a non-nil child of y, or to NIL if y has no children. */ 4. if left[y] NIL 5. then x left[y] 6. else x right[y] /* y is removed from the tree by manipulating pointers of p[y] and x */ 7. if x NIL 8. then p[x] p[y] /* Continued on next slide */ Bahar 2016 Doç. Dr. Suat Özdemir 14

Tree-Delete(T, z) (Contd. from previous slide) 9. if p[y] = NIL 10. then root[t] x 11. else if y left[p[y]] 12. then left[p[y]] x 13. else right[p[y]] x /* If z s successor was spliced out, copy its data into z */ 14. if y z 15. then key[z] key[y] 16. copy y s satellite data into z. 17. return y Bahar 2016 Doç. Dr. Suat Özdemir 15

İkili Arama Ağaçları Silme (4 silinecek) 6 6 2 8 2 8 1 4 1 4 3 3 Bahar 2016 Doç. Dr. Suat Özdemir 16

İkili Arama Ağaçları Silme (4 silinecek) 6 6 2 8 2 8 1 4 1 3 3 Bahar 2016 Doç. Dr. Suat Özdemir 17

İkili Arama Ağaçları Silme (2 silinecek) 6 6 2 8 2 8 1 5 1 5 3 3 4 4 Bahar 2016 Doç. Dr. Suat Özdemir 18

İkili Arama Ağaçları Silme (2 silinecek) 6 6 2 8 32 8 1 5 1 5 3 4 4 Bahar 2016 Doç. Dr. Suat Özdemir 19