DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf ·...

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

Transcript of DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf ·...

Page 1: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

YZM 3207- ALGORİTMA ANALİZİ VE TASARIM

DERS#6: AZALT VE FETHET YÖNTEMİ

Page 2: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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ı

Page 3: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Bir Sabitle Azaltma

• an üstel problemi

– an = an-1.a ise

– F(n) = an problemi özyinelemeli olarak çözülebilir.

Page 4: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Sabit bir Oranla Azaltma

• an üstel problemi

– an = (an/2)2 ise

Page 5: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Değişken Oranla Azaltma

• Öklid’in EBOB algoritması

Page 6: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 7: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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.

Page 8: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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.

Page 9: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 10: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

DFS

• Örnekteki DFS alfabetik olarak ilerlemiştir

Page 11: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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 grafyapısının gösterildiği veri yapısına göre değişir

• Bitişiklik Matrisi iseθ(|V2|)

• Bitişiklik listesi ise θ(|V|+|E|)

– V ve E düğüm ve ayrıt sayısı

Page 12: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 13: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 14: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 15: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Genişlik Öncelikli Arama (BFS)

Page 16: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Genişlik Öncelikli Arama (BFS)

Page 17: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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 θ(|V2|)

– 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ğinikontrol 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

Page 18: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Genişlik Öncelikli Arama (BFS)

Page 19: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

DFS vs. BFS

Page 20: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 21: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 22: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

DFS Çözümü

• Topolojik sıralama probleminin çözümü için dag olmalı

Ders Önkoşul

C1 -

C2 -

C3 C1, C2

C4 C3

C5 C3, C4

Page 23: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

çıkar:

Page 24: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

Sabit Oranla Azaltma

• Genellikle logaritmik zamanlı ve etkin algoritmalar

• Azaltma oranı genellikle 2

– İkili Arama

Page 25: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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

Page 26: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

İkili Arama• K=70

Page 27: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

İkili Arama

• Algoritma etkinliği

– Temel İşlem : Karşılaştırma

– En kötü durum: K’nın dizide bulunamaması

Page 28: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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?

Page 29: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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.

Page 30: DERS#6: AZALT VE FETHET YÖNTEMİaytugonan.cbu.edu.tr/YZM3207/LectureNotes/YZM3207_ders06.pdf · 2017-11-01 · Azalt ve Fethet Algoritmaları •Problemi daha küçük bir örneğine

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: