Derinlik öncelikli arama (Depth-first Search(DFS))

Slides:



Advertisements
Benzer bir sunumlar
İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları
Advertisements

GRAPHS ÖZET.
Hat Dengeleme.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
2 Yatırım Karlılık Analizleri Finansal Analizler Basit Yöntemler İndirgenmiş Yöntemler Karlılık Yöntemi Geri Ödeme Süresi Yöntemi Net Bugünkü Değer Yöntemi.
Metrik koşullarını sağlıyor mu?
OLASILIK TEOREMLERİ Permütasyon
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
YÖNLENDİRME. Yönlendirme ● Statik ● Dinamik ● Kaynakta yönlendirme ● Hop by hop yönlendirme.
BİLGİSAYAR PROGRAMLAMA DERSİ
KONULAR BÖLÜM: Kesirler, Ondalık Kesirler, Yüzde
x* denge noktası olmak üzere x* sabit nokta olmak üzere
TAM SAYILAR.
Tüm ikililer arasında en kısa yollar
1-a) Şekildeki devrede 5 Gauss yüzeyi belirleyin ve KAY yazın.
Ç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.
Bazı sorular: Topolojik eşdeğerlilik ne işimize yarayacak, topolojik
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
Çizge Algoritmalari 6. ders.
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H05
Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
DOĞAL SAYILAR TAM SAYILAR
- Sağlama - Kısa yoldan Çarpmalar
. . AÇILAR ..
En Kısa Yol Problemleri (Shortest Path Problems)
İleri Algoritmalar 2. ders.
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
X=(X,d) metrik uzayında bazı özel alt kümeler
KİMYASAL BAĞLAR.
Çizge Teorisi ve Algoritmaları
Çizge Algoritmaları 3. ders.
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
Bu 10 arkadaş en güzel fikrin Eğitim Fakültesinin ön kapısında fotoğraf çekinmek olduğunu düşünürler ve okul bitmek üzere olduğundan bu işi her hafta yapmaya.
Ağırlıksız ikili eşleştirme
GELECEK PİYASASI İŞLEMLERİ
Kırınım, Girişim ve Müzik
İKTİSADA GİRİŞ I DERS 9 Y.Doç.Dr.Umut Öneş.
Bölüm 7 İfadeler ve atamalar.
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Çizge Teorisi ve Algoritmalari
İleri Algoritma Analizi
Benzetim 11. Ders İmalat Yönetimde Benzetim.
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
B+-Ağaçları.
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
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 Algoritmaları.
Çizge Algoritmalari 5. ders.
İleri Algoritma Analizi
Bilgisayar Bilimi Koşullu Durumlar.
LOJİK KAPILAR (GATES) ‘Değil’ veya ‘Tümleme’ Kapısı (NOT Gate)
Ayrıştırma Ağaçları Tanımlar Soldan ve Sağdan Türemeler ile İlişkisi
NİŞANTAŞI ÜNİVERSİTESİ
Hande TİRYAKİ Muzaffer DOĞAN ANADOLU ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Algoritmalar II Ders 16 Prim algoritması.
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Ders 9: İkili arama ağaçları
8. Ders Tüm ikililer arasında en kısa yollar
Chapter 4 Divide-and-Conquer
PROBLEM ÇÖZME TEKNİKLERİ
Ortam-Bağımsız Gramerler (OBG)
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Derinlik öncelikli arama (Depth-first Search(DFS)) Giriş: G = (V, E), yönlü veya yönsüz. Başlangıç köşe verilmez! Çıkış: Her köşe için 2 zaman değeri, bu değerler 1 ve 2|V| arasındaki tam sayılardır d[v] = köşenin keşfedilme zamanı (discovery time (v köşesinin beyazdan griye döndüğü an) f [v] = bitiş zamanı(finishing time (v köşesinin griden siyaha döndüğü an) [v] : v nin velisi, yani v köşesi [v] nin komşusu olarak keşfedilmiştir. Renklendirme aynen BFS de olduğu gibidir.

Sözde kod(Pseudo-code) DFS(G) 1. for each vertex u  V[G] 2. do color[u]  white 3. [u]  NIL 4. time  0 5. for each vertex u  V[G] 6. do if color[u] = white 7. then DFS-Visit(u) DFS-Visit(u) color[u]  GRAY  White vertex u has been discovered 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  Blacken u; it is finished. f[u]  time  time + 1 time değişkeni global değişkendir.

Örnek(DFS) u v w 1/ x y z

Örnek(DFS) u v w 1/ 2/ x y z

Örnek (DFS) u v w 1/ 2/ 3/ x y z

Örnek(DFS) u v w 1/ 2/ 4/ 3/ x y z

Örnek (DFS) u v w 1/ 2/ B 4/ 3/ x y z

Örnek(DFS) u v w 1/ 2/ B 4/5 3/ x y z

Örnek(DFS) u v w 1/ 2/ B 4/5 3/6 x y z

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

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

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

Örnek (DFS) u v w 1/8 2/7 9/ B F 4/5 3/6 x y z

Örnek (DFS) u v w 1/8 2/7 9/ B C F 4/5 3/6 x y z

Örnek (DFS) u v w 1/8 2/7 9/ B C F 4/5 3/6 10/ x y z

Örnek (DFS) u v w 1/8 2/7 9/ B C F 4/5 3/6 10/ B x y z

Örnek (DFS) u v w 1/8 2/7 9/ B C F 4/5 3/6 10/11 B x y z

Örnek (DFS) u v w 1/8 2/7 9/12 B C F 4/5 3/6 10/11 B x y z

DFS nin zaman analizi 1-2 & 5-7 döngüleri DFS-Visit olmadan (V) zaman alır. DFS-Visit ilk defa griye boyanacak olan her köşe için çağrılır. DFS-Visit de 3-6 komutları |Adj[v]| defa çalışır. DFS-Visit toplamda vV|Adj[v]| = (E) zaman alır. DFS nin toplam zamanı (V+E) olur.

Yani d[u] < d[v] < f [u] < f [v] olamaz. Parantezlere benzer: Parantez teoremi Theorem Her u, v köşeleri için tam olarak aşağıdakilerden biri doğru olacaktır: 1. d[u] < f [u] < d[v] < f [v] veya d[v] < f [v] < d[u] < f [u] yani u ve v bir birinin soyundan değil 2. d[u] < d[v] < f [v] < f [u] yani v köşesi u nun soyundandır. 3. d[v] < d[u] < f [u] < f [v] yani u köşesi v nin soyundandır. Yani d[u] < d[v] < f [u] < f [v] olamaz. Parantezlere benzer: ( ) [ ] ( [ ] ) [ ( ) ] olabilir ( [ ) ] [ ( ] ) olamaz. Not: v köşesi u nun soyundandır ancak ve ancak d[u] < d[v] < f [v] < f [u].

Örnek(Parentez teoremi) y z s t 2/9 3/6 1/10 11/16 B F C B 4/5 7/8 12/13 14/15 C C C x w v u (s (z (y (x x) y) (w w) z) s) (t (v v) (u u) t)

Derinlik öncelikli ağaçlar (Depth-First Trees(DFT)) Üretilen alt çizge BFS de olduğundan bir az farklıdır. DFS de alt çizge G = (V, E) burada E ={([v],v) : v  V ve [v]  NIL}. BFS den farkı nedir? G burada derinlik öncelikli ağaçlardan (depth-first trees) oluşan derinlik öncelikli orman ( depth-first forest ) oluşturur. E de bulunan kirişlere ağaç kirişleri denir.

Kirişlerin sınıflandırılması Ağaç kirişi (Tree edge): Derinlik öncelikli ormanda (DFF) de bulunan kirişler. Geri kiriş (Back edge): (u, v), burada u köşesi v nin soyundandır v ( derinlik öncelikli ağaçta). İleri kiriş (Forward edge): (u, v), burada v köşesi u nun soyundandır ama bu kiriş ağaç kiriş değil. Çapraz kiriş (Cross edge): diğer tüm kirişler. Aynı ağacın köşeleri arasında veya farklı ağaçların köşeleri arasında olabilirler. Theorem: Eğer giriş çizgesi yönsüz bir çizge ise DFS sonucunda sadece ağaç ve geri kirişler oluşacaktır.

Topolojik sıralamada tam sıralama elde edilir. Topolojik sıralama yönlü devirsiz çizgelerde (directed acyclic graphs (DAGs)) yani G = (V, E) de : köşeleri doğrusal bir sıraya diziyor, böyle ki (u, v) kirişi varsa , u köşesi sıralamada v den önce gelmektedir. Yönlü devirsiz çizgeler(Directed acyclic graphs (DAGs)) kısmı sıralaması (partial order) olan süreçleri ifade etmek için kullanılırlar: Bu çizgelerde a köşesi b den önce ve b köşesi c den önce geliyorsa a köşesi c den öncedir diyebiliriz ama b köşesi c den önce ve a köşesi c den önce ise a ve b ile ilgili bir şey söyleyemeyiz. Topolojik sıralamada tam sıralama elde edilir.

I Topolojik sıralama 8 TOPOLOGICAL-SORT(V, E) Call DFS(V, E) to compute finishing times f[v] for each vertex v When each vertex is finished, insert it onto the front of a linked list Return the linked list of vertices B 11/ 16 17/ 18 A 12/ 15 C D 13/ 14 F 1/ 8 6/ 7 G E 9/ 10 H 2/ 5 I 3/ 4 A B C D E F G H I İşlem süresi: (V + E)

Topolojik sıralama B 11/ 16 17/ 18 A Topolojik sıralama: Köşelerin bir doğru üzerinde, tüm kirişlerin soldaki bir köşeden sağdaki bir köşeye olacak biçimde sıralanması 12/ 15 C D 13/ 14 F 1/ 8 6/ 7 G E 9/ 10 H 2/ 5 I 3/ 4 A B C D E F G H I

Kuvvetli Bağlantılı Bileşenler Yönlü bir G = (V, E) çizgesi veriliyor: Kuvvetli bağlantılı bileşen (SCC): V nin maksimum köşe içeren öğle bir C  V altkümesidir ki u, v  C için u  v ve v  u yolları vardır.

Bir çizgenin transpozu GT = G nin transpozu GT çizgesi G den tüm kirişlerin yönlerinin ters yönlendirilmesi ile oluşmuştur. GT = (V, ET), ET = {(u, v) : (v, u)  E} Komşuluk listesi kullanıldığında GT yi (V + E) işlem zamanında bulabiliyoruz. 1 2 5 4 3 1 2 5 4 3

SCC bulunması Gözlem: G ve GT ikiisnin de SCC’leri aynıdır u ve v köşeleri G de birbirinden ulaşılabilirdir bu köşeler GT de biribirinden ulaşılabilirdir. Ana fikir: 2 tane DFS uygulamak: G ve GT de 1 2 5 4 3 1 2 5 4 3

a b c d e f g h b e a c d g h f a b c d e f g h Örnek Önce G de DFS uygula 13/ 14 11/ 16 1/ 10 8/ 9 b e a c d g h f 12/ 15 3/ 4 2/ 7 5/ 6 a b c d e f g h Sonra GT de G deki DFS de bitiş zamanlarının azalan sırasına göre DFS uygulama b den başla: a, e yi gez c den başla: d yi gez g den başla: f i gez h dan başla Strongly connected components: C1 = {a, b, e}, C2 = {c, d}, C3 = {f, g}, C4 = {h}

a b c d e f g h Bileşen çizgesi a b e c d f g h Bileşen çizgesi GSCC = (VSCC, ESCC): VSCC = {v1, v2, …, vk}, burada vi her bir Ci kuvvetli bağlantılı bileşen karşılık geliyor (vi, vj)  ESCC kirişi vardır eğer G de x  Ci and y  Cj olacak biçimde (x, y) kirişi varsa Bileşen çizgesi bir DAG olur.