1 / 48

İçerik : Gra flar

İçerik : Gra flar. Tanım Yönlü ve yönsüz graflar Ağırlıklı graflar Gösterim Komşuluk Matrisi Komşuluk Listesi Dolaşma Algoritmaları BFS ( Breath F irst Search ) DFS ( Depth-First Search ). Graflar.

Download Presentation

İçerik : Gra flar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. İçerik: Graflar • Tanım • Yönlü ve yönsüz graflar • Ağırlıklı graflar • Gösterim • Komşuluk Matrisi • Komşuluk Listesi • Dolaşma Algoritmaları • BFS (BreathFirst Search) • DFS (Depth-First Search)

  2. 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 E ile gösterilen ayrıtlardan (Edge) 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.

  3. Graflar - Örnek • G = (V, E) grafı aşağıda verilmiştir. • V = {A, B, C, D, E, F} • E = {(A, B), (A, D), (B, C), (C, D), (C, E), (D, E)} C B F A D E

  4. Uygulama Alanları • Elektronik devreler • Baskı devre kartları (PCB) • Entegre devreler • Ulaşım Ağları • Otoyol Ağı • Havayolu Ağı • Bilgisayar Ağları • Lokal alan ağları • İnternet • Veritabanları • Entity-relationship diyagram

  5. Graflar – Ayrıt Türleri • Yönlü Ayrıt (Directed Edge) • 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 Ayrıt (Undirected Edge) • Sırasız tepe çiftleri ile ifade edilir. • (u, v) ile (v, u) aynı şeyi ifade ederler. • Yönlü Graf (Directed Graphs) • Bütün ayrıtları yönlü olan graftır. • Digraph şeklinde de ifade edilirler. • Yönsüz Graf (Undirected Graphs) • Tüm ayrıtları yönsüz olan bir graftır.

  6. Graflar - Tanımlar • Komşu(Adjacent): Eğer (u, v) ∈ E ise u ve v tepeleri komşudur. • (A, B) komşudur. • (B, D) komşu değildir. • (C, F) komşu değildir. C B F A D E

  7. Graflar - Tanımlar • Grafın ayrıtları üzerinde ağırlıkları olabilir. Eğer ayrıtlar üzerinde ağırlıklar varsa bu tür graflara ağırlıklı/maliyetli graf (Weighted Graphs) denir. • Ağı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

  8. Graf Gösterimi • Zaman ve yer karmaşıklığı aşağıdaki her iki ifade ile de ölçülür. • Düğüm sayısı = |V| = n • Ayrıt sayısı = |E| = m • Graf gösterimi için iki farklı yol vardır. • Komşuluk matrisi • Komşuluk listesi

  9. Komşuluk Matrisi Gösterimi • Komşuluk Matrisi Gösterimi: • 1 (u,v) E’nin içindeyse • 0 diğer M(u, v) = C B F A D E Bellek? O(n2)

  10. Komşuluk Matrisi Gösterimi • Komşuluk Matrisi Gösterimi (Ağırlıklı Graf): ağırlık(u, v) (u, v) E’nin içindeyse ∞ diğer M(u, v) = 20 C B 10 30 50 F A 5 15 D E

  11. Komşuluk Listesi Gösterimi • Komşuluk Listesi:(Yönsüz Graflar) B D A B A C C B B E D C F A D A C E D E E C D F n + 2*m= O(n+m) Yer?

  12. Komşuluk Listesi Gösterimi • Komşuluk Listesi(Yönlü Graflar) B A D C B B C F A C E D D E D E E F n + m= O(n+m) Yer?

  13. Graf Üzerinde Dolaş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. En önemli iki tanesi aşağıda listelenmiştir. • BFS (Breadth First Search) Yöntemi • DFS (Depth First Search ) Yöntemi

  14. Graf Üzerinde Dolaşma • Breath-First Search (BFS): • Başlangıç düğümünden başla ve tüm komşuları ziyaret et. • Daha sonra komşunun komşularını ziyaret et. • Başlangıç düğümünden başlayıp dışa doğru dalga gibi. • Depth-First Search (DFS) • 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.

  15. Breadth-First Search Algorithm • Maintains the following fields for each u  V • color[u]: color of u • WHITE : not discovered yet • GRAY : discovered and to be or being processed • BLACK: 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

  16. Breadth-First Search Algorithm • BFS(G, s) • for each u  V {s} do • color[u]  WHITE • pred[u]  NIL; d [u]   • color[s]  GRAY • pred[s]  NIL; d [s]  0 • Q  {s} • while Q do • u  head[Q] • for each v in Adj[u] do • if color[v]  WHITE then • color[v]  GRAY • pred[v]  u • d [v]  d [u]  1 • ENQUEUE(Q, v) • DEQUEUE(Q) • color[u]  BLACK

  17. Breadth-First Search Sample Graph: FIFO just after queue Qprocessing vertex a -

  18. Breadth-First Search FIFO just after queue Qprocessing vertex a - a,b,c a

  19. Breadth-First Search FIFO just after queue Qprocessing vertex a - a,b,c a a,b,c,f b

  20. Breadth-First Search FIFO just after queue Qprocessing vertex a - a,b,c a a,b,c,f b a,b,c,f,e c

  21. Breadth-First Search FIFO just after queue Qprocessing vertex a - a,b,c a a,b,c,f b a,b,c,f,e c a,b,c,f,e,g,h f

  22. Breadth-First Search FIFO just after queue Qprocessing vertex 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

  23. Breadth-First Search FIFO just after queue Qprocessing vertex 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

  24. Breadth-First Search FIFO just after queue Qprocessing vertex 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

  25. Breadth-First Search FIFO just after queue Qprocessing vertex 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

  26. Breadth-First Search FIFO just after queue Qprocessing vertex 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

  27. Breadth-First Search Algorithm • Running time: O(VE)  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(E) • each vertex is processed at most once and

  28. Breath-First Search (BFS) • 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. • Dolayısıyla d[s] = 0 • Ayrı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)

  29. Depth-First Search (DFS) • Bir v düğümüne gidildikten sonra v düğümünün bir komşusu seçilir ve ziyaret edilir. • Ardı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.

  30. Depth-First Search DFS(G) for eachuVdo color[u] white pred[u]  NIL time 0 for eachuVdo if color[u] whitethen DFS-VISIT(G, u) DFS-VISIT(G, u) color[u] gray d[u] time time1 for eachv Adj[u] do if color[v] whitethen pred[v]  u DFS-VISIT(G, v) color[u] black f[u] time time1 Lecture 14

  31. Depth-First Search A Adjacency Lists A: F GB: A HC: A DD: C FE: C D GF: E:G: :H: B:I: H: B H C G I D E F

  32. Depth-First Search A B H C G I D E F dfs(A) A-F A-G Function call stack:

  33. Depth-First Search A B H C G I D visit(F) F-E E F dfs(A) A-F A-G Function call stack:

  34. Depth-First Search A B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  35. Depth-First Search A dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  36. Depth-First Search A dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  37. Depth-First Search A dfs(D) D-C D-F dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  38. Depth-First Search A dfs(D) D-C D-F dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  39. Depth-First Search A dfs(D) D-C D-F dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  40. Depth-First Search A dfs(C) C-A C-D B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  41. Depth-First Search A B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  42. Depth-First Search A B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  43. Depth-First Search A dfs(G) B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  44. Depth-First Search A B H C G dfs(E) E-C E-D E-G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  45. Depth-First Search A B H C G I D dfs(F) F-E E F dfs(A) A-F A-G Function call stack:

  46. Depth-First Search A B H C G I D E F dfs(A) A-F A-G Function call stack:

  47. Depth-First Search A B H C G I D E F dfs(A) A-F A-G Function call stack:

  48. Depth-First Search A B H C G I D E F Nodes reachable from A: A, C, D, E, F, G

More Related