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

Benzer belgeler
Azalt ve Fethet Algoritmaları

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

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

YZM 2116 Veri Yapıları

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

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

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

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

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

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

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

BIP116-H14-1 BTP104-H014-1

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

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

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

Ağaç (Tree) Veri Modeli

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

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

Örnek Arasınav Soruları Güz 2017

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

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

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

YZM 2116 Veri Yapıları

VERİ YAPILARI VE PROGRAMLAMA

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

Arasınav Örnek Soruları Bahar 2018

Algoritmalara Giriş 6.046J/18.401J

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

9.Hafta Veri sıkıştırma ve Aç gözlü algoritmalar

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

BMB204. Veri Yapıları Ders 11. Çizgeler (Graph) Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

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

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

{\} /\ Suhap SAHIN Onur GÖK

YZM 2116 Veri Yapıları

11.Hafta En kısa yollar I-II-III Devam. Negatif Ağırlıklı En Kısa Yollar Doğruluk Çözümleme

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İ

Arama Algoritmaları ile Gerçek Dünya Örnekleri

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ü

Alıştırma 1: Yineleme

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

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

3.Hafta Master Teorem ve Böl-Fethet Metodu

köşe (vertex) kenar (edg d e)

YZM 2116 Veri Yapıları

BMT207 VERİ YAPILARI DATA STRUCTURE

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

YZM YAPAY ZEKA DERS#6: REKABET ORTAMINDA ARAMA

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

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

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

ALGORİTMA VE PROGRAMLAMA I

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

Veri Yapıları Laboratuvarı

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

YZM 2116 Veri Yapıları

ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

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

Genel Graf Üzerinde Mutlak 1-merkez

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

Pratik Ara Sınav 1 Çözümleri

Algoritmalar ve Karmaşıklık

Final Sınavı Soruları Bahar 2018

YZM 2116 Veri Yapıları

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

BIL222 Veri Yapıları ve Algoritmalar

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

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

Yrd. Doç. Dr. Caner ÖZCAN

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

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

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

VERİ YAPILARI VE PROGRAMLAMA

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

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

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

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

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

BLM-431 YAPAY ZEKA. Ders-3 Durum Uzayında Arama. Yrd. Doç. Dr. Ümit ATİLA

BLM 210 PROGRAMLAMA LABORATUVARI II PROJELERİ

YÖNEYLEM ARAŞTIRMASI - III

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

MAT223 AYRIK MATEMATİK

Veri Yapıları. Ağaçlar

KARAKTER DİZGİLERİ, BAĞINTILAR, FONKSİYONLAR KESİKLİ MATEMATİKSEL YAPILAR

VERİ YAPILARI DATA STRUCTURE GİRİŞ

MAT223 AYRIK MATEMATİK

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Ü

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

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

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

Transkript:

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

Azalt ve Fethet Algoritmaları Problemi daha küçük bir örneğine çevir: Küçük örneği çöz Çözümü asıl probleme genişlet 3 tipi vardır: Bir sabitle azalt (Genellikle 1) Eklemeli Sıralama (Insertion Sort) Topolojik Sıralama (Topological Sort) Permütasyon, alt küme oluşturma algoritmaları Sabit bir oranla azalt (Genellikle yarıya) İkili Arama (Binary Search) Değişken boyutla azalt Öklid algoritması

Bir Sabitle Azaltma a n üstel problemi a n = a n-1.a ise F(n) = a n problemi özyinelemeli olarak çözülebilir.

Sabit bir Oranla Azaltma a n üstel problemi a n = (a n/2 ) 2 ise

Değişken Oranla Azaltma Öklid in EBOB algoritması

Eklemeli Sıralama En kötü durum: Dizinin ters sıralı olması En iyi durum: Dizinin sıralı olması Ortalama durum: Dağınık dizi

DFS - BFS Etraflı arama bir çizgenin Tüm düğümlerini ve ayrıtlarını sistematik olarak gezen iki önemli algoritmada da uygulanabilir Depth First Search - DFS (Önce Derinlik Arama) Breadth First Search BFS (Önce Genişlik Arama) Bu algoritmalar çizge yapılarının kullanıldığı yapay zeka algoritmaları, Operations Research (Yöneylem Araştırması) gibi algoritmalar için oldukça kullanışlıdır. Ayrıca bağlantı, çevrim gibi temel çizge özelliklerinin incelenmesinde oldukça etkin yöntemlerdir.

Derinlik Öncelikli Arama (DFS) DFS bir çizgeyi dolaşmaya istenen bir düğümden başlar. Başlangıç düğümünü «Geçildi», «Ziyaret Edildi» olarak işaretler. Her iterasyonda bulunduğu düğümün bitişik bir düğümüne geçer Birden fazla bitişik düğüm varsa belirlenen kurala göre geçer En yakın, en uzak, alfabetik olarak vs. Bu işlem tüm komşuları ziyaret edilmiş bir düğüme rastlayana kadar devam eder (Dead End) Dead End de, DFS bir önceki düğüme döner ve buradan ziyaret edilmemiş başka bir bitişik düğüme geçmeyi dener Başlangıç düğümüne geri döndüğünde algoritma sonlanır Eğer ziyaret edilmemiş düğüm kaldıysa algoritma o düğümden tekrar başlatılır.

DFS DFS işlemlerini takip etmek için yığın (stack) yapısı kullanmak uygundur. İlk kez ziyaret edilen düğüm yığına eklenir. Bir düğüm «Dead end» olduğunda yığından kaldırılır. DFS bir ormanı oluşturmak için de kullanışlıdır: İlk düğüm bir ormanın ilk ağacının köküdür Ziyaret edilmemiş bir düğüme erişildiğinde, erişildiği düğüme çocuk olarak eklenir Bu tür bir ayrıta «ağaç ayrıtı» (tree edge) denir Bu ayrıtlar ormanı oluşturur Algoritma bir DFS ormanında ebeveyninden önceki atalarına doğru olan bir ayrıta rastlayabilir Bu tür ayrıta «geri ayrıt»(back Edge) denir

DFS Örnekteki DFS alfabetik olarak ilerlemiştir

DFS Sözde kodunun yalın olması DFS nin sofistike bir algoritma olmadığını göstermez Algoritmanın gücü ve etkinliği algoritma hareketlerinin bitişiklik matrisi yada bitişiklik listesi üzerinde daha iyi anlaşılır DFS nin etkinliği graf yapısının gösterildiği veri yapısına göre değişir Bitişiklik Matrisi ise θ( V 2 ) Bitişiklik listesi ise θ( V + E ) V ve E düğüm ve ayrıt sayısı

DFS DFS de iki türlü düğüm sıralaması vardır: Bir düğüme ilk kez erişildiğinde (Push) Düğüm «dead end» olduğunda (Pop) DFS bir çizgenin bağlantılılığını ve çevrimselliğini kontrol etmek için kullanışlıdır: Algoritma durduğunda tüm düğümler ziyaret edildiyse çizge bağlantılıdır. Algoritmada bir geri ayrıt bulunduysa çizge çevrimseldir.

Genişlik Öncelikli Arama (BFS) DFS «cesurca» ilerleyen bir algoritma iken BFS dikkatli ilerleyen bir algoritmadır DFS her adımda başlangıç düğümünden mümkün olduğunca uzağa gitmeye çalışır. BFS her adımda başlangıç düğümünün bitişik düğümlerine gitmeyi hedefler. BFS başlangıç düğümüne bitişik tüm düğümleri belirlenen sırayla gezer Ardından iki ayrıt uzaklıktaki tüm düğümleri sırayla gezer Başlangıç düğümüne bağlı tüm düğümler ziyaret edilene kadar algoritma devam eder

Genişlik Öncelikli Arama (BFS) BFS işlemlerini takip etmek için kuyruk yapısı uygundur Başlangıç düğümü eklenerek kuyruk başlatılır Her bitişik komşuya geçildiğinde «Ziyaret edildi» diye işaretlenip kuyruğa eklenir İlk eklenen düğüm ilk çıkar BFS de bir ormanı oluşturmak için de kullanışlıdır İlk düğüm bir ormanın ilk ağacının köküdür Ziyaret edilmemiş bir düğüme erişildiğinde, erişildiği düğüme çocuk olarak eklenir Bu tür bir ayrıta «ağaç ayrıtı» (tree edge) denir Bu ayrıtlar ormanı oluşturur Algoritma bir BFS ormanında ebeveyninden önceki atalarına doğru olan bir ayrıta rastlayabilir Bu tür ayrıta «Çapraz ayrıt»(cross Edge) denir

Genişlik Öncelikli Arama (BFS)

Genişlik Öncelikli Arama (BFS)

Genişlik Öncelikli Arama (BFS) BFS nin etkinliği DFS gibidir Graf yapısının gösterildiği veri yapısına göre değişir Bitişiklik Matrisi ise θ( V 2 ) Bitişiklik listesi ise θ( V + E ) V ve E düğüm ve ayrıt sayısı DFS den farklı olarak tek tip sıralama yapabilir Kuyruk yapısının FIFO özelliği sebebiyle BFS de bir grafın bağlantılılığını ve çevrimselliğini kontrol etmek için kullanışlıdır Algoritma durduğunda tüm düğümler ziyaret edildiyse graf bağlantılıdır Algoritmada bir geri ayrıt bulunduysa graf çevrimseldir. DFS ile yapılamayacak olan Verilen iki düğüm arası minimum ayrıttan oluşan yolu bulabilir

Genişlik Öncelikli Arama (BFS)

DFS vs. BFS

Topolojik Sıralama Topolojik Sıralama Önkoşul, gereklilik gibi kısıtlılıklar doğrultusunda yapılması gereken sıralama Yönlü Çizgeler- Directed graph (Digraph) Tüm sınır yönleri belirli Yönlü Yönsüz Çizge Farkı Yönlü Çizge: Komşuluk matrisleri simetrik olmak zorunda değil Yönlü Çizge: Bir ayrıtın sadece bir karşı düğümü vardır

Topolojik Sıralama Bir öğrencinin alması gereken 5 ders var: Derslerin bazıları ön koşullu Bir dönemde sadece bir ders alabiliyor Dersleri hangi sırayla almalı? Ders Önkoşul C1 - C2 - C3 C1, C2 C4 C3 C5 C3, C4

DFS Çözümü Ders Önkoşul C1 - C2 - C3 C1, C2 C4 C3 C5 C3, C4 Topolojik sıralama probleminin çözümü için dag olmalı

Bir Azaltma Çözümü Her adımda kendisine gelen ayrıt olmayan düğümü çıkar:

Sabit Oranla Azaltma Genellikle logaritmik zamanlı ve etkin algoritmalar Azaltma oranı genellikle 2 İkili Arama

İkili Arama Sıralı bir dizide K elemanının aranması Dizinin orta (m) elemanı seçilir K ile m karşılaştırılır K ile m eşitse bulunmuş olur Eşit değilse; K < m isi dizinin ilk yarısı» K > m ise dizinin ikinci yarısı için işlem tekrar eder.

İkili Arama K=70

İkili Arama Algoritma etkinliği Temel İşlem : Karşılaştırma En kötü durum: K nın dizide bulunamaması

Sahte Bozuk Para Problemi Aynı görünüme sahip n tane bozuk para var. Herhangi bir terazi aracılığıyla iki farklı bozuk paranın ağırlıklarını karşılaştırmak mümkün. Sahte olan bozuk para, gerçek bozuk paralardan daha hafif. Sahte bozuk parayı nasıl belirleyebiliriz?

Sahte Bozuk Para Problemi n tane bozuk parayı n/2 luk iki parçaya ayır: Eğer tek sayıda bozuk para varsa, bir tanesini ayır: İki parçayı «terazi» de tart. Eğer, her iki yük eşit ise, ayırdığın tek bozuk para sahtedir. Aksi takdirde, daha hafif olan set üzerinde aramaya aynı biçimde devam et.

Sahte Bozuk Para Problemi Tasarım tekniğimiz? Böl ve yönet mi? Azalt ve fethet mi? En kötü durum senaryosu (Ağırlık ölçü sayısı): n/3 şeklinde parçalarsak: