graph -definition v : vertex set (頂点集合) a ⊆ v×v: arc set (枝集合) g=(v, a)...

Post on 21-Jan-2016

275 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Graph -definitionV : vertex set (頂点集合)

A⊆V×V: arc set (枝集合)

G=(V, A)     discrete structure (離散構造)

vertex (頂点)

arc (枝)

3. グラフ探索to examine the vertices and arcs of a graph, systematically.

•  depth first search(DFS)  深さ優先探索•  breadth first search(BFS)   幅優先探索

DFS (深さ優先探索)

from a vertex v already treated, we proceed to any vertex w adjacent to v which was not yet treated and, after having examined w, continue to look for the next unlabeled vertex directly from w.

DFS example

a (= s)

bc d

e

fg

h

a b,c,d

b a,e,f

c a

d a,g

e b,f,g

f b,e

g d,e,h

h g

Av

nr p1 0

0 00 0

0 0

0 0

0 0

0 0

0 0

Initialization v w true

2 a

3 b4 e5 e

6 g

7 g

8 a

DFS property(1)

a (= s)

bc d

e

fg

h

nr p 1 0

2 a

3 b4 e

5 e

6 g

7 g

8 a

Each arc in the connected component of s is used exactly once in each direction during DFS

DFS property(2)

a (= s)

bc d

e

fg

h

nr p 1 0

2 a

3 b4 e

5 e

6 g

7 g

8 a

A’={(p(v), v) | v V}∈When G is connected, T=(V, A’) is a spanning directed tree with root s. --- Depth first search tree

BFS (幅優先探索)

Process all the neighbors of the starting vertex. Then process allthe neighbors of neighbors of the starting vertex. And so on.

a (= s)

bc d

e

fg

h

d p 0 0

0 0

0 00 0

0 0

0 0

0 0

0 0

BFS exampleQ= [ ] v w

a b c d e f g h

a b,c,d

b a,e,f

c a

d a,g

e b,f,g

f b,e

g d,e,h

h g

Av

1 a

1 a1 a

2 b2 b2 d

3 g

BFS property (1)Each arc in the connected component of s is used exactly once in each direction during BFS

a (= s)

bc d

e

fg

h

d p 0 0

1 a

1 a1 a

2 b2 b2 d

3 g

BFS property (2)

a (= s)

bc d

e

fg

h

d p 0 0

1 a

1 a1 a

2 b2 b

2 d

3 g

A’={(p(v), v) | v V}∈When G is connected, T=(V, A’) is a spanning directed tree with root s. ---- Breadth first search tree

BFS property (3)

a (= s)

bc d

e

fg

h

d p 0 0

1 a

1 a1 a

2 b2 b2 d

3 g

If v and v’ are two vertices in the same connected component, there is a path of shortest length l between v and v’. Then v and v’ are said to have distance l = d(v, v’)

At the end of BFS,

d(s, t) = d(v), if d(v) is defined.

For digraphWe can apply DFS and BFS to digraphs.

a (= s)

bc d

e

fg

h

nr p 1 0

2 a

7 g3 b

6 d

5 a

8 g

4 a

a b,c,d

b f

c

d g

e b,f

f

g e,h

h

Av(DFS)

Finding strongly connected components

We can determine strongly connected components in a digraph G by executing the (modified) DFS both for G and for the directed graph having opposite orientation.

DFS+

input Graph G and a vertex sbegin set nr(v)←0, p(v)←0, Nr(v)←0 for all v∈V; set u(a)←false for all a∈A; set i ←1, v←s, nr(s)←1, j←0; repeat while there exists w∈Av with u(vw)=false do begin choose some w∈Av with u(vw)=false ; set u(vw)←true; if nr(w) = 0 then set p(w)←v, i←i+1, nr(w)←i, v←w; end set j←j+1, Nr(v)← j, v←p(v); until v=s and u(sw)=true for all w∈As;end.

nr(v) gives the order in which the vertex v is reached

Nr(v) gives the order in which the examination of the vertex v is finished

DFS+ example

1

2

3

4

5

6

DFS+ propertyIf Nr(v) <Nr(x) for two vertices v, x

v

x

in different DFS trees

v

x

v is descendant of x

v

x

in the same tree, butv is not descendant nor ancestor of x

and x is accessible from v

v is accessible from x

Algorithm for strongly connected component

input digraph Gbegin apply DFS+ to G and obtain Nr; construct the digraph H by reversing the orientation of all arcs of G; set k←0; repeat choose the vertex r in H for which Nr(r) is maximal; apply DFS+ to H where the starting vertex s=r. set k←k+1, Ck←{v V | nr(v) ≠0}∈ ; set H←H\Ck; until the vertex set of H is empty;end.

SCC

C1, C2, …,Ck are vertex sets of strongly connected components

SCC example

1

23

4

5

6

SCC correctnesstwo vertices v and w are in the same strong component

⇔two vertices v and w are in the same set Ci

( )⇒

  v and w are in the same strong component⇒ there are directed paths from v to w and from w to v in G⇒ there are directed paths from v to w and from w to v in H

⇒ w.l.o.g. v is reached before w in DFS on H, v∈Ci , then w∈Ci

SCC correctnesstwo vertices v and w are in the same strong component

⇔two vertices v and w are in the same set Ci

() ⇒

  v and w are in the same set Ci⇒ v and w are in the same DFS tree Ti

Let x be the root of Ti

⇒ Nr(x)>Nr(v) and v is accessible from x Nr(x)>Nr(w) and w is accessible from x

⇒ x is accessible from v x is accessible from w

x

v

w

not contain a directed cycle

Acyclic (非閉路) digraph

Acyclic graph example

undershorts

pants

belts

shirt

tie

jacket

shoes

socks 12

34

5

67

8

topological order :o

for any arc(v, w), o(v) < o(w)

Topological sort

Let G be a directed acyclic graph. Then G contains at least one vertex with din (v) = 0, where din (v) denotes the number of arcs having head v.

1

2

3 4 5

6

7

8

9

top related