Algoritmalara Giriş 6.046J/18.401J

Benzer belgeler
Algoritmalara Giriş 6.046J/18.401J

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

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

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

Ara Sınav 1. Algoritmalara Giriş 14 Ekim 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Kitapçık 14

Pratik Ara Sınav 1 Çözümleri

Problem Set 1 Çözümler

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

YZM 2116 Veri Yapıları

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

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

BIL222 Veri Yapıları ve Algoritmalar

Algoritmalara Giriş Ekim 31, 2005 Massachusetts Institute of Technology Professors Erik D. Demaine ve Charles E. Leiserson Dağıtım 19.

Problem Seti 4 Çözümler

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

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

Ü ş ş ö ş ş ş ş ş ö ş ö ö ş ş ö ş ö ö ö ö ş ö ş ş ö ş ş ş ö ş ş ş ş Ç ş Ç ş ş Ö ö ö ş ş ş ö ş ş ö ö ö ö ö ş ö ş ş ş ş ş ş ş ş ş ö ş

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

Algoritmalara Giriş 6.046J/18.401J

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

Arasınav Örnek Soruları Bahar 2018

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ü

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

Ağaç (Tree) Veri Modeli

İÇİNDEKİLER. Mantık Kurallarının Elektrik Devrelerine Uygulanması... 14

Algoritmalara Giriş J/18.401J Ders 15. Dinamik Programlama En uzun ortak altdizi En uygun altyapı Altproblemlerin çakışması

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

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

10.Hafta Minimum kapsayan ağaçlar Minimum spanning trees (MST)

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

Algoritmalara Giriş 6.046J/18.401J DERS 2

Problem Seti 8 Çözümleri

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

VERİ YAPILARI VE PROGRAMLAMA

Algoritmalara Giriş 6.046J/18.401J

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

6.046J/18.401J DERS 7 Kıyım Fonksiyonu (Hashing I) Prof. Charles E. Leiserson

Robot İzleme (Robot Tracing)

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

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

0.1 Küme Cebri. Teorem 1 A ve B iki küme olmak üzere i) (A B) c = A c B c ii) (A B) c = A c B c

YZM 2116 Veri Yapıları

6.046J/18.401J DERS 9. Post mortem (süreç sonrası) Prof. Erik Demaine

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

10. DİREKT ÇARPIMLAR

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

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

13.Konu Reel sayılar

Final Sınavı Soruları Bahar 2018

Algoritmalara Giriş. Prof. Erik Demaine. November 16, 2005 Copyright by Erik D. Demaine and Charles E. Leiserson L18.1

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

Yrd. Doç. Dr. Caner ÖZCAN

T.C. DÜZCE ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BMT103 ELEKTRİK DEVRE TEMELLERİ DERSİ LABORATUVARI DENEY NO: 5

Algoritmalara Giriş. Prof. Erik Demaine. September 26, 2005 Copyright Erik D. Demaine and Charles E. Leiserson L5.1

Algoritmalar. DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen in algoritması

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

KÜMELER. İyi tanımlanmış nesneler topluluğuna küme denir. Bir küme, birbirinden farklı nesnelerden oluşur. Bu nesneler somut veya soyut olabilir.

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

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

YZM YAPAY ZEKA DERS#4: BİLGİSİZ ARAMA YÖNTEMLERİ

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

Pratik Final Sınavı Çözümleri 2

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

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

12.Konu Rasyonel sayılar

Dr. Fatih AY Tel: fatihay@fatihay.net

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

127 - Twoing Algoritması ile Sınıflandırma Kalp Hastalığı Uygulaması MEHMET AKİF ERSOY ÜNİVERSİTESİ İLHAN UYSAL MEHMET BİLEN SAMİ ULUKUŞ


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

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER

Genel Graf Üzerinde Mutlak 1-merkez


10.Konu Tam sayıların inşası

Tanım 2.1. X boş olmayan bir küme olmak üzere X den X üzerine bire-bir fonksiyona permütasyon denir.

için Örnek 7.1. simetri grubunu göz önüne alalım. Şu halde dür. Şimdi kalan sınıflarını göz önüne alalım. Eğer ve olarak alırsak işlemini kullanarak

BIP116-H14-1 BTP104-H014-1

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

TOPLAMSALLIK ve ÇARPIMSALLIK TEOREMLERİNİN İNCELENMESİ

4.3. Türev ile İlgili Teoremler

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

Veri Yapıları. Ağaçlar

Bu kısımda işlem adı verilen özel bir fonksiyon çeşidini ve işlemlerin önemli özelliklerini inceleyeceğiz.

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

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

BMT 206 Ayrık Matematik. Yük. Müh. Köksal GÜNDOĞDU 1

DEVRE VE SİSTEM ANALİZİ ÇALIŞMA SORULARI

İKİNCİ DERECEDEN BİR BİLİNMEYENLİ DENKLEMLER,, olmak üzere 2. ÜNİTE. İKİNCİ DERECEDEN DENKLEMLER, EŞİTSİZLİKLER ve FONKSİYONLAR

T.C. DÜZCE ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BMT103 ELEKTRİK DEVRE TEMELLERİ DERSİ LABORATUVARI DENEY NO: 4

Algoritma Geliştirme ve Veri Yapıları 10 Graf Veri Modeli. Mustafa Kemal Üniversitesi

Algoritmalar. Ders 14 En Kısa Yollar II Bellman-Ford algoritması Floyd-Warshall algoritması

Algoritmalara Giriş Ekim 10, 2005 Massachusetts Institute of Technology Professors Erik D. Demaine ve Charles E. Leiserson. Problem Seti 3 Çözümler

MATM 133 MATEMATİK LOJİK. Dr. Doç. Çarıyar Aşıralıyev

MAK Makina Dinamiği - Ders Notları -1- MAKİNA DİNAMİĞİ

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

BÖLÜM I MATEMATİK NEDİR? Matematik Nedir? 14

Transkript:

Algoritmalara Giriş 6.046J/.40J DERS Veri Yapılarının Genişletilmesi Dinamik Seviye İstatistikleri Metodoloji Aralık Ağaçları Prof. Charles E. Leiserson

Dinamik Seviye İstatistikleri OS-SEÇ(i,S) : dinamik S kümesindeki i ninci elemanı döndürür. OS-RÜTBE (i,s) : S kümesinin sıralanmış elemanları arasında x S in rankını döndürür. Fikir : S kümesi için kırmızı siyah ağacı kullanın, ama altağaç büyüklüklerini düğümlerde saklayın. Düğümlerin Simgelemi : anahtar büyüklük

OS-Ağacı Örneği M 9 C 5 P 3 A F 3 N Q D H büyüklük[x] = büyüklük[sol[x]] + büyüklük[sağ[x]] +

Seçim Gerçekleştirme Hilesi : BOŞLUK için büyüklük[boşluk] = 0 gibi bir gözcü (kukla kayıt) kullanın. OS-SEÇ(x,i) x kökenli alt ağacın i ninci küçük elemanı. k büyüklük[sol[x]] + k = rütbe(x) eğer i= k ise x i döndür. eğer i< k ise OS-SEÇ(sol[x], i) i döndür. diğer durumlarda OS-SEÇ(sağ[x], i k) i döndür. (Kitaptaki OS-Rütbe)

Örnek OS-SEÇ (kök, 5) i=5 k=6 M 9 i=5 k=2 C 5 P 3 A F 3 i=3 k=2 N Q D H i= k= Çalışma Zamanı = O(h) = O(lg n) (kırmızı siyah ağaçlar için)

Veri Yapısının Bakımı S. Neden altağaç büyüklükleri yerine düğümlerdeki rankları (rütbeleri) saklamıyoruz? C. Kırmızı Siyah Ağaç değiştirildiğinde, rankları düzenlemek zor olur. Düzenleme İşlemleri : EKLE ve SİL Strateji : Ekleme veya silme işlemi sırasında altağaç büyüklüklerini güncelleyin.

Ekleme Örneği Ekle ( K ) M 0 C 6 P 3 A F 4 N Q D H 2 K

Yeniden Dengelemeyi Ele Almak YD-EKLE ve YD-SİL de dengenin sağlanması için kırmızı siyah ağacı düzenlemeye ihtiyaç duyabilir. Yeniden Renklendirmeler: Altağaç büyüklüklerinde değişime neden olmaz. Döndürmeler: Altağaç büyüklüklerini O() zamanda düzeltir. ÖRNEK : C E 6 4 7 C 6 E 8 7 3 3 4 YD-EKLE ve YD-SİL hala O(lg n) zamanda çalışıyor.

Veri Yapısının Genişletilmesi Metodoloji: (örn. Sı ralı istatistik ağaçları). Bir veri yapısı seçin. (kırmızı siyah ağaçları) 2. Veri yapısında saklanacak ek bilgileri belirleyin. (alt ağaç büyüklükleri) 3. Bu bilgilerin düzenleme işlemleri için sağlanabileceğini doğrulayın. (YD-EKLE, YD-SİL döndürmeleri unutmayın ) 4. Bilgileri kullanan yeni dinamik küme işlemleri geliştirin. (OS- SEÇ, OS-RÜTBE) Bu basamaklar yol göstericidir, mecburi değil.

Aralık Ağaçları Amaç: Zaman aralıkları gibi dinamik aralık kümeleri oluşturmak. i=[7,0] düşük[i]=7 0 = yüksek[i] 5 7 9 5 22 4 8 Sorgu: Verilen bir i sorgu aralığı için, kümede, i ile örtüşen bir aralık bulun.

Takip Eden Metodoloji. Altta yatan bir veri yapısı bulun. Kırmızı-siyah ağaç düşük (sol) son noktasında anahtarlanır. 2. Veri yapısında tutulacak ek bilgiyi belirleyin. Her düğüm x de, x köklü altağacın en büyük değeri m(x) i ve anahtara karşılık gelen aralık int(x) i saklayın. int m

Aralık Ağacı Örneği 7, 9 5, 22, 4,8 8 5, yüksek[int[x]] 7,0 0 m[x] = en büyük m[sol[x]] m[sağ[x]]

Düzeltme İşlemleri 3. Bu bilginin düzenleme işlemleri sırasında sağlanabileceğini doğrulayın. EKLE : aşağıya doğru yolun üzerindeki m leri onarın. Döndürmeler --- Düzeltme = O() her bir döndürme için:,5 30 6,20 30 6,20 30 9 30,5 9 30 4 Toplam EKLEME süresi = O(lg n); SİLME de benzer. 4 9

Yeni İşlemler 4. Bilgiyi kullanan yeni dinamik küme işlemleri geliştirin. ARALIK-ARAMA(i) x kök her ne zaman x BOŞLUK ve (düşük[i]>yüksek[int[x]] veya düşük[int[x]]>yüksek[i]) yap i ve int[x] çakışmasın eğer sol[x] BOŞLUK ve low[i] m[sol[x]] ise x sol[x] değilse x sağ[x] x i döndür.

Örnek : Aralık Arama([4,6]) x 7, 9 5, 22, 4,8 8 5, x kök [4, 6] ve [7, 9] çakışmaz. 7,0 0 4 x sol[x]

Örnek : Aralık Arama([4,6]) 7, 9 x 5, 22, 4,8 8 5, 7,0 0 [4, 6] ve [5, ] çakışmaz. 4 > 8 x sağ[x]

Örnek : Aralık Arama([4,6]) 7, 9 5, 22, 4,8 8 x 5, 7,0 0 [4, 6] ve [5, ] çakıştı. [5, ] i döndür.

Örnek 2 : Aralık Arama([2,4]) x 7, 9 5, 22, 4,8 8 5, x kök [2, 4] ve [7, 9] çakışmaz. 7,0 0 2 x sol[x]

Örnek 2 : Aralık Arama([2,4]) 7, 9 x 5, 22, 4,8 8 5, 7,0 0 [2, 4] ve [5, ] çakışmaz. 2 > 8 x sağ[x]

Örnek 2 : Aralık Arama([2,4]) 7, 9 5, 22, 4,8 8 x 5, 7,0 0 [2, 4] ve [5, ] çakışmaz. 2 > 0 x sağ[x]

Örnek 2 : Aralık Arama([2,4]) 7, 9 5, 22, 4,8 8 5, 7,0 0 x x = BOŞLUK [2, 4] ile çakışan herhangi bir aralık yok.

Çözümleme Zaman = O(y) = O(lg n) ; Aralık Arama, basit bir yol izlediğinden, her seviyede sabit iş yapmakta. Çakışan bütün aralıkları listeleyin: Ara, listele, sil, tekrarla. Bunları en sonda tekrar ekleyin. Zaman = O(k lg n); k çakışan aralıkların toplam sayısı. Bu çıktı - duyarlı sınırdır. Şu ana kadarki en iyi algoritma: O (k + lg n)

Doğruluk Teorem. xdüğümünün sol altağacındaki aralıklar L, sağ alt ağacındaki aralıklar ise R olsun. Eğer arama sağa gider ise, { i L: i, i ile çakışır} =. Eğer arama sola gider ise, { i L: i, i ile çakışır} = {i R: i, i ile çakışır} = Başka bir deyişle, 2 çocuktan sadece ini almak her zaman güvenlidir: ya bir şeyler buluruz, ya da bulunacak bir şey yoktur.

Doğruluğun İspatı İspat. Aramanın önce sağa gittiğini varsayın. Eğer sol[x] = BOŞLUK ise, işimiz tamam, L =. Aksi halde, kod, düşük[i]>m[sol[x]] olması gerektiğini dikte ediyor. m[sol[x]] in değeri, j L olan bir aralığın son noktasına denk gelmektedir ve L deki herhangi başka bir aralık yüksek[j] den daha büyük bir yüksek son noktaya sahip değildir. high[j] = m[left[x]] Ayrıca, { i L: i, i ile çakışır} =. j i low(i)

Doğruluğun İspatı (Devamı) Aramanın önce sola gittiğini varsayın ve { i L: i, i ile çakışır} = olduğunu varsayın. Bu durumda, kod, j L için düşük[i] m[sol[x]] = yüksek[j] söylüyor. j L olduğu sürece, i ile çakışmaz ve yüksek[i]<düşük[j] olur. Ancak, ikili arama ağacı kuralı, bütün i R için, düşük[j] düşük[i] olduğunu söylüyor. Öyleyse, {i R: i, i ile çakışır} =. i j i