Tanım Yönlü ve yönsüz graflar ğırlıklı graflar İçerik: Graflar Gösterim Komşuluk Matrisi Komşuluk Listesi olaşma lgoritmaları BS (Breath irst Search) S (epth-irst Search) 1
Graflar Graf, matematiksel anlamda, tepelerden ve bu düğümler arasındaki ilişkiyi gösteren ayrıtlardan oluşan bir kümedir. Bağlantılı listeler ve ağaçlar grafların özel örneklerindendir. Bir G grafı V ile gösterilen tepelerden (node veya vertex) ve ile gösterilen ayrıtlardan (dge) oluşur. Her ayrıt iki tepeyi birleştirir. Her ayrıt, iki bilgi (tepe) arasındaki ilişkiyi gösterir ve (u,v) şeklinde ifade edilir. (u,v) iki tepeyle gösterilen bir ayrıttır. 2
Graflar - Örnek G = (V, ) grafı aşağıda verilmiştir. V = {, B, C,,, } = {(, B), (, ), (B, C), (C, ), (C, ), (, )} B C 3
lektronik devreler Uygulama lanları Baskı devre kartları (PCB) ntegre devreler Ulaşım ğları Otoyol ğı Havayolu ğı Bilgisayar ğları Lokal alan ağları İnternet Veritabanları ntity-relationship diyagram 4
Graflar yrıt Türleri Yönlü yrıt (irected dge) Sıralı tepe çiftleri ile ifade edilir. (u, v) ile (v, u) aynı değildir. İlk tepe orijin ikinci tepe ise hedef olarak adlandırılır. Yönsüz yrıt (Undirected dge) Sırasız tepe çiftleri ile ifade edilir. (u, v) ile (v, u) aynı şeyi ifade ederler. Yönlü Graf (irected Graphs) Bütün ayrıtları yönlü olan graftır. igraph şeklinde de ifade edilirler. Yönsüz Graf (Undirected Graphs) Tüm ayrıtları yönsüz olan bir graftır. 5
Graflar - Tanımlar Komşu(djacent): ğer (u, v) ise u ve v tepeleri komşudur. (, B) komşudur. (B, ) komşu değildir. (C, ) komşu değildir. B C 6
Graflar - Tanımlar Grafın ayrıtları üzerinde ağırlıkları olabilir. ğer ayrıtlar üzerinde ağırlıklar varsa bu tür graflara ağırlıklı/maliyetli graf (Weighted Graphs) denir. ğırlık uygulamadan uygulamaya değişir. Şehirler arasındaki uzaklık. Routerler ararı bant genişliği. İstasyonlar(petrol, elektirik vs.) arasındaki kurulum maliyeti 7
Graf Gösterimi Zaman ve yer karmaşıklığı aşağıdaki her iki ifade ile de ölçülür. üğüm sayısı = V = n yrıt sayısı = = m Graf gösterimi için iki farklı yol vardır. Komşuluk matrisi Komşuluk listesi 8
Komşuluk Matrisi Gösterimi Komşuluk Matrisi Gösterimi: M(u, v) = 1 (u,v) nin içindeyse 0 diğer B C B C 0 1 0 1 0 0 B 0 0 1 0 0 0 C 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Bellek? O(n 2 ) 9
Komşuluk Matrisi Gösterimi Komşuluk Matrisi Gösterimi (ğırlıklı Graf): M(u, v) = ağırlık(u, v) (u, v) nin içindeyse diğer B C 10 B 20 C 10 5 B 20 5 30 15 50 C 30 50 15 10
Komşuluk Listesi Gösterimi Komşuluk Listesi: (Yönsüz Graflar) B C B B C C B C C Yer? n + 2*m = O(n+m) 11
Komşuluk Listesi Gösterimi Komşuluk Listesi (Yönlü Graflar) B C B B C C Yer? n + m = O(n+m) 12
Graf Üzerinde olaşma Graf üzerinde dolaşma grafın düğümleri ve kenarları üzerinde istenen bir işi yapacak veya bir problemi çözecek biçimde hareket etmektir. Graf üzerinde dolaşma yapan birçok yaklaşım yöntemi vardır. n önemli iki tanesi aşağıda listelenmiştir. BS (Breadth irst Search) Yöntemi S (epth irst Search ) Yöntemi 13
Graf Üzerinde olaşma Breath-irst Search (BS): Başlangıç düğümünden başla ve tüm komşuları ziyaret et. aha sonra komşunun komşularını ziyaret et. Başlangıç düğümünden başlayıp dışa doğru dalga gibi. epth-irst Search (S) Bir düğümden başla düğümün bir kenarında o kenar üzerinde gidilebilecek en uzak düğüme kadar sürdür. Geri gel ve düğer kenarı dene Tüm düğümler gezilene kadar devam et. 14
Breadth-irst Search lgorithm Maintains the following fields for each u V color[u]: color of u WHIT : not discovered yet GRY : discovered and to be or being processed BLCK: discovered and processed pred[u]: parent of u (NIL of u = s or u is not discovered yet) d[u]: distance of u from s Processing a vertex = scanning its adjacency list 15
Breadth-irst Search lgorithm BS(G, s) for each u V {s} do color[u] WHIT pred[u] NIL; d [u] color[s] GRY pred[s] NIL; d [s] 0 Q {s} while Q do u head[q] for each v in dj[u] do if color[v] = WHIT then color[v] GRY pred[v] u d [v] d [u] + 1 NQUU(Q, v) QUU(Q) color[u] BLCK 16
Breadth-irst Search Sample Graph: s a 0 d IO queue Q just after processing vertex c a - b e f i g h 17
Breadth-irst Search s a 0 1 d IO queue Q just after processing vertex b 1 c e a - a,b,c a f i g h 18
Breadth-irst Search s a 0 1 d IO queue Q just after processing vertex b 1 c f 2 e i a - a,b,c a a,b,c,f b g h 19
Breadth-irst Search s a 0 1 d IO queue Q just after processing vertex b 1 c f 2 e 2 i a - a,b,c a a,b,c,f b a,b,c,f,e c g h 20
Breadth-irst Search s a 0 1 d IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f 21
Breadth-irst Search s a 0 1 d 3 IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i 3 a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f a,b,c,f,e,g,h,d,i e all distances are filled in after processing e 22
Breadth-irst Search s a 0 1 d 3 IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i 3 a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f a,b,c,f,e,g,h,d,i g 23
Breadth-irst Search s a 0 1 d 3 IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i 3 a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f a,b,c,f,e,g,h,d,i h 24
Breadth-irst Search s a 0 1 d 3 IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i 3 a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f a,b,c,f,e,g,h,d,i d 25
Breadth-irst Search s a 0 1 d 3 IO queue Q just after processing vertex b g 1 c f 2 3 3 e h 2 i 3 a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f a,b,c,f,e,g,h,d,i i algorithm terminates: all vertices are processed 26
Breadth-irst Search lgorithm Running time: O(V+) = considered linear time in graphs initialization: Θ(V) queue operations: O(V) each vertex enqueued and dequeued at most once both enqueue and dequeue operations take O(1) time processing gray vertices: O() each vertex is processed at most once and u V dj [ u] = Θ( ) 27
Breath-irst Search (BS) Sonuçların gösterilmesi Her bir v düğümü için, d[v] yi (s ve v arasındaki uzaklığı) kaydetmemiz gerekiyor. v ve s düğümleri arasındaki uzaklık, s den v ye giden yol üzerindeki minimum düğüm sayısıdır. olayısıyla d[s] = 0 yrıca aile (parent) düğümünü de tutmamız gerekiyor. v den s ye giderken yoldaki ilk düğüm pred[s] = 0 (pred! predecessor! önceki) 28
epth-irst Search (S) Bir v düğümüne gidildikten sonra v düğümünün bir komşusu seçilir ve ziyaret edilir. rdından onun bir komşusu seçilir ve ard arda komşu seçimi yapılarak devam edilir. Komşu kalmadığında geri dönülür. 29
epth-irst Search S(G) for each u V do color[u] white pred[u] NIL time 0 for each u V do if color[u] = white then S-VISIT(G, u) S-VISIT(G, u) color[u] gray d[u] time time +1 for each v dj[u] do if color[v] = white then pred[v] u S-VISIT(G, v) color[u] black f[u] time time +1 CS 473 Lecture 14 30
epth-irst Search B H C G I djacency Lists : G B: H C: : C : C G : : G: : H: B: I: H: 31
epth-irst Search B H C G I unction call stack: dfs() - -G 32
epth-irst Search B H C G I visit() - dfs() unction call stack: - -G 33
epth-irst Search B H C G I dfs() -C - -G dfs() - dfs() unction call stack: - -G 34
epth-irst Search B H C G I dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 35
epth-irst Search B H C G I dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 36
epth-irst Search dfs() B H C G I -C - dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 37
epth-irst Search dfs() B H C G I -C - dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 38
epth-irst Search dfs() B H C G I -C - dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 39
epth-irst Search B H C G I dfs(c) C- C- dfs() -C - -G dfs() - dfs() unction call stack: - -G 40
epth-irst Search B H C G I dfs() -C - -G dfs() - dfs() unction call stack: - -G 41
epth-irst Search B H C G I dfs() -C - -G dfs() - dfs() unction call stack: - -G 42
epth-irst Search B H C G I dfs(g) dfs() -C - -G dfs() - dfs() unction call stack: - -G 43
epth-irst Search B H C G I dfs() -C - -G dfs() - dfs() unction call stack: - -G 44
epth-irst Search B H C G I dfs() - dfs() unction call stack: - -G 45
epth-irst Search B H C G I unction call stack: dfs() - -G 46
epth-irst Search B H C G I unction call stack: dfs() - -G 47
epth-irst Search B H C G I Nodes reachable from :, C,,,, G 48