YZM 2116 Veri Yapıları

Benzer belgeler
YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

Arasınav Örnek Soruları Bahar 2018

YZM 2116 Veri Yapıları

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ı

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

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

YZM 2116 Veri Yapıları

Ağaç (Tree) Veri Modeli

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

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

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

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

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

Final Sınavı Soruları Bahar 2018

BIP116-H14-1 BTP104-H014-1

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ü

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

Final Sınavı Örnek Soruları Bahar 2018

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

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

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

YZM 2105 Nesneye Yönelik Programlama

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

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

Veri Yapıları. Ağaçlar

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

YZM 3215 İleri Web Programlama

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

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

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

YZM 2108 Yazılım Mimarisi ve Tasarımı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Yrd. Doç. Dr. Caner ÖZCAN

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

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

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

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

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

ALGORİTMA VE PROGRAMLAMA II

BIL222 Veri Yapıları ve Algoritmalar

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

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

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

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

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

YZM 2105 Nesneye Yönelik Programlama

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

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

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

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

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. Kırmızı Siyah Ağaçları Red Black Trees. Bahar 2017 Doç. Dr. Suat Özdemir 1

Arasınav Soruları Bahar 2018

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

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

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

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

BMT207 VERİ YAPILARI DATA STRUCTURE

Alıştırma 1: Yineleme

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Veri Yapıları ve Algoritmalar dönem

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

YMT219 VERİ YAPILARI ÖDEV-1

Teori/Saat Uygulama/Saat Laboratuar/Saat AKTS BLM Dersin Amacı

ALGORİTMA VE PROGRAMLAMA II

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

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

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

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

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

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

ALGORİTMA VE PROGRAMLAMA II

KUYRUKLAR. Doç. Dr. Aybars UĞUR

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

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

YZM 2105 Nesneye Yönelik Programlama

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

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

Graf Veri Modeli. Düğümler kümesi. Kenarlar kümesi

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR

BAĞLAÇLI LİSTELER LINKED LISTS

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

Algoritmalara Giriş 6.046J/18.401J

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

Veri Yapıları Laboratuvarı

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

YZM YAPAY ZEKA DERS#6: REKABET ORTAMINDA ARAMA

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);

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 - 9 Hatırlatmalar Tam İkili Ağaç Eksiksiz İkili Ağaç Dizi Kullanarak İkili Ağaç Gerçekleştirimi Heap, Max Heap, Min Heap Öncelik Kuyruğu HeapSort konusuna değinilecektir.

Hatırlatmalar Tam İkili Ağaç (Full Binary Tree) Eksiksiz İkili Ağaç (Complete Binary Tree) Neydi?

Tam İkili Ağaç (Full Binary Tree) Her bir düğümün (i)net olarak iki çocuk düğüme sahip olduğu ve (ii)yaprak düğümlerin aynı seviyede olduğu ikili ağaçtır. Her düğüm, eşit şekilde sağ ve sol alt-ağaçlara sahiptir. 4

Eksiksiz İkili Ağaç (Complete Binary Tree) Son seviye dışındaki tüm seviyelerin tam (full) olduğu ikili ağaç türüdür. Düğümleri sol taraftan (düğüme göre) doldurulur. Yeni bir derinliğe soldan sağa doğru ekleme başlanır. 5

Eksiksiz İkili Ağaç (Complete Binary Tree) (devam ) 6

SORU DĠZĠ KULLANARAK ĠKĠLĠ AĞAÇ GERÇEKLEġTĠREBĠLĠR MĠYĠZ? 7

Dizi Kullanarak İkili Ağaç Gerçekleştirimi Bellek kullanım tasarrufu sağlar (işaretçi yok vs.). Düğümler arası linkler olmadığı halde, ağaç üzerindeki düğümlerde aile ilişkisi korunur (parent-child). Gezinmeyi basitleştirir. Veriyi Saklama Şekli i. Seviye-seviye (level-by-level) ii. Soldan-sağa (left-to-right) 8

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) Soru: Aşağıdaki ikili ağacı dizide nasıl tutarız? 9

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) Cevap: Kök ü 0 dan başlatarak, sol-sağ kolları her seviyede dizi indisleri şeklinde arttırarak numaralayıp diziye atabiliriz. 10

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) 0 1 2 3 4 5 6 7 8 9 11

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) tree.nodes[index] düğümü ifade etmek üzere Parent-child ilişkisi: Sol çocuk = tree.nodes[2*index+1] Sağ çocuk = tree.nodes[2*index+2] Parent düğüm = tree.nodes[(index-1)/2] (tam sayı bölüm) Yaprak düğümler: tree.nodes[numelements/2] - tree.nodes[numelements-1] 12

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) Örnek: 1 indisli D düğümü için Sol çocuk indisi ([2*index+1]): 3 Sağ çocuk indisi ([2*index+2]): 4 Parent indisi([(index-1)/2]): 0 0 1 2 3 4 5 6 7 8 9 13

Dizi Kullanarak İkili Ağaç Gerçekleştirimi (devam ) Tam veya eksiksiz ikili ağaçlar, diziler ile çok basit ve etkin şekilde gerçekleştirilebilirler. Dizide boş alan kalmaz. Tam tersi durumdaki ikili ağaçlarda mutlaka boş yer kullanmak gerekir. 14

Heap Nedir? Aşağıdaki özelliklere sahip ikili ağaçtır: Özellik 1: Eksiksiz (complete) ikili ağaçtır. Özellik 2 (Heap özelliği): Ebeveyn (parent) düğümün değeri her zaman çocukların değerinden büyük (küçük) veya eşittir. Max Heap: Kök en büyük değere sahiptir. Min Heap: Kök en küçük değere sahiptir. 15

Max ve Min Heap Min Heap Max Heap 16

Heap Gerçekleştirimi 17

Heap Oluşturma Heap h = new Heap(100); h.insert(45); h.insert(35); h.insert(23); h.insert(27); h.insert(21); h.insert(22); h.insert(4); h.insert(19); 27 35 21 45 22 23 4 19

Heap Insert(42) Adım 1: Yeni düğümü seviye-seviye soldansağa olacak şekilde ilk uygun yere ekle. 35 45 23 27 21 22 4 19 42

Heap Insert(42) Adım 2: Eklenen yeni düğümü, ebeveyn ile karşılaştırarak yukarı doğru taşı. Adım 3: Uygun yer bulana kadar Adım 2 tekrarla. 42 35 21 45 22 23 4 19 27

Heap Insert(42) Adım 2: Eklenen yeni düğümü, ebeveyn ile karşılaştırarak yukarı doğru taşı. Adım 3: Uygun yer bulana kadar Adım 2 tekrarla. 35 42 21 45 22 23 4 19 27

Heap Insert Gerçekleştirimi

Max Elemanı Silme (RemoveMax) Adım 1: Son eleman kök eleman yerine taşınır. 45 Örnekte, 27 elemanı köke taşınır. 42 23 35 21 22 4 19 27

Max Elemanı Silme (RemoveMax) Adım 1: Tamamlandı. Ancak, Heap özelliğinin tekrar kurulması gerekiyor. 42 27 23 35 21 22 4 19

Max Elemanı Silme (RemoveMax) Adım 2: Eklenen yeni düğümü, büyük çocuğu ile yer değiştirecek şekilde aşağıya doğru taşı. 42 27 23 35 21 22 4 19

Max Elemanı Silme (RemoveMax) Adım 2: Eklenen yeni düğümü, büyük çocuğu ile yer değiştirecek şekilde aşağıya doğru taşı. 27 42 23 Adım 3: Adım 2 yi tekrarla. 35 21 22 4 19

Max Elemanı Silme (RemoveMax) Adım 2: Eklenen yeni düğümü, büyük çocuğu ile yer değiştirecek şekilde aşağıya doğru taşı. 35 42 23 Adım 3: Adım 2 yi tekrarla. 27 21 22 4 19

Heap RemoveMax Gerçekleştirimi

Heap RemoveMax Gerçekleştirimi

Heap Ağacı Uygulamaları Öncelik Kuyruğu (Priority Queue) Heap Sıralama Algoritması (Heap Sort)

Öncelik Kuyruğu Öncelik kuyrukları, artan ve azalan olmak üzere ikiye ayrılırlar. Diğer veri yapılarında olduğu gibi kuyrukta bulunan elemanlar, string veya integer gibi basit veri türünde olabileceği gibi özelliklere (attribute) sahip bir nesne de olabilir. Öncelik kriterinin ne olacağı kuyruktan kuyruğa değişkenlik gösterir. Kuyruğa eklenen elemanın kendisi veya herhangi bir özelliği, öncelik kriteri olabilir.

Öncelik Kuyruğu (devam ) Örneğin; telefon rehberi uygulamasında, Kuyruktaki her eleman soyad, ad, adres ve telefon numarası özelliklerinden oluşmakta ve kuyruk soyada göre sıralanmaktadır. Öncelik kuyrukları; Dizi Bağlı Liste Binary Heap kullanılarak implemente edilebilir.

Öncelik Kuyruğu (devam ) Öncelik kuyruğunu gerçekleştirmek için Heap gerçekleştirimindeki: o Insert() ve o RemoveMax() fonksiyonlarını aynen veya biraz değişiklikle kullanabiliriz.

Queue İşlem Karmaşıklığı İşlem Dizi Öncelik Kuyruğu Heap Öncelik Kuyruğu Insert O(n) O(logn) Remove O(1) O(logn)

Heap Sort Heap ağacı kullanarak nasıl sıralama yaparız? Adım 1: Heap ağacı oluştur ve sıralanmamış diziyi okuyarak, her bir elemanı ağaca ekle. Adım 2: 1. Ağacın en büyük elemanını oku. 2. Elemanı yeni bir diziye ata. 3. Ağacı yeniden oluştur. 4. İlk 3 adımı ağaçta eleman kalmayana kadar tekrarla.

Heap Sort (devam )

Heap Sort (devam ) Big O karmaşıklığı nedir? O(nlogn)

Örnek Sorular

İ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