1algoritma analizi directed graphs (yonlu graflar) directed graph (digraph) g=(v,e) –v: vertices...

Post on 01-Apr-2015

242 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1Algoritma Analizi

Directed Graphs (Yonlu Graflar)

Directed graph (digraph) G=(V,E)– V: vertices (nodes)– E: edges (directed edges,arcs)

1 2

43

2Algoritma Analizi

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

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.

4Algoritma Analizi

Labeled Digraph

1 2

3 4

b ba

a

a

a

b b

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 MatrixAdjacency List

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 vi den vj

ye bir arc var– Bazen true 1 le false 0 ile temsil

edilirLabeled Adjacency Matrix

– A[i,j] vi den vj giden arc in label ini gosterir

7Algoritma Analizi

1 2

3 4

b ba

a

a

a

b b

1 2 3 4

1 a b

2 a b

3 b a

4 b aDigraph

Adjacency Matrix

8Algoritma Analizi

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

)( 2n)( 2n

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

10Algoritma Analizi

Adjacency List

2

4

2

3

3

1 2

43

1

2

34

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

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])

endend

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

14Algoritma Analizi

Ornek

1

2 5

43

10 100

6010

30

50

20

Iteration

S W D[2]

D[3]

D[4]

D[5]

Initial {1} - 10 30 100

1 {1,2} 2 10 60 30 100

2 {1,2,4} 4 10 50 30 90

3 {1,2,4,3} 3 10 50 30 60

4 {1,2,4,3,5}

5 10 50 30 60

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.

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(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

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

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

beginfor i:=1 to n do

for j:=1 to n doA[i,j] := C[i,j]

for i:= 1 to n doA[i,i]:=0

for k:=1 to n dofor i:=1 to n do

for j:=1 to n doif A[i,k] + A[k,j] < A[i,j] then

A[i,j]:=A[i,k] + A[k,j]end

19Algoritma Analizi

Ornek (Floyd’s Algorithm)

1 2 32

8

32

5

1 2 3

1 0 8 5

2 3 0

3 2 0

1 2 3

1 0 8 5

2 3 0 8

3 2 0

1 2 3

1 0 8 5

2 3 0 8

3 5 2 0

1 2 3

1 0 7 5

2 3 0 8

3 5 2 0

A0[i,j] A1[i,j]

A2[i,j] A3[i,j]

20Algoritma Analizi

Floyd’s Algorithm vs Dijkstra’s Algorithm

Her ikisi de Adjacency Matrix kullanarak– APSP problemini O(n3) zamanda

cozerEger e, graftaki edge sayisi, n2

den oldukca kucukse, Dijkstra nin algoritmasi O(nelogn) zamanda cozum getirebilir ( O(n3) den daha iyi oldugu umulur)

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

beginfor i:=1 to n do

for j:=1 to n doA[i,j] := C[i,j]P[i,j]:=0

for i:= 1 to n doA[i,i]:=0

for k:=1 to n dofor i:=1 to n do

for j:=1 to n doif A[i,k] + A[k,j] < A[i,j] then {

A[i,j]:=A[i,k] + A[k,j]P[i,j]:=k }

end

22Algoritma Analizi

Shortest Path Printing

procedure path(i,j: integer)begin

k:=P[i,j];if k = 0 then

returnpath(i,k)writeln(k)path(k,j)

end

23Algoritma Analizi

Shortest path uzerindeki vertexler

1 2 32

8

32

5

1 2 3

1 0 3 0

2 0 0 1

3 2 0 0

Yukaridaki digraph icin P matrix i.

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 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 uzereAk[i,j]=Ak-1[i,j] || Ak-1[i,k] && Ak-1[k,j]

25Algoritma Analizi

Transitive Closure

Warshall Algorithmprocedure 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 Cbegin

for i:=1 to n dofor j:=1 to n do

A[i,j]:=C[i,j]for k:=1 to n do

for i:=1 to n dofor j:=1 to n do

if A[i,j]=false thenA[i,j]:=A[i,k] and A[k,j]

end

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

27Algoritma Analizi

Ornek

a

b

c d

e

2

3

12

5

1

4

vertex eccentricity

a

b 6

c 8

d 5

e 7

Center: vertex d

28Algoritma Analizi

a

b

c d

e

2

3

12

5

1

4

a b c d e

a 0 1 3 5 7

b 0 2 4 6

c 3 0 2 4

d 1 3 0 7

e 6 8 5 0

Graph G

G nin APSP cost matrix i

G nin center i vd

ve nin vc ye uzakligi

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

30Algoritma Analizi

E

F

G

B

D

A

C

Depth-First Search (DFS)

31Algoritma Analizi

E

F

G

B

D

A

C

Depth-First Search (DFS)

32Algoritma Analizi

E

F

G

B

D

A

C

Depth-First Search (DFS)

33Algoritma Analizi

E

F

G

B

D

A

C

Depth-First Search (DFS)

34Algoritma Analizi

E

F

G

B

D

A

C

Depth-First Search (DFS)

35Algoritma Analizi

Depth First Search

procedure dfs(v:vertex)w: vertexbegin

mark[v]:=visitedfor each vertex w on L[v] do

if mark[w] = unvisited thendfs(w)

end

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.

37Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

38Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

39Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

40Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

41Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

DFST 1DFST 2

DFSP: Depth First Spanning Tree

42Algoritma Analizi

Depth-First Spanning Forest

E

F

G

B

D

A

C

Tree 1Tree 2

Edge Type

Forward Backward

Cross

CA X

DA X

DC X

FB X

GD X

GF X

Tree edge: Foresteki her bir edge denir

43Algoritma Analizi

Depth-First Spanning Forest in Bulunmasi

for v:=1 to n domark[v]:=unvisited

for v:=1 to n do if mark[v]=unvisited then

dfs(v)

44Algoritma Analizi

Directed Acyclic Graphs

Directed Acyclic Grapg (DAC)– Cycle a sahip olmayan directed

graphTree lerden daha genel fakat

gelisiguzel graf lardan daha az genel

45Algoritma Analizi

A

B C

D E

A

B C

D E

A

B C

D E

Tree DAG Cycle sahipdigraph

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

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

48Algoritma Analizi

v

u

Her bir cycle bir back arc icerir

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

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.

51Algoritma Analizi

Topological Sort

procedure topsort(v:vertex)# print vertices accessible from v in reverse topological order

beginmark[v]:=visitedfor each vertex w on L[v] do

if mark[w] = unvisited thentopsort(w)

writeln(v)end

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 Vi, 1<=i<=r, oyleki v ve w equivalent oyleki v den w ve w den v ye yollar var

– Gi=(Vi,Ei) lere strong components (strongly connected components) denir

Strongly connected graph: Sadece bir tane strong componente sahip digraph

53Algoritma Analizi

Ornek

d

a b

c

digraph

d

a b

c

Digraph in strong componetleri

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)

55Algoritma Analizi

Strongly connected componentlerin bulunmasi

# verilen bir digraph G icin SCC lerin bulunmasi1. G ye depth-first search uygula ve vertex leri recursive call larin bitis sirasina

gore numaralandir2. G deki arc larin yonlerini ters cevirmek suretiyle yeni bir graph Gr 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

56Algoritma Analizi

ornek

d

a b

c

digraph

4

d

a b

c

a

b

c

d

3

2

1

1. adim

4

3

1 2Gr

a

c

b

b 14

2

3

57Algoritma Analizi

A

F

B

C

D

G

E

Digraph G

A

F

B

C

D

G

E

EGAFBDC

Birinci SC nin bulunmasi

A

F

B

C

D

G

E

A

F

B

C

D

G

E

Digraph Gr

3 tane SC nin bulunmasi

Ornek

top related