0% found this document useful (0 votes)
66 views

Graph 1

The document discusses biconnected graphs and articulation points. It describes how to identify articulation points using depth-first search (DFS) and computing low(v) values. It also covers finding strongly connected components in a graph by performing DFS on the original and reversed graph. Key algorithms and theorems are presented for identifying articulation points and strongly connected components.

Uploaded by

dheena thayalan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views

Graph 1

The document discusses biconnected graphs and articulation points. It describes how to identify articulation points using depth-first search (DFS) and computing low(v) values. It also covers finding strongly connected components in a graph by performing DFS on the original and reversed graph. Key algorithms and theorems are presented for identifying articulation points and strongly connected components.

Uploaded by

dheena thayalan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

' $

CS-130A Graphs.1

Biconnectivity

• Graph G is biconnected if there are no


vertices whose removal disconnects the rest of
the graph

Biconnected Not Biconnected

• Articulation Points: Vertex in a graph whose


removal disconnects the graph into two or
more components

& %

' $
CS-130A Graphs.2

Identifying Articulation Points

(Finding Articulation Points)


Define
• Num(v): DFS NUMBER
• Low(v): Lowest-numbered vertex that is
reachable from v by taking zero or more tree
edges and then possibly one back edge (in
that order)
B A A
1/1

B 2/1
C D

Num(v)/Low(v)
C 3/1
F

G E
D G 7/7
4/1

E
5/4

F 6/4

& %
' $
CS-130A Graphs.3

Computation of Low(v)

minimum of
• Num(v)
• lowest Num(w) among all back edges (v,w)
• the lowest Low(w) among all tree edges (v,w).
v v

& %

' $
CS-130A Graphs.4

B C F

E G
D

C 1/1

2/1 4/1
A D

5/1
B 3/1 E 7/5

H
8/5

6/1 G

& %
F
' $
CS-130A Graphs.5

• Root is an articulation
point if it has two or more tree edges

• Vertex v (other than a root) is an articulation


point iff v has some child w such that Low(w)
≥ Num(v), i.e., w cannot be higher than than
v.
4 4

5 4

& %

' $
CS-130A Graphs.6

Finding Strong Components

• A directed graph is strongly connected iff for


every i 6= j there is a directed path from i to
j and one from j to i.
• Partition the set of vertices in G = (V, E) into
sets V1 , V2 , . . . , Vk . The graph
Gi = (Vi , E(Vi )) is said to be a strongly
connected component iff for every l 6= j in Vi
there is a path from l to j and one from j to l;
and for no vertex j ∈ Vi and q ∈ V − Vi , there
is a path from q to j and from j to q in G.

& %
' $
CS-130A Graphs.7

A B
G

D C F H

E J I

Residual graph is acyclic graph

& %

' $
CS-130A Graphs.8

Identifying Strongly Connected Components

• Perform a dfs on G (number vertices in the


order in which you end their recursive calls)
• Construct the reversed graph Gr from G
G Gr

• Perform a dfs on Gr always starting a new dfs


search at the vertex with highest number (last
one to end recursive call in past (first item))
*Every tree in the dfs forest is a strongly
connected component.

& %
' $
CS-130A Graphs.9

Theorem

Theorem:
There is a path from u to v in G and a path from
v to u in G, if and only if u and v end up in the
same spanning tree in the 2nd DFS traversal.
Proof:
(→) If there is a path from u to v in G and a
path from v to u in G, then u and v end up in the
same spanning tree in the 2nd DFS traversal.

u
v

In the 2nd DFS assume the dfs(u) is called before


dfs(v).

& %

' $
CS-130A Graphs.10

Proof: Cont’

We know there is a path from u to v.


u u1 u2 ...... uk v

ui must appear in the same spanning tree as u or


in a previous one. The same holds for v. Since u
is visited before v then u and v are in the same
spanning tree.

& %
' $
CS-130A Graphs.11

Theorem

Proof for (←)


If u and v end up in the same spanning tree in
the 2nd DFS traversal, then there is a path from u
to v in G and a path from v to u in G.
Assume without of generality that the spanning
tree for u and v is
x

u x v

u v

Therefore, #x > #u, #x > #v. This implies that


dfs(x) terminated after dfs(u) in the first dfs.
→ time increases from left to right
x
dfs(x) dfs(x) In the first dfs
alternative path from x to u
u
dfs(u)

dfs(x)
Not possible

dfs(u)
dfs(x) Not possible, there is a path from u to x in G

dfs(u)

Using similar argument we know that there is a

& %
path from x to v. This concludes the proof.

You might also like