Çizge Algoritmalari 6. ders.

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yapay Zeka DR.KORHAN KAYIŞLI.
YAPAY ZEKA Yrd. Doç. Dr. Rembiye Kandemir
BPR152 ALGORİTMA VE PROGRAMLAMA - II
YAPAY ZEKA ÖDEV - 1 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
Graf.
Algoritmalar En kısa yollar I En kısa yolların özellikleri
Lokal Arama Algoritmaları
En Küçük Yol Ağacı (Minimum Spanning Tree)
Çizge Algoritmaları.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Ders Notu – 3.2 Bilgisiz (Kör) Arama Yöntemleri
GRAPHS ÖZET.
BİL551 – YAPAY ZEKA BİLGİSİZ ARAMA YÖNTEMLERİ
Arama ile sorun çözme Ders 3.
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
4. KONTROL VE DÖNGÜ KOMUTLARI
Çizge Algoritmaları Ders 2.
DÖNGÜ DEYİMLERİ Programın belirli bir kesiminin birden fazla tekrarlanması işlemine DÖNGÜ denir. Bir değişken belirli bir değerden başlayıp, son değeri.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
O R T L G İ M A A Ve Akış şemaları.
İleri Algoritmalar 1. ders.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Ağırlıksız ikili eşleştirme
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Çizgeler Çizge G=(V,E), ikilisine denir, burada V sonlu bir kümedir, E ise bu kümenin elemanları arasında ikili bir bağıntıdır. V kümesine G çizgesinin.
Algoritmalar II Ders 14 Çizgelerde tüm ikililer arasında en kısa yollar.
Maksimum akış.
Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi
MAKSİMUM AKİŞ PROBLEMİ
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
En Kısa Yol Problemleri (Shortest Path Problems)
Derinlik öncelikli arama (Depth-first Search(DFS))
İleri Algoritma Analizi
Ağırlıksız ikili eşleştirme
9. Ders Tüm ikililer arasında en kısa yollar
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizge Algoritmalari 5. ders.
TRİGONOMETRİ. 1-AÇI,YÖNLÜ AÇI, YÖNLÜ YAYLAR A- Açı: Başlangıç noktaları aynı olan iki ışının birleşim kümesine ‘açı’ denir. Bu ışınlara açının kenarları,
Çizge Algoritmalari 4. ders.
İleri Algoritmalar Ders 3.
Algoritmalar II Ders 16 Prim algoritması.
Çizge Teorisi ve Algoritmalari
Çizge Algoritmaları 3. ders.
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 16 Prim algoritması.
Ders 9: İkili arama ağaçları
Çizge Algoritmalari 10. Ders.
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
10. Ders Floyd-Warshal algoritması
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Çizge Algoritmalari 6. ders

Derinlik öncelikli arama (Depth-First Search (DFS)) Giriş: G = (V, E) (Kaynak köşe verilmez!) Amaç: En son ziyaret edilen köşeden başlamak koşuluyla G'deki kirişleri üzerinde gezinerek V'deki her köşeyi "keşfetmek” Gezinme sırasında bir çok kaynak köşe kullanılabilir Çıkış: 2 zaman değişkeni: d[v] = keşfetme zamanı f[v] = bitiş zamanı( v’nin komşuluk listesi bitmiştir) Derinlik öncelikli orman (Depth-First Forest(DFF)) 1 2 5 4 3

Derinlik öncelikli arama (Depth-First Search (DFS)) Gizgede olabildiğince “derine” giderek arama yap Her adımda en son keşedilen köşeden üzerinde gezinme yapılmamış giriş üzerinden keşfedilmemiş bir köşeye gidilir (eğer mümkünse) 1 2 5 4 3 Arama bir v köşesi seçilerek başlanır ve v den ulaşılabilir tüm köşeler bitene kadar süreç devam eder. Eğer süreç bitiğinde çizgede halen keşfedilmemiş köşe kalmışsa bu defa keşfedilmemiş köşelerden birinden başlanır ve yine süreç seçilen başlangıç köşeden ulaşılabilir tüm köşeler keşfedilene kadar devam eder. DFS algoritması derinlik öncelikli orman (DFF) üretir

DFS için veri yapilari Global değişken: zaman-adım Yeni bir köşe keşfedildiğinde veya keşfi bittiğinde bir artırılır color[u] – BFS’de olduğu gibidir [u] –u köşesinin velisi d[u], f[u] – keşif ve bitiş zamanı GRİ BEYAZ SİYAH 2V d[u] f[u] 1 ≤ d[u] < f [u] ≤ 2 |V|

DFS(G) for each u  V[G] do color[u] ← WHITE [u] ← NIL time ← 0 x y z for each u  V[G] do color[u] ← WHITE [u] ← NIL time ← 0 do if color[u] = WHITE then DFS-VISIT(u) DFS-VISIT(u) nun çağrıldığı her u köşesi DFS ormanında yeni bir ağacın kökü olur

DFS-VISIT(u) color[u] ← GRAY time ← time+1 d[u] ← time for each v  Adj[u] do if color[v] = WHITE then [v] ← u DFS-VISIT(v) color[u] ← BLACK time ← time + 1 f[u] ← time u v w x y z time = 1 1/ u v w x y z 1/ 2/ u v w x y z

Örnek u v w x y z u v w x y z u v w x y z u v w x y z u v w x y z u v 1/ u v w x y z 1/ 2/ u v w x y z 1/ 2/ 3/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z B 1/ 2/ 4/5 3/ u v w x y z B 1/ 2/ 4/5 3/6 u v w x y z B 1/ 2/7 4/5 3/6 u v w x y z B 1/ 2/7 4/5 3/6 u v w x y z B F

Örnek (Devam) DFS sonucu aşağıdakilere bağlıdır: 1/8 2/7 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/ u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/ u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/11 u v w x y z B F C 1/8 2/7 9/12 4/5 3/6 10/11 u v w x y z B F C DFS sonucu aşağıdakilere bağlıdır: DFS algoritmasının aramaya hangi köşeden başlaması ve kaynak köşelere hangi sırada devam etmesine DFS-VISIT algoritmasının komşuları ziyaret sırasına

KİRİŞ SİNİFLANDİRMA Ağaç kirişi (Rengi BEYAZ iken keşfedilen köşelere bağlanan girişler): (u, v) ağaç kirişidir eğer v köşesine ilk defa (u, v) kirişi ile gidilmişse Geri kiriş (Back edge) (Rengi GRİ iken tekrar ziyaret edilen köşelere bağlanan girişler): (u, v), geri kiriştir eğer u dan v köşesine gidildiğinde v köşesi artık DFS ormanında bulunan bir ağaçta varsa Yönlü çizgelerde öz-döngü kirişleri de geri kirişlerdir 1/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z B

KİRİŞ SİNİFLANDİRMA İleri kiriş(Forward edge) (u köşesinden ziyaret edildiğinde rengi SİYAH olan ve d[u] < d[v] koşulunu sağlayan v köşeleri) (u, v) kirişi ileri kiriştir eğer 1)ağaç kirişi değilse ve 2)DFS ormanındaki bir ağaçta v köşesi u köşesinin soyundan geliyorsa, yani v köşesi u köşesinin torunu, torunun çocuğu ve b. ise Çapraz kiriş (Cross edge) (u köşesinden ziyaret edildiğinde rengi SİYAH olan ve d[u] > d[v] koşulunu sağlayan v köşeleri) DFS ormanında bulunan aynı bir ağacın iki köşesi arasında ( bu durumda bu köşelerin hiçbiri diğerinin soyundan gelmez) veya farklı iki ağacın köşeleri arasında olabilir 1/ 2/7 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F C

DFS(G) Zaman analizi for each u  V[G] do color[u] ← WHITE (V) [u] ← NIL time ← 0 do if color[u] = WHITE then DFS-VISIT(u) (V) – defa DFS-VISIT çağrılacaktır

DFS-VISIT(u) zaman analizi color[u] ← GRAY time ← time+1 d[u] ← time for each v  Adj[u] do if color[v] = WHITE then [v] ← u DFS-VISIT(v) color[u] ← BLACK time ← time + 1 f[u] ← time DFS-VISIT her köşe için bir defa çağrılır Her döngü |Adj[v]| defa döner Toplam:ΣvV |Adj[v]| + (V) = (V + E) (E)

Topolojik siralama Yönlü ve döngüsüz bir G = (V, E) çizgesinin köşelerini bir doğru üzerinde öyle yerleştirebiliriz ki eğer çizgede (u, v) kirişi varsa doğru üzerinde u köşesi v den önce gelir. Bu tür bir sıralamaya topolojik sıralama denir.

Topolojik siralama TOPOLOGICAL-SORT(V, E) Running time: (V + E) Her v köşesi için f[v] yi hesaplamak için DFS(V, E) cağır Köşeleri bitiş zamanlarının azalan sırası ile sırala ve bir bağlı listeye yerleştir Çizgedeki kirişleri bu listede göster H 11/ 16 17/ 18 İ 12/ 15 G F 13/ 14 D 1/ 8 6/ 7 C E 9/ 10 B 2/ 5 A 3/ 4 İ H G F E D C B A Running time: (V + E)

Topological Sort H 11/ 16 17/ 18 İ 12/ 15 G F 13/ 14 C 1/ 8 6/ 7 D E 9/ 10 B 2/ 5 A 3/ 4 İ H G F E D C B A

Özellik Yönlü bir çizge döngüsüzdür  Bu çizgeye uygulanan DFS algoritması geri kiriş üretmez. İspat: “”: çizge döngüsüz olsun  geri giriş yok Geri kiriş olduğunu varsayalım  döngü olduğunu gösterelim Bir geri kiriş olsun (u, v) u köşesi v nin soyundan geliyor  Yani v den u ya yol var: G de (v  u) yolu  v  u + (u, v) döngüdür v u (u, v)

İspat devam “”: geri giriş yoktur  döngüsüzdür Döngü olduğunu varsayalım  geri kiriş olduğunu gösterelim G de c döngü olsun v köşesi c de ilk keşfedilen köşe ve (u, v) kirişi c de son kiriş olsun d[v] zamanında c de v  u beyaz yolu vardır Yani u köşesi v nin soyundandır  (u, v) geri kirişdir. v (u, v) u

Kuvvetli Bağlantili Bileşenler Yönlü bir çizge verilmiş olsun:G = (V, E): C  V olan ve her u, v  C için u  v ve v  u yollarının var olduğu maksimum elemanlı <C> alt çizgesine G nin kuvvetli bağlantılı bir bileşeni (strongly connected component (SCC) ) denir.

Çizgenin transpozu GT = G nin transposu GT çizgesinin kirişlerinin tümü G nin kirişlerinin yönünün ters yöne değiştirilmesi ile oluşmuştur GT = (V, ET), ET = {(u, v) : (v, u)  E} GT yi (V + E) işlem zamanında oluşturabiliriz. 1 2 5 4 3 1 2 5 4 3

Kuvvetli bağlantılı bileşenleri bulma Gözlem: G ve GT kuvvetli bağlantılı bileşenleri aynıdır. u ve v köşeleri G de birbirinden ulaşılabilirdir bu köşeler GT de de birbirinden ulaşılabilirdir. Yönlü döngüsüz G = (V, E) de kuvvetli bağlantılı bileşenleri bulmak için : G ve GT de DFS uygulamak yeterlidir 1 2 5 4 3 1 2 5 4 3

Örnek a b c d e f g h DFS G de ve bitiş zamanlarına göre sırala 13/ 14 11/ 16 1/ 10 8/ 9 b 16 e 15 a 14 c 10 d 9 g 7 h 6 f 4 12/ 15 3/ 4 2/ 7 5/ 6 a b c d e f g h DFS GT: b de başla: a, e keşfet c de başla: d yi keşfet g de başla: f yi keşfet h de başla Kuvvetli bağlantılı bileşenler: C1 = {a, b, e}, C2 = {c, d}, C3 = {f, g}, C4 = {h}