Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.

Slides:



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

Maliye Bakanlığı Strateji Geliştirme Başkanlığı Operasyonel Planlama Stratejik Yönetim Dairesi.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
BİLGİSAYAR PROGRAMLAMA Ders 2: Algoritma ve Akış Şemaları
Hat Dengeleme.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
T.C. ORDU VALİLİĞİ İlköğretim Müfettişleri Başkanlığı TAM ÖĞRENME MODELİ TAM ÖĞRENME MODELİ.
Arş.Gör.İrfan DOĞAN.  Bugün otizm tedavisinde en önemli yaklaşım, özel eğitim ve davranış tedavileridir.  Tedavi planı kişiden kişiye değişmektedir,
DEPREME DAYANIKLI BETONARME YAPI TASARIMI
Parametrik ve Parametrik Olmayan Testler Ortalamaların karşılaştırılması t testleri Mann-Whitney U testi Wilcoxon İşaretli Sıra testi BBY252 Araştırma.
O R T L G İ M A A Ve Problem çözme.
OLASILIK TEOREMLERİ Permütasyon
YÖNLENDİRME. Yönlendirme ● Statik ● Dinamik ● Kaynakta yönlendirme ● Hop by hop yönlendirme.
BİLGİSAYAR PROGRAMLAMA DERSİ
SAYILAR ve RAKAMLAR.
İÇİNDEKİLER NEGATİF ÜS ÜSSÜ SAYILARIN ÖZELLİKLERİ
TAM SAYILAR.
Tüm ikililer arasında en kısa yollar
Çiti Kilim Örme.
BÖLÜM 11 Sayıcılar (Counters) Prof. Dr. Hüseyin Ekiz.
Ç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.
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
Çizge Algoritmalari 6. ders.
Ç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
İleri Algoritma Analizi
En Kısa Yol Problemleri (Shortest Path Problems)
Derinlik öncelikli arama (Depth-first Search(DFS))
İleri Algoritmalar 2. ders.
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
Çizge Teorisi ve Algoritmaları
Çizge Algoritmaları 3. ders.
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
Ağırlıksız ikili eşleştirme
GELECEK PİYASASI İŞLEMLERİ
Seminer Dersi Sunumu Sunum Adı Öğrenci Ad ve Soyadı Ay Yıl
Kırınım, Girişim ve Müzik
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Çizge Teorisi ve Algoritmalari
Self Organizing Map-SOM
İleri Algoritma Analizi
Benzetim 11. Ders İmalat Yönetimde Benzetim.
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
B+-Ağaçları.
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Evren-Örneklem, Örnekleme Yöntemleri 2
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizge Algoritmaları.
Çizge Algoritmalari 5. ders.
ESNEKLİK Belgin Akçay.
İleri Algoritma Analizi
Bilgisayar Bilimi Koşullu Durumlar.
NİŞANTAŞI ÜNİVERSİTESİ
Hande TİRYAKİ Muzaffer DOĞAN ANADOLU ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 16 Prim algoritması.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
5 Esneklik BÖLÜM İÇERİĞİ Talebin Fiyat Esnekliği
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
Bilimsel Araştırma Yöntemleri
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler

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şfedilen köşeden üzerinde gezinme yapılmamış kiriş ü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 kiriş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

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}