Presentation is loading. Please wait.

Presentation is loading. Please wait.

1Algoritma Analizi Directed Graphs (Yonlu Graflar) Directed graph (digraph) G=(V,E) –V: vertices (nodes) –E: edges (directed edges,arcs) 12 4 3.

Similar presentations


Presentation on theme: "1Algoritma Analizi Directed Graphs (Yonlu Graflar) Directed graph (digraph) G=(V,E) –V: vertices (nodes) –E: edges (directed edges,arcs) 12 4 3."— Presentation transcript:

1 1Algoritma Analizi Directed Graphs (Yonlu Graflar) Directed graph (digraph) G=(V,E) –V: vertices (nodes) –E: edges (directed edges,arcs)

2 2Algoritma Analizi 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 –vertex v 1 den vertex v n 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

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

4 4Algoritma Analizi Labeled Digraph b b a a a a b b

5 5Algoritma Analizi 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

6 6Algoritma Analizi 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 v i den v j ye bir arc var –Bazen true 1 le false 0 ile temsil edilir Labeled Adjacency Matrix –A[i,j] v i den v j giden arc in label ini gosterir

7 7Algoritma Analizi b b a a a a b b ab 2ab 3ba 4ba Digraph Adjacency Matrix

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

9 9Algoritma Analizi 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

10 10Algoritma Analizi Adjacency List

11 11Algoritma Analizi 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

12 12Algoritma Analizi 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

13 13Algoritma Analizi 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

14 14Algoritma Analizi Ornek IterationSWD[2]D[3]D[4]D[5] Initial{1} {1,2} {1,2,4} {1,2,4,3} {1,2,4,3,5}

15 15Algoritma Analizi 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.

16 16Algoritma Analizi 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(n 2 ) olur Eger e n 2 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

17 17Algoritma Analizi 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

18 18Algoritma Analizi 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

19 19Algoritma Analizi Ornek (Floyd’s Algorithm) A 0 [i,j] A 1 [i,j] A 2 [i,j] A 3 [i,j]

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

21 21Algoritma Analizi 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

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

23 23Algoritma Analizi Shortest path uzerindeki vertexler Yukaridaki digraph icin P matrix i.

24 24Algoritma Analizi 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 v i den v j 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 v k dan v j ye bir yol var # A bir boolean matriks olmak uzere A k [i,j]=A k-1 [i,j] || A k-1 [i,k] && A k-1 [k,j]

25 25Algoritma Analizi 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 fori:=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

26 26Algoritma Analizi 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

27 27Algoritma Analizi Ornek a b cd e vertexeccentricity a b6 c8 d5 e7 Center: vertex d

28 28Algoritma Analizi a b cd e abcde a01357 b0246 c3024 d1307 e6850 Graph G G nin APSP cost matrix i G nin center i v d v e nin v c ye uzakligi

29 29Algoritma Analizi 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

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

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

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

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

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

35 35Algoritma Analizi 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

36 36Algoritma Analizi 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.

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

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

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

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

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

42 42Algoritma Analizi Depth-First Spanning Forest E F G B D A C Tree 1 Tree 2 EdgeType ForwardBackwardCross CAX DAX DCX FBX GDX GFX Tree edge: Foresteki her bir edge denir

43 43Algoritma Analizi 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)

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

45 45Algoritma Analizi A B C D E A B C D E A B C D E Tree DAG Cycle sahip digraph

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

47 47Algoritma Analizi 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

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

49 49Algoritma Analizi 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

50 50Algoritma Analizi C1 C2 C3 C4 C5 Topological Sort 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.

51 51Algoritma Analizi Topological Sort procedure topsort(v:vertex) # print vertices accessible from v in reverse topological order begin mark[v]:=visited for each vertex w on L[v] do if mark[w] = unvisited then topsort(w) writeln(v) end

52 52Algoritma Analizi Strong Components Strongly connected component (SCC): –Bir directed grafin SCC i, vertex lerden olusan maximal bir set oyleki bu sette bulunan herhangi iki farkli vertex arasinda yonlu bir yol var –G = (V,E) bir digraf. V equivalance class lara bolunebilir V i, 1<=i<=r, oyleki v ve w equivalent oyleki v den w ve w den v ye yollar var –Gi=(V i,E i ) lere strong components (strongly connected components) denir Strongly connected graph: Sadece bir tane strong componente sahip digraph

53 53Algoritma Analizi Ornek d a b c digraph d a b c Digraph in strong componetleri

54 54Algoritma Analizi ornek A F B C D G E A F B C D G E Digrah Strong Components ABDF C EG Condensation Graph (reduced graph)

55 55Algoritma Analizi Strongly connected componentlerin bulunmasi # verilen bir digraph G icin SCC lerin bulunmasi 1. G ye depth-first search uygula ve vertex leri recursive call larin bitis sirasina gore numaralandir 2. G deki arc larin yonlerini ters cevirmek suretiyle yeni bir graph G r bul. 3. Gr uzerinde 1. adimda elde edilen en yuksek numarali vertex den baslamak suretiyle depth-firstsearh uygula. Eger depth-first search butun vertex lere erisemezse, sonraki depth-first search i kalan vertex ler icerisinden en kucuk numarali vertex den baslat 4. Bulunan spanning foresteki her bir tree G nin bir strongly connected componentidir

56 56Algoritma Analizi ornek d a b c digraph 4 d a b c a b c d adim GrGr a c b b

57 57Algoritma Analizi A F B C D G E Digraph G A F B C D G E EGAFBDCEGAFBDC Birinci SC nin bulunmasi A F B C D G E A F B C D G E Digraph G r 3 tane SC nin bulunmasi Ornek


Download ppt "1Algoritma Analizi Directed Graphs (Yonlu Graflar) Directed graph (digraph) G=(V,E) –V: vertices (nodes) –E: edges (directed edges,arcs) 12 4 3."

Similar presentations


Ads by Google