1 / 57

Directed Graphs (Yonlu Graflar)

1. 2. 3. 4. Directed Graphs (Yonlu Graflar). Directed graph (digraph) G=(V,E) V: vertices (nodes) E: edges (directed edges,arcs). path. Bir digraftaki path bir dizi vertices den olusur oyleki bir birini izleyen iki vertex arasinda bir edge var v 1 ->v 2 ->v 3 ……… ->v n-1 ->v n

talli
Download Presentation

Directed Graphs (Yonlu Graflar)

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. 1 2 3 4 Directed Graphs (Yonlu Graflar) • Directed graph (digraph) G=(V,E) • V: vertices (nodes) • E: edges (directed edges,arcs) Algoritma Analizi

  2. path • Bir digraftaki path bir dizi vertices den olusur oyleki bir birini izleyen iki vertex arasinda bir edge var • v1->v2->v3 ……… ->vn-1->vn • vertex v1 den vertex vn e bir path (yol) • Length of path (yolun uzunlugu) • Path uzerindeki arc larin sayisi • v den v ye (v bir vertex) olan yolun uzunlugu 0 dir • Simple path: • Eger path in uzerindeki tum vertices (ilk ve son vertex ler haric) farkli ise Algoritma Analizi

  3. Labeled Digraph • Bazen graph in vertices veya arc larina faydali bilgiler (label) eklemek mumkun • Label isim, maliyet veya faydali herhangi bir bilgi olabilir. Algoritma Analizi

  4. a 2 1 a b b b b a 3 4 a Labeled Digraph Algoritma Analizi

  5. Directed Graph larin Temsili • Digraph lari temsil etmek icin cesitli data structure lar kullanilabilir • Secilen data structure arc lara ve vertices lara uygulanan operationlara baglidir • Adjacency Matrix • Adjacency List Algoritma Analizi

  6. Adjacency Matrix • G = (V,E), V={1,2,3, ………n} • G nin Adjacency Matrix A • A nxn boyutlu bir boolean matrix • A[i,j] = true ancak ve ancak vi den vj ye bir arc var • Bazen true 1 le false 0 ile temsil edilir • Labeled Adjacency Matrix • A[i,j] vi den vj giden arc in label ini gosterir Algoritma Analizi

  7. a 2 1 a b b b b a 3 4 a Digraph AdjacencyMatrix Algoritma Analizi

  8. Adjacency List • Adjacency matrix kullaniminin dezavantaji • storage • Matrix uzerinde islem • O(n) arc a sahip digraphlar icin O(n2) den daha iyi performansli algoritmalarin elde edilmesini imkansizlastirir • Bu dezavantajlari gidermek icin Adjacency List kullanilabilir Algoritma Analizi

  9. Adjacency List • G = (V,E) • HEAD • HEAD[i] vertex i icin Adjacency List e bir pointer • Storage • Vertices lerin sayi artisi arc larin sayisiyle orantilidir • Dezavantaj • Vertex i den vertex j ye bir arc olup olmadigini tespit etmek icin O(n) zaman gerekli Algoritma Analizi

  10. 1 2 3 4 Adjacency List 2 3 1 4 2 2 3 4 3 Algoritma Analizi

  11. Single Source Shortest Paths Problem • Yaygin path finding problem (directed graflar icin) • G = (V,E) • Her bir arc bir negative olmayan bir label a sahip (cost fonksiyon) • Bir vertex source olarak belirlenir • Problem: Verilen source dan diger her bir vertex e olan en kisa yolun cost ini hesaplamak Algoritma Analizi

  12. Dijkstra nin shortest path algorithm Procedure Dijkstra; # vertex 1 den diger vertexlere olan en kisa yolun cost ini # hesaplar Begin (1) S:={1} (2) for i:=2 to n do (3) D[i]:=C[1,i]; # initialize D (4) for i:= 1 to n-1 do begin (5) choose a vertex w in V-S such that D[w] is a minimum (6) add w to S; (7) for each vertex v in V-S do (8) D[v]:= min(D[v],D[w]+C[w,v]) end end Algoritma Analizi

  13. Dijkstra devam… • G = (V,E) • V = {1,2,3, ……,n} ve vertex 1 source • C iki boyutlu bir dizi ve C[i,j] vertex i den vertex j ye gitmek icin maliyet (cost). Eger vertex i den vertex j ye bir arc yoksa C[i,j] = (herhangi bir maliyetten cok daha buyuk bir sayi) • Her bir adimda D[i] vertex i ye olan en kisa yolun uzunlugunu gosterir Algoritma Analizi

  14. Ornek 1 10 100 30 2 5 50 10 60 4 3 20 Algoritma Analizi

  15. Dijkstra’s Algorithm • Greedy Algorithm • Local olarak en iyi olan sey global olarak da en iyi dir. • Dijkstra’s shortest path algorithm bir greedy algoritmadir. Algoritma Analizi

  16. Running Time of Dijkstra’s Algorithm • Eger adjacency matrix kullanirsak • (7) ve (8) O(n) zaman alir ve n-1 kere execute edilir. Dolaysisiyle toplam zaman O(n2) olur • Eger e n2 den oldukca kucukse, digraph i temsil icin adjacency list ve V-S kumesindeki vertices leri temsil etmek icin partially ordered tree kullanmak faydali olur. • (7) ve (8), w nin adjacency list i taranarak ve priority queue deki mesafelerin guncellenmesiyle saglanir. Toplam olarak e tane guncelleme olur ve herbiri O(logn) zaman alir. • Toplam zaman O(elogn) olur Algoritma Analizi

  17. All-Pairs Shortest Paths Problem (APSP) • Directed Graph G=(V,E) • Her bir sirali cift vertices (v,w) icin vertex v den vertex w olan en kisa yolun mesafesini hesapla • Dijkstra’s algoritmasi her bir vertex source kabul edilerek APSP problem cozulebilir (algoritma n kere cagrilir) • Ikinci cozum • Floyd’s Algorithm Algoritma Analizi

  18. Floyd’s Algorithm procedure Floyd (var A: array[1..n, 1..n] of real, C: array[1..n, 1..n] of real) # Floyd computes shortest path matrix A given cost matrix C begin for i:=1 to n do for j:=1 to n do A[i,j] := C[i,j] for i:= 1 to n do A[i,i]:=0 for k:=1 to n do for i:=1 to n do for j:=1 to n do if A[i,k] + A[k,j] < A[i,j] then A[i,j]:=A[i,k] + A[k,j] end Algoritma Analizi

  19. 8 2 1 3 2 2 3 5 Ornek (Floyd’s Algorithm) A0[i,j] A1[i,j] A2[i,j] A3[i,j] Algoritma Analizi

  20. Floyd’s Algorithm vs Dijkstra’s Algorithm • Her ikisi de Adjacency Matrix kullanarak • APSP problemini O(n3) zamanda cozer • Eger e, graftaki edge sayisi, n2 den oldukca kucukse, Dijkstra nin algoritmasi O(nelogn) zamanda cozum getirebilir ( O(n3) den daha iyi oldugu umulur) Algoritma Analizi

  21. En kisa yol uzerindeki vertex lerin belirlenmesi procedure shortest (var A: array[1..n, 1..n] of real, C: array[1..n, 1..n] of real) # C nxn boyutunda cost matrix, A nxn boyutunda en kisa yol matrix, # P nxn boyutunda shortest path lerdeki ara vertex leri tutar begin for i:=1 to n do for j:=1 to n do A[i,j] := C[i,j] P[i,j]:=0 for i:= 1 to n do A[i,i]:=0 for k:=1 to n do for i:=1 to n do for j:=1 to n do if A[i,k] + A[k,j] < A[i,j] then { A[i,j]:=A[i,k] + A[k,j] P[i,j]:=k } end Algoritma Analizi

  22. Shortest Path Printing procedurepath(i,j: integer) begin k:=P[i,j]; if k = 0 then return path(i,k) writeln(k) path(k,j) end Algoritma Analizi

  23. 8 2 1 3 2 2 3 5 Shortest path uzerindeki vertexler Yukaridaki digraph icin P matrix i. Algoritma Analizi

  24. Transitive Closure • vertex i den vertex j ye bir yol var mi • Cozum • Floyd’un algoritmasini biraz degistirerek • vertex i den vertex j ye bir yol var eger • Numarasi k-1 den buyuk olmayan vertex lerden gecen vi den vj ye bir yol var veya • Numarasi k-1 den buyuk olmayan vertexlerden gecen vi den vk ya bir yol ve numarasi k-1 den buyuk olmayan vertexlerden gecen vk dan vj ye bir yol var # A bir boolean matriks olmak uzere Ak[i,j]=Ak-1[i,j] || Ak-1[i,k] && Ak-1[k,j] Algoritma Analizi

  25. Transitive Closure • Warshall Algorithm procedure Warshall(var A: array[1..n,1..n] of boolean; C: array[1..n,1..n] of boolean) # Warshall makes A the transitive closure of C begin for i:=1 to n do for j:=1 to n do A[i,j]:=C[i,j] for k:=1 to n do for i:=1 to n do for j:=1 to n do if A[i,j]=false then A[i,j]:=A[i,k] and A[k,j] end Algoritma Analizi

  26. Bir Digraph in Center (merkezini) bulmak • G=(V,E) • Vertex v nin eccentricity si max { w den v ye olan minimum uzunluklu yolun uzunlugu) W in V • G nin center i • Minimum eccentricity e sahip vertex Algoritma Analizi

  27. a 1 b 2 1 2 c d 3 4 5 e Ornek Center: vertex d Algoritma Analizi

  28. a 1 b 2 1 2 c d 3 4 5 e G nin APSP cost matrix i ve nin vc ye uzakligi Graph G G nin center i vd Algoritma Analizi

  29. Digraph larin Traversal i • Digraph (directed graph) larla ilgili bir cok problemlerin cozumunde yonlu graf in vertex ve arc larini sistematik bir sekilde dolasmayi gerektirir • Graph traversal • Depth-First Search • Bread-First Search Algoritma Analizi

  30. Depth-First Search (DFS) A B F E D C G Algoritma Analizi

  31. Depth-First Search (DFS) A B F E D C G Algoritma Analizi

  32. Depth-First Search (DFS) A B F E D C G Algoritma Analizi

  33. Depth-First Search (DFS) A B F E D C G Algoritma Analizi

  34. A B F E D C G Depth-First Search (DFS) Algoritma Analizi

  35. Depth First Search procedure dfs(v:vertex) w: vertex begin mark[v]:=visited for each vertex w on L[v] do if mark[w] = unvisited then dfs(w) end Algoritma Analizi

  36. DFS nin Runnig Time • Her bir vertex in adjacency list ine bir kez bakilir • Vertex lerin adjacency list lerinin uzunluklari toplami e dir (graf in arc sayisi kadardir) • Dolayisle DFS algorithm O(e) dir. Algoritma Analizi

  37. Depth-First Spanning Forest A B F E D C G Algoritma Analizi

  38. Depth-First Spanning Forest A B F E D C G Algoritma Analizi

  39. Depth-First Spanning Forest A B F E D C G Algoritma Analizi

  40. Depth-First Spanning Forest A B F E D C G Algoritma Analizi

  41. DFST 2 DFST 1 Depth-First Spanning Forest A B F E D C G DFSP: Depth First Spanning Tree Algoritma Analizi

  42. Tree 2 Tree 1 Depth-First Spanning Forest A B F E D C G Tree edge: Foresteki her bir edge denir Algoritma Analizi

  43. Depth-First Spanning Forest in Bulunmasi for v:=1 to n do mark[v]:=unvisited for v:=1 to n do if mark[v]=unvisited then dfs(v) Algoritma Analizi

  44. Directed Acyclic Graphs • Directed Acyclic Grapg (DAC) • Cycle a sahip olmayan directed graph • Tree lerden daha genel fakat gelisiguzel graf lardan daha az genel Algoritma Analizi

  45. A A C C B B D D E E A C B D E Tree Cycle sahipdigraph DAG Algoritma Analizi

  46. DAG • DAG lar ortak subexpressionlara sahip aritmetik ifadelerin syntactic yapilarini gosterimde kullanilabilirler * + * * + + + c a b f e ((a+b)*c+((a+b)+e)*(e+f))*((a+b)*c) nin DAG ‘i Algoritma Analizi

  47. Acyclic Testi • Verilen bir directed graph G nin acyclic (bir cycle icerip icermediginin) testi • DFS(depth first search) kullanilarak digrapin acyclic olup olmadigi karar verilebilir • Eger DFS sirasinda bir back edge e rastlanilirsa graph in bir cycle a sahip oldugu anlasilir Algoritma Analizi

  48. Her bir cycle bir back arc icerir v u Algoritma Analizi

  49. Topological Sort • Buyuk capli proje bir dizi alt projelere bolunur • Bu alt projeler belli bir siraya gore tamamlanmali • Ornegin alt proje C baslamasi A ve B nin tamamlanmasindan once olamaz • DAG bu tip durumlari modellemek icin kullanilabilir Algoritma Analizi

  50. Topological Sort C1 C3 C5 C2 C4 Topological Sort: DAG in vertices lerine linear ordering olacak sekilde sirala oyleki eger vertex i den vertex j ye bir arc varsa, linear ordering de i, j den once gelir.Yukaridaki DAG a gore C1,C2,C3,C4,C5 bir linear ordering dir. Algoritma Analizi

More Related