B.Tech Admission in India 
By: 
admission.edhole.com
Elementary Graph Algorithms 
admission.edhole.com 
Comp 122, Fall 2004
Graphs 
Graph G = (V, E) 
V = set of vertices 
E = set of edges Í (V´V) 
Types of graphs 
Undirected: edge (u, v) = (v, u); for all v, (v, v) Ï E (No self loops.) 
Directed: (u, v) is edge from u to v, denoted as u ® v. Self loops are 
allowed. 
Weighted: each edge has an associated weight, given by a weight function 
w : E ® R. 
Dense: |E| » |V|2. 
Sparse: |E| << |V|2. 
|E| = O(|V|2) 
admission.edhole.com 
Comp 122, Fall 2004
Graphs 
If (u, v) Î E, then vertex v is adjacent to vertex u. 
Adjacency relationship is: 
Symmetric if G is undirected. 
Not necessarily so if G is directed. 
If G is connected: 
There is a path between every pair of vertices. 
|E| ³ |V| – 1. 
Furthermore, if |E| = |V| – 1, then G is a tree. 
Other definitions in Appendix B (B.4 and B.5) as 
needed. 
admission.edhole.com 
Comp 122, Fall 2004
Representation of Graphs 
Two standard ways. 
Adjacency a 
Lists. 
c d 
Adjacency Matrix. 
1 2 
1 2 3 4 
1 0 1 1 1 
2 1 0 1 0 
3 1 1 0 1 
4 1 0 1 0 admission.edhole.com 
Comp 122, Fall 2004 
b 
a 
b 
c 
d 
b 
a 
d 
d c 
c 
a b 
a c 
a 
b 
c d 
3 4
Adjacency Lists 
Consists of an array Adj of |V| lists. 
One list per vertex. 
For u Î V, Adj[u] consists of all vertices adjacent to u. 
a 
b 
c d 
a 
b 
c 
d 
b 
Comp 122, Fall 2004 
b 
c 
d 
d c 
a 
c d 
a 
b 
c 
d 
b 
a 
d 
d c 
c 
a b 
a c 
If weighted, store weights also in 
adjacency lists. 
admission.edhole.com
Storage Requirement 
For directed graphs: 
Sum of lengths of all adj. lists is 
åout-degree(v) = |E| 
vÎV 
Total storage: Q(V+E) 
For undirected graphs: 
Sum of lengths of all adj. lists is 
ådegree(v) = 2|E| 
vÎV 
Total storage: Q(V+E) 
Comp 122, Fall 2004 
No. of edges leaving v 
No. of edges incident on v. Edge (u,v) is 
incident on vertices u and v. 
admission.edhole.com
Pros and Cons: adj list 
Pros 
Space-efficient, when a graph is sparse. 
Can be modified to support many graph variants. 
Cons 
Determining if an edge (u,v) ÎG is not efficient. 
Have to search in u’s adjacency list. Q(degree(u)) time. 
Q(V) in the worst case. 
admission.edhole.com 
Comp 122, Fall 2004
Adjacency Matrix 
|V| ´ |V| matrix A. 
Number vertices from 1 to |V| in some arbitrary 
manner. 
A is then given by: 
1 2 
b 
1 2 
b 
Comp 122, Fall 2004 
1 if ( , ) 
î í ì 
Î 
= = 
0 otherwise 
[ , ] 
i j E 
A i j aij 
a 
c d 
3 4 
1 2 3 4 
1 0 1 1 1 
2 0 0 1 0 
3 0 0 0 1 
4 0 0 0 0 
a 
c d 
3 4 
1 2 3 4 
1 0 1 1 1 
2 1 0 1 0 
3 1 1 0 1 
4 1 0 1 0 
A = AT for undirected graphs. 
admission.edhole.com
Space and Time 
Space: Q(V2). 
Not memory efficient for large graphs. 
Time: to list all vertices adjacent to u: Q(V). 
Time: to determine if (u, v) Î E: Q(1). 
Can store weights instead of bits for weighted graph. 
admission.edhole.com 
Comp 122, Fall 2004
Graph-searching Algorithms 
Searching a graph: 
Systematically follow the edges of a graph 
to visit the vertices of the graph. 
Used to discover the structure of a graph. 
Standard graph-searching algorithms. 
Breadth-first Search (BFS). 
Depth-first Search (DFS). 
school.edhole.com 
Comp 122, Fall 2004
Breadth-first Search 
Input: Graph G = (V, E), either directed or undirected, 
and source vertex s Î V. 
Output: 
d[v] = distance (smallest # of edges, or shortest path) from s to v, for all v 
Î V. d[v] = ¥ if v is not reachable from s. 
p[v] = u such that (u, v) is last edge on shortest path s v. 
u is v’s predecessor. 
Builds breadth-first tree with root s that contains all reachable vertices. 
Definitions: 
Path between vertices u and v: Sequence of vertices (v1, v2, …, vk) such that 
u=v1 and v =vk, and (vi,vi+1) Î E, for all 1£ i £ k-1. 
Length of the path: Number of edges in the path. 
Path is simple if no vertex is repeated. 
Comp 122, Fall 2004 
Error! 
school.edhole.com
Breadth-first Search 
Expands the frontier between discovered and undiscovered 
vertices uniformly across the breadth of the frontier. 
A vertex is “discovered” the first time it is encountered during the 
search. 
A vertex is “finished” if all vertices adjacent to it have been discovered. 
Colors the vertices to keep track of progress. 
White – Undiscovered. 
Gray – Discovered but not finished. 
Black – Finished. 
Colors are required only to reason about the algorithm. Can be implemented 
without colors. 
admission.edhole.com 
Comp 122, Fall 2004
BFS(G,s) 
1. for each vertex u in V[G] – {s} 
2 do color[u] ¬ white 
3 d[u] ¬ µ 
4 p[u] ¬ nil 
5 color[s] ¬ gray 
6 d[s] ¬ 0 
7 p[s] ¬ nil 
8 Q ¬ F 
9 enqueue(Q,s) 
10 while Q ¹ F 
11 do u ¬ dequeue(Q) 
12 for each v in Adj[u] 
13 do if color[v] = white 
14 then color[v] ¬ gray 
15 d[v] ¬ d[u] + 1 
16 p[v] ¬ u 
17 enqueue(Q,v) 
18 color[u] ¬ black 
BFS(G,s) 
1. for each vertex u in V[G] – {s} 
2 do color[u] ¬ white 
3 d[u] ¬ µ 
4 p[u] ¬ nil 
5 color[s] ¬ gray 
6 d[s] ¬ 0 
7 p[s] ¬ nil 
8 Q ¬ F 
9 enqueue(Q,s) 
10 while Q ¹ F 
11 do u ¬ dequeue(Q) 
12 for each v in Adj[u] 
13 do if color[v] = white 
14 then color[v] ¬ gray 
15 d[v] ¬ d[u] + 1 
16 p[v] ¬ u 
17 enqueue(Q,v) 
18 color[u] ¬ black 
Comp 122, Fall 2004 
white: undiscovered 
gray: discovered 
black: finished 
Q: a queue of discovered 
vertices 
color[v]: color of v 
d[v]: distance from s to v 
p[u]: predecessor of v 
Example: animation. 
school.edhole.com
Example (BFS) 
(Courtesy of Prof. Jim Anderson) 
r s t u 
¥ 0 
Comp 122, Fall 2004 
¥ ¥ 
¥ ¥ ¥ 
¥ 
v w x y 
Q: s 
0 
admission.edhole.com
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
¥ ¥ 
1 ¥ ¥ 
¥ 
v w x y 
Q: w r 
admission.edhole.com 1 1
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 ¥ 
1 2 ¥ 
¥ 
v w x y 
Q: r t x 
admission.edhole.com 1 2 2
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 ¥ 
1 2 ¥ 
2 
v w x y 
Q: t x v 
admission.edhole.com 2 2 2
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 ¥ 
2 
v w x y 
Q: x v u 
admission.edhole.com 2 2 3
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 3 
2 
v w x y 
Q: v u y 
admission.edhole.com 2 3 3
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 3 
2 
v w x y 
Q: u y 
admission.edhole.com 3 3
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 3 
2 
v w x y 
Q: y 
admission.edhole.com 3
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 3 
2 
v w x y 
Q: Æ 
admission.edhole.com
Example (BFS) 
r s t u 
1 0 
Comp 122, Fall 2004 
2 3 
1 2 3 
2 
v w x y 
BF Tree 
admission.edhole.com
Analysis of BFS 
Initialization takes O(V). 
Traversal Loop 
After initialization, each vertex is enqueued and dequeued at most once, 
and each operation takes O(1). So, total time for queuing is O(V). 
The adjacency list of each vertex is scanned at most once. The sum of 
lengths of all adjacency lists is Q(E). 
Summing up over all vertices => total running time of BFS is 
O(V+E), linear in the size of the adjacency list representation of 
graph. 
Correctness Proof 
We omit for BFS and DFS. 
Will do for later algorithms. 
admission.edhole.com 
Comp 122, Fall 2004
Breadth-first Tree 
For a graph G = (V, E) with source s, the predecessor 
subgraph of G is Gp = (Vp , Ep) where 
 Vp ={vÎV : p[v] ¹ NIL}{s} 
 Ep ={(p[v],v)ÎE : v Î Vp - {s}} 
The predecessor subgraph Gp is a breadth-first tree if: 
 Vp consists of the vertices reachable from s and 
 for all vÎVp , there is a unique simple path from s to v in Gp that is also 
a shortest path from s to v in G. 
The edges in Ep are called tree edges. 
|Ep | = |Vp | - 1. 
admission.edhole.com 
Comp 122, Fall 2004
Depth-first Search (DFS) 
Explore edges out of the most recently discovered vertex v. 
When all edges of v have been explored, backtrack to explore 
other edges leaving the vertex from which v was discovered 
(its predecessor). 
“Search as deep as possible first.” 
Continue until all vertices reachable from the original source 
are discovered. 
If any undiscovered vertices remain, then one of them is 
chosen as a new source and search is repeated from that 
source. 
admission.edhole.com 
Comp 122, Fall 2004
Depth-first Search 
Input: G = (V, E), directed or undirected. No source vertex 
given! 
Output: 
 2 timestamps on each vertex. Integers between 1 and 2|V|. 
d[v] = discovery time (v turns from white to gray) 
f [v] = finishing time (v turns from gray to black) 
p[v] : predecessor of v = u, such that v was discovered during the scan of 
u’s adjacency list. 
Uses the same coloring scheme for vertices as BFS. 
admission.edhole.com 
Comp 122, Fall 2004
Pseudo-code 
DFS(G) 
1. for each vertex u Î V[G] 
2. do color[u] ¬ white 
3. p[u] ¬ NIL 
4. time ¬ 0 
5. for each vertex u Î V[G] 
6. do if color[u] = white 
7. then DFS-Visit(u) 
DFS(G) 
1. for each vertex u Î V[G] 
2. do color[u] ¬ white 
3. p[u] ¬ NIL 
4. time ¬ 0 
5. for each vertex u Î V[G] 
6. do if color[u] = white 
7. then DFS-Visit(u) 
Uses a global timestamp time. 
Comp 122, Fall 2004 
DFS-Visit(u) 
1. color[u] ¬ GRAY Ñ White vertex u 
DFS-Visit(u) 
1. color[u] ¬ GRAY Ñ White vertex u 
has been discovered 
has been discovered 
2. time ¬ time + 1 
3. d[u] ¬ time 
4. for each v Î Adj[u] 
5. do if color[v] = WHITE 
6. then p[v] ¬ u 
7. DFS-Visit(v) 
8. color[u] ¬ BLACK Ñ Blacken u; 
2. time ¬ time + 1 
3. d[u] ¬ time 
4. for each v Î Adj[u] 
5. do if color[v] = WHITE 
6. then p[v] ¬ u 
7. DFS-Visit(v) 
8. color[u] ¬ BLACK Ñ Blacken u; 
it is finished. 
it is finished. 
9. f[u] ¬ time ¬ time + 1 
9. f[u] ¬ time ¬ time + 1 
Example: animation. 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
(Courtesy of Prof. Jim Anderson) 
u v w 
1/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 2/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/ 
3/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/ 
4/ 3/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/ 
B 
4/ 3/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/ 
B 
4/5 3/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/ 
B 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/7 
B 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/ 
2/7 
F B 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 
F B 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/ 
F B 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/ 
F B C 
4/5 3/6 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/ 
F B C 
4/5 3/6 10/ 
x y z 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/ 
F B C 
4/5 3/6 10/ 
x y z 
B 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/ 
F B C 
4/5 3/6 10/11 
x y z 
B 
admission.edhole.com
Example (DFS) 
Comp 122, Fall 2004 
u v w 
1/8 
2/7 9/12 
F B C 
4/5 3/6 10/11 
x y z 
B 
admission.edhole.com
Analysis of DFS 
Loops on lines 1-2 & 5-7 take Q(V) time, excluding time to 
execute DFS-Visit. 
DFS-Visit is called once for each white vertex vÎV when it’s 
painted gray the first time. Lines 3-6 of DFS-Visit is executed 
|Adj[v]| times. The total cost of executing DFS-Visit is åvÎV| 
Adj[v]| = Q(E) 
Total running time of DFS is Q(V+E). 
admission.edhole.com 
Comp 122, Fall 2004
Parenthesis Theorem 
Theorem 22.7 
For all u, v, exactly one of the following holds: 
1. d[u] < f [u] < d[v] < f [v] or d[v] < f [v] < d[u] < f [u] and neither u nor v is a 
descendant of the other. 
2. d[u] < d[v] < f [v] < f [u] and v is a descendant of u. 
3. d[v] < d[u] < f [u] < f [v] and u is a descendant of v. 
 So d[u] < d[v] < f [u] < f [v] cannot happen. 
 Like parentheses: 
Theorem 22.7 
For all u, v, exactly one of the following holds: 
1. d[u] < f [u] < d[v] < f [v] or d[v] < f [v] < d[u] < f [u] and neither u nor v is a 
descendant of the other. 
2. d[u] < d[v] < f [v] < f [u] and v is a descendant of u. 
3. d[v] < d[u] < f [u] < f [v] and u is a descendant of v. 
 OK: ( ) [ ] ( [ ] ) [ ( ) ] 
 Not OK: ( [ ) ] [ ( ] ) 
Corollary 
v is a proper descendant of u if and only if d[u] < d[v] < f [v] < f [u]. admission.edhole.com 
Comp 122, Fall 2004
Example (Parenthesis Theorem) 
y z s 
3/6 
B F 
C B 
4/5 7/8 12/13 
Comp 122, Fall 2004 
2/9 1/10 
x w v 
t 
11/16 
14/15 
u 
C C C 
(s (z (y (x x) y) (w w) z) s) (t (v v) (u u) t) 
admission.edhole.com
Depth-First Trees 
Predecessor subgraph defined slightly different from that of 
BFS. 
The predecessor subgraph of DFS is Gp = (V, Ep) where Ep 
={(p[v],v) : v Î V and p[v] ¹ NIL}. 
How does it differ from that of BFS? 
 The predecessor subgraph Gp forms a depth-first forest composed of 
several depth-first trees. The edges in Ep are called tree edges. 
Definition: 
Forest: An acyclic graph G that may be disconnected. 
admission.edhole.com 
Comp 122, Fall 2004
White-path Theorem 
Theorem 22.9 
v is a descendant of u if and only if at time d[u], there is a path u v 
consisting of only white vertices. (Except for u, which was just colored 
gray.) 
Theorem 22.9 
v is a descendant of u if and only if at time d[u], there is a path u v 
consisting of only white vertices. (Except for u, which was just colored 
gray.) 
admission.edhole.com 
Comp 122, Fall 2004
Classification of Edges 
Tree edge: in the depth-first forest. Found by exploring (u, v). 
Back edge: (u, v), where u is a descendant of v (in the depth-first 
tree). 
Forward edge: (u, v), where v is a descendant of u, but not a 
tree edge. 
Cross edge: any other edge. Can go between vertices in same 
depth-first tree or in different depth-first trees. 
Theorem: 
In DFS of an undirected graph, we get only tree and back edges. 
No forward or cross edges. 
admission.edhole.com 
Theorem: 
In DFS of an undirected graph, we get only tree and back edges. 
No forward or cross edges. 
Comp 122, Fall 2004

B.tech admission in india

  • 1.
    B.Tech Admission inIndia By: admission.edhole.com
  • 2.
    Elementary Graph Algorithms admission.edhole.com Comp 122, Fall 2004
  • 3.
    Graphs Graph G= (V, E) V = set of vertices E = set of edges Í (V´V) Types of graphs Undirected: edge (u, v) = (v, u); for all v, (v, v) Ï E (No self loops.) Directed: (u, v) is edge from u to v, denoted as u ® v. Self loops are allowed. Weighted: each edge has an associated weight, given by a weight function w : E ® R. Dense: |E| » |V|2. Sparse: |E| << |V|2. |E| = O(|V|2) admission.edhole.com Comp 122, Fall 2004
  • 4.
    Graphs If (u,v) Î E, then vertex v is adjacent to vertex u. Adjacency relationship is: Symmetric if G is undirected. Not necessarily so if G is directed. If G is connected: There is a path between every pair of vertices. |E| ³ |V| – 1. Furthermore, if |E| = |V| – 1, then G is a tree. Other definitions in Appendix B (B.4 and B.5) as needed. admission.edhole.com Comp 122, Fall 2004
  • 5.
    Representation of Graphs Two standard ways. Adjacency a Lists. c d Adjacency Matrix. 1 2 1 2 3 4 1 0 1 1 1 2 1 0 1 0 3 1 1 0 1 4 1 0 1 0 admission.edhole.com Comp 122, Fall 2004 b a b c d b a d d c c a b a c a b c d 3 4
  • 6.
    Adjacency Lists Consistsof an array Adj of |V| lists. One list per vertex. For u Î V, Adj[u] consists of all vertices adjacent to u. a b c d a b c d b Comp 122, Fall 2004 b c d d c a c d a b c d b a d d c c a b a c If weighted, store weights also in adjacency lists. admission.edhole.com
  • 7.
    Storage Requirement Fordirected graphs: Sum of lengths of all adj. lists is åout-degree(v) = |E| vÎV Total storage: Q(V+E) For undirected graphs: Sum of lengths of all adj. lists is ådegree(v) = 2|E| vÎV Total storage: Q(V+E) Comp 122, Fall 2004 No. of edges leaving v No. of edges incident on v. Edge (u,v) is incident on vertices u and v. admission.edhole.com
  • 8.
    Pros and Cons:adj list Pros Space-efficient, when a graph is sparse. Can be modified to support many graph variants. Cons Determining if an edge (u,v) ÎG is not efficient. Have to search in u’s adjacency list. Q(degree(u)) time. Q(V) in the worst case. admission.edhole.com Comp 122, Fall 2004
  • 9.
    Adjacency Matrix |V|´ |V| matrix A. Number vertices from 1 to |V| in some arbitrary manner. A is then given by: 1 2 b 1 2 b Comp 122, Fall 2004 1 if ( , ) î í ì Î = = 0 otherwise [ , ] i j E A i j aij a c d 3 4 1 2 3 4 1 0 1 1 1 2 0 0 1 0 3 0 0 0 1 4 0 0 0 0 a c d 3 4 1 2 3 4 1 0 1 1 1 2 1 0 1 0 3 1 1 0 1 4 1 0 1 0 A = AT for undirected graphs. admission.edhole.com
  • 10.
    Space and Time Space: Q(V2). Not memory efficient for large graphs. Time: to list all vertices adjacent to u: Q(V). Time: to determine if (u, v) Î E: Q(1). Can store weights instead of bits for weighted graph. admission.edhole.com Comp 122, Fall 2004
  • 11.
    Graph-searching Algorithms Searchinga graph: Systematically follow the edges of a graph to visit the vertices of the graph. Used to discover the structure of a graph. Standard graph-searching algorithms. Breadth-first Search (BFS). Depth-first Search (DFS). school.edhole.com Comp 122, Fall 2004
  • 12.
    Breadth-first Search Input:Graph G = (V, E), either directed or undirected, and source vertex s Î V. Output: d[v] = distance (smallest # of edges, or shortest path) from s to v, for all v Î V. d[v] = ¥ if v is not reachable from s. p[v] = u such that (u, v) is last edge on shortest path s v. u is v’s predecessor. Builds breadth-first tree with root s that contains all reachable vertices. Definitions: Path between vertices u and v: Sequence of vertices (v1, v2, …, vk) such that u=v1 and v =vk, and (vi,vi+1) Î E, for all 1£ i £ k-1. Length of the path: Number of edges in the path. Path is simple if no vertex is repeated. Comp 122, Fall 2004 Error! school.edhole.com
  • 13.
    Breadth-first Search Expandsthe frontier between discovered and undiscovered vertices uniformly across the breadth of the frontier. A vertex is “discovered” the first time it is encountered during the search. A vertex is “finished” if all vertices adjacent to it have been discovered. Colors the vertices to keep track of progress. White – Undiscovered. Gray – Discovered but not finished. Black – Finished. Colors are required only to reason about the algorithm. Can be implemented without colors. admission.edhole.com Comp 122, Fall 2004
  • 14.
    BFS(G,s) 1. foreach vertex u in V[G] – {s} 2 do color[u] ¬ white 3 d[u] ¬ µ 4 p[u] ¬ nil 5 color[s] ¬ gray 6 d[s] ¬ 0 7 p[s] ¬ nil 8 Q ¬ F 9 enqueue(Q,s) 10 while Q ¹ F 11 do u ¬ dequeue(Q) 12 for each v in Adj[u] 13 do if color[v] = white 14 then color[v] ¬ gray 15 d[v] ¬ d[u] + 1 16 p[v] ¬ u 17 enqueue(Q,v) 18 color[u] ¬ black BFS(G,s) 1. for each vertex u in V[G] – {s} 2 do color[u] ¬ white 3 d[u] ¬ µ 4 p[u] ¬ nil 5 color[s] ¬ gray 6 d[s] ¬ 0 7 p[s] ¬ nil 8 Q ¬ F 9 enqueue(Q,s) 10 while Q ¹ F 11 do u ¬ dequeue(Q) 12 for each v in Adj[u] 13 do if color[v] = white 14 then color[v] ¬ gray 15 d[v] ¬ d[u] + 1 16 p[v] ¬ u 17 enqueue(Q,v) 18 color[u] ¬ black Comp 122, Fall 2004 white: undiscovered gray: discovered black: finished Q: a queue of discovered vertices color[v]: color of v d[v]: distance from s to v p[u]: predecessor of v Example: animation. school.edhole.com
  • 15.
    Example (BFS) (Courtesyof Prof. Jim Anderson) r s t u ¥ 0 Comp 122, Fall 2004 ¥ ¥ ¥ ¥ ¥ ¥ v w x y Q: s 0 admission.edhole.com
  • 16.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 ¥ ¥ 1 ¥ ¥ ¥ v w x y Q: w r admission.edhole.com 1 1
  • 17.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 ¥ 1 2 ¥ ¥ v w x y Q: r t x admission.edhole.com 1 2 2
  • 18.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 ¥ 1 2 ¥ 2 v w x y Q: t x v admission.edhole.com 2 2 2
  • 19.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 ¥ 2 v w x y Q: x v u admission.edhole.com 2 2 3
  • 20.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 3 2 v w x y Q: v u y admission.edhole.com 2 3 3
  • 21.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 3 2 v w x y Q: u y admission.edhole.com 3 3
  • 22.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 3 2 v w x y Q: y admission.edhole.com 3
  • 23.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 3 2 v w x y Q: Æ admission.edhole.com
  • 24.
    Example (BFS) rs t u 1 0 Comp 122, Fall 2004 2 3 1 2 3 2 v w x y BF Tree admission.edhole.com
  • 25.
    Analysis of BFS Initialization takes O(V). Traversal Loop After initialization, each vertex is enqueued and dequeued at most once, and each operation takes O(1). So, total time for queuing is O(V). The adjacency list of each vertex is scanned at most once. The sum of lengths of all adjacency lists is Q(E). Summing up over all vertices => total running time of BFS is O(V+E), linear in the size of the adjacency list representation of graph. Correctness Proof We omit for BFS and DFS. Will do for later algorithms. admission.edhole.com Comp 122, Fall 2004
  • 26.
    Breadth-first Tree Fora graph G = (V, E) with source s, the predecessor subgraph of G is Gp = (Vp , Ep) where  Vp ={vÎV : p[v] ¹ NIL}{s}  Ep ={(p[v],v)ÎE : v Î Vp - {s}} The predecessor subgraph Gp is a breadth-first tree if:  Vp consists of the vertices reachable from s and  for all vÎVp , there is a unique simple path from s to v in Gp that is also a shortest path from s to v in G. The edges in Ep are called tree edges. |Ep | = |Vp | - 1. admission.edhole.com Comp 122, Fall 2004
  • 27.
    Depth-first Search (DFS) Explore edges out of the most recently discovered vertex v. When all edges of v have been explored, backtrack to explore other edges leaving the vertex from which v was discovered (its predecessor). “Search as deep as possible first.” Continue until all vertices reachable from the original source are discovered. If any undiscovered vertices remain, then one of them is chosen as a new source and search is repeated from that source. admission.edhole.com Comp 122, Fall 2004
  • 28.
    Depth-first Search Input:G = (V, E), directed or undirected. No source vertex given! Output:  2 timestamps on each vertex. Integers between 1 and 2|V|. d[v] = discovery time (v turns from white to gray) f [v] = finishing time (v turns from gray to black) p[v] : predecessor of v = u, such that v was discovered during the scan of u’s adjacency list. Uses the same coloring scheme for vertices as BFS. admission.edhole.com Comp 122, Fall 2004
  • 29.
    Pseudo-code DFS(G) 1.for each vertex u Î V[G] 2. do color[u] ¬ white 3. p[u] ¬ NIL 4. time ¬ 0 5. for each vertex u Î V[G] 6. do if color[u] = white 7. then DFS-Visit(u) DFS(G) 1. for each vertex u Î V[G] 2. do color[u] ¬ white 3. p[u] ¬ NIL 4. time ¬ 0 5. for each vertex u Î V[G] 6. do if color[u] = white 7. then DFS-Visit(u) Uses a global timestamp time. Comp 122, Fall 2004 DFS-Visit(u) 1. color[u] ¬ GRAY Ñ White vertex u DFS-Visit(u) 1. color[u] ¬ GRAY Ñ White vertex u has been discovered has been discovered 2. time ¬ time + 1 3. d[u] ¬ time 4. for each v Î Adj[u] 5. do if color[v] = WHITE 6. then p[v] ¬ u 7. DFS-Visit(v) 8. color[u] ¬ BLACK Ñ Blacken u; 2. time ¬ time + 1 3. d[u] ¬ time 4. for each v Î Adj[u] 5. do if color[v] = WHITE 6. then p[v] ¬ u 7. DFS-Visit(v) 8. color[u] ¬ BLACK Ñ Blacken u; it is finished. it is finished. 9. f[u] ¬ time ¬ time + 1 9. f[u] ¬ time ¬ time + 1 Example: animation. admission.edhole.com
  • 30.
    Example (DFS) Comp122, Fall 2004 (Courtesy of Prof. Jim Anderson) u v w 1/ x y z admission.edhole.com
  • 31.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ x y z admission.edhole.com
  • 32.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ 3/ x y z admission.edhole.com
  • 33.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ 4/ 3/ x y z admission.edhole.com
  • 34.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ B 4/ 3/ x y z admission.edhole.com
  • 35.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ B 4/5 3/ x y z admission.edhole.com
  • 36.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/ B 4/5 3/6 x y z admission.edhole.com
  • 37.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/7 B 4/5 3/6 x y z admission.edhole.com
  • 38.
    Example (DFS) Comp122, Fall 2004 u v w 1/ 2/7 F B 4/5 3/6 x y z admission.edhole.com
  • 39.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 F B 4/5 3/6 x y z admission.edhole.com
  • 40.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/ F B 4/5 3/6 x y z admission.edhole.com
  • 41.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/ F B C 4/5 3/6 x y z admission.edhole.com
  • 42.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/ F B C 4/5 3/6 10/ x y z admission.edhole.com
  • 43.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/ F B C 4/5 3/6 10/ x y z B admission.edhole.com
  • 44.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/ F B C 4/5 3/6 10/11 x y z B admission.edhole.com
  • 45.
    Example (DFS) Comp122, Fall 2004 u v w 1/8 2/7 9/12 F B C 4/5 3/6 10/11 x y z B admission.edhole.com
  • 46.
    Analysis of DFS Loops on lines 1-2 & 5-7 take Q(V) time, excluding time to execute DFS-Visit. DFS-Visit is called once for each white vertex vÎV when it’s painted gray the first time. Lines 3-6 of DFS-Visit is executed |Adj[v]| times. The total cost of executing DFS-Visit is åvÎV| Adj[v]| = Q(E) Total running time of DFS is Q(V+E). admission.edhole.com Comp 122, Fall 2004
  • 47.
    Parenthesis Theorem Theorem22.7 For all u, v, exactly one of the following holds: 1. d[u] < f [u] < d[v] < f [v] or d[v] < f [v] < d[u] < f [u] and neither u nor v is a descendant of the other. 2. d[u] < d[v] < f [v] < f [u] and v is a descendant of u. 3. d[v] < d[u] < f [u] < f [v] and u is a descendant of v.  So d[u] < d[v] < f [u] < f [v] cannot happen.  Like parentheses: Theorem 22.7 For all u, v, exactly one of the following holds: 1. d[u] < f [u] < d[v] < f [v] or d[v] < f [v] < d[u] < f [u] and neither u nor v is a descendant of the other. 2. d[u] < d[v] < f [v] < f [u] and v is a descendant of u. 3. d[v] < d[u] < f [u] < f [v] and u is a descendant of v.  OK: ( ) [ ] ( [ ] ) [ ( ) ]  Not OK: ( [ ) ] [ ( ] ) Corollary v is a proper descendant of u if and only if d[u] < d[v] < f [v] < f [u]. admission.edhole.com Comp 122, Fall 2004
  • 48.
    Example (Parenthesis Theorem) y z s 3/6 B F C B 4/5 7/8 12/13 Comp 122, Fall 2004 2/9 1/10 x w v t 11/16 14/15 u C C C (s (z (y (x x) y) (w w) z) s) (t (v v) (u u) t) admission.edhole.com
  • 49.
    Depth-First Trees Predecessorsubgraph defined slightly different from that of BFS. The predecessor subgraph of DFS is Gp = (V, Ep) where Ep ={(p[v],v) : v Î V and p[v] ¹ NIL}. How does it differ from that of BFS?  The predecessor subgraph Gp forms a depth-first forest composed of several depth-first trees. The edges in Ep are called tree edges. Definition: Forest: An acyclic graph G that may be disconnected. admission.edhole.com Comp 122, Fall 2004
  • 50.
    White-path Theorem Theorem22.9 v is a descendant of u if and only if at time d[u], there is a path u v consisting of only white vertices. (Except for u, which was just colored gray.) Theorem 22.9 v is a descendant of u if and only if at time d[u], there is a path u v consisting of only white vertices. (Except for u, which was just colored gray.) admission.edhole.com Comp 122, Fall 2004
  • 51.
    Classification of Edges Tree edge: in the depth-first forest. Found by exploring (u, v). Back edge: (u, v), where u is a descendant of v (in the depth-first tree). Forward edge: (u, v), where v is a descendant of u, but not a tree edge. Cross edge: any other edge. Can go between vertices in same depth-first tree or in different depth-first trees. Theorem: In DFS of an undirected graph, we get only tree and back edges. No forward or cross edges. admission.edhole.com Theorem: In DFS of an undirected graph, we get only tree and back edges. No forward or cross edges. Comp 122, Fall 2004