SlideShare a Scribd company logo
1 of 64
FOR MORE HTTP://SCANFTREE.COM 
BFS AND DFS: 
ALGORITHMS 
Graph Algorithms 
HTTP://SCANFTREE.COM
FOR MORE HTTP://SCANFTREE.COM 
Administrative 
• Test postponed to Friday 
• Homework: 
• Turned in last night by midnight: full credit 
• Turned in tonight by midnight: 1 day late, 10% off 
• Turned in tomorrow night: 2 days late, 30% off 
• Extra credit lateness measured separately
FOR MORE HTTP://SCANFTREE.COM 
Review: Graphs 
• A graph G = (V, E) 
• V = set of vertices, E = set of edges 
• Dense graph: |E| » |V|2; Sparse graph: |E| » |V| 
• Undirected graph: 
• Edge (u,v) = edge (v,u) 
• No self-loops 
• Directed graph: 
• Edge (u,v) goes from vertex u to vertex v, notated u®v 
• A weighted graph associates weights with either the edges or the 
vertices
FOR MORE HTTP://SCANFTREE.COM 
Review: Representing Graphs 
• Assume V = {1, 2, …, n} 
• An adjacency matrix represents the graph as a n x n 
matrix A: 
• A[i, j] = 1 if edge (i, j) Î E (or weight of edge) 
= 0 if edge (i, j) Ï E 
• Storage requirements: O(V2) 
• A dense representation 
• But, can be very efficient for small graphs 
• Especially if store just one bit/edge 
• Undirected graph: only need one diagonal of matrix
FOR MORE HTTP://SCANFTREE.COM 
Review: Graph Searching 
• Given: a graph G = (V, E), directed or undirected 
• Goal: methodically explore every vertex and every edge 
• Ultimately: build a tree on the graph 
• Pick a vertex as the root 
• Choose certain edges to produce a tree 
• Note: might also build a forest if graph is not connected
FOR MORE HTTP://SCANFTREE.COM 
Review: Breadth-First Search 
• “Explore” a graph, turning it into a tree 
• One vertex at a time 
• Expand frontier of explored vertices across the breadth of the 
frontier 
• Builds a tree over the graph 
• Pick a source vertex to be the root 
• Find (“discover”) its children, then their children, etc.
FOR MORE HTTP://SCANFTREE.COM 
Review: Breadth-First Search 
• Again will associate vertex “colors” to guide the algorithm 
• White vertices have not been discovered 
• All vertices start out white 
• Grey vertices are discovered but not fully explored 
• They may be adjacent to white vertices 
• Black vertices are discovered and fully explored 
• They are adjacent only to black and gray vertices 
• Explore vertices by scanning adjacency list of grey 
vertices
Review: Breadth-First Search 
BFS(G, s) { 
initialize vertices; 
Q = {s}; // Q is a queue (duh); initialize to s 
while (Q not empty) { 
u = RemoveTop(Q); 
for each v Î u->adj { 
if (v->color == WHITE) 
v->color = GREY; 
v->d = u->d + 1; 
v->p = u; 
Enqueue(Q, v); 
} 
u->color = BLACK; 
} 
} 
FOR MORE HTTP://SCANFTREE.COM 
What does v->d represent? 
What does v->p represent?
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
¥ 
¥ 
¥ 
¥ 
¥ 
¥ 
¥ 
¥ 
v w x y
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
¥ 
¥ 
0 
¥ 
¥ 
¥ 
¥ 
¥ 
v w x y 
Q: s
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
¥ 
0 
1 
¥ 
¥ 
¥ 
¥ 
v w x y 
Q: w r
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
¥ 
0 
1 
2 
2 
¥ 
¥ 
v w x y 
Q: r t x
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
¥ 
¥ 
v w x y 
Q: t x v
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
3 
¥ 
v w x y 
Q: x v u
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
3 
3 
v w x y 
Q: v u y
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
3 
3 
v w x y 
Q: u y
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
3 
3 
v w x y 
Q: y
FOR MORE HTTP://SCANFTREE.COM 
Breadth-First Search: Example 
r s t u 
1 
2 
0 
1 
2 
2 
3 
3 
v w x y 
Q: Ø
BFS: The Code Again 
BFS(G, s) { 
initialize vertices; 
Q = {s}; 
while (Q not empty) { 
u = RemoveTop(Q); 
for each v Î u->adj { 
Touch every vertex: O(V) 
u = every vertex, but only once 
if (v->color == WHITE) 
v->color = GREY; 
v->d = u->d + 1; 
v->p = u; 
Enqueue(Q, v); 
} 
u->color = BLACK; 
} 
} 
FOR MORE HTTP://SCANFTREE.COM 
(Why?) 
What will be the running time? 
So v = every vertex 
that appears in 
some other vert’s 
adjacency list 
Total running time: O(V+E)
BFS: The Code Again 
BFS(G, s) { 
initialize vertices; 
Q = {s}; 
while (Q not empty) { 
u = RemoveTop(Q); 
for each v Î u->adj { 
if (v->color == WHITE) 
v->color = GREY; 
v->d = u->d + 1; 
v->p = u; 
Enqueue(Q, v); 
} 
u->color = BLACK; 
} 
} 
FOR MORE HTTP://SCANFTREE.COM 
What will be the storage cost 
in addition to storing the graph? 
Total space used: 
O(max(degree(v))) = O(E)
Breadth-First Search: Properties 
• BFS calculates the shortest-path distance to the source 
node 
• Shortest-path distance d(s,v) = minimum number of edges from s 
to v, or ¥ if v not reachable from s 
• Proof given in the book (p. 472-5) 
• BFS builds breadth-first tree, in which paths to root 
represent shortest paths in G 
• Thus can use BFS to calculate shortest path from one vertex to 
another in O(V+E) time 
FOR MORE HTTP://SCANFTREE.COM
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search 
• Depth-first search is another strategy for exploring a 
graph 
• Explore “deeper” in the graph whenever possible 
• Edges are explored out of the most recently discovered vertex v 
that still has unexplored edges 
• When all of v’s edges have been explored, backtrack to the vertex 
from which v was discovered
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search 
• Vertices initially colored white 
• Then colored gray when discovered 
• Then black when finished
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
}
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
What does u->d represent?
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
What does u->f represent?
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
Will all vertices eventually be colored black?
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
What will be the running time?
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
Running time: O(n2) because call DFS_Visit on each vertex, 
and the loop over Adj[] can run as many as |V| times
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
BUT, there is actually a tighter bound. 
How many times will DFS_Visit() actually be called?
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Search: The Code 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
} 
So, running time of DFS = O(V+E)
FOR MORE HTTP://SCANFTREE.COM 
Depth-First Sort Analysis 
• This running time argument is an informal example of 
amortized analysis 
• “Charge” the exploration of edge to the edge: 
• Each loop in DFS_Visit can be attributed to an edge in the graph 
• Runs once/edge if directed graph, twice if undirected 
• Thus loop will run in O(E) time, algorithm O(V+E) 
• Considered linear for graph, b/c adj list requires O(V+E) storage 
• Important to be comfortable with this kind of reasoning and analysis
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
source 
vertex
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
| | 
| | | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
2 | | 
| | | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
2 | | 
3 | | | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
2 | | 
3 | 4 | | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
2 | | 
3 | 4 5 | | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | | | 
2 | | 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | 8 | | 
2 | 7 | 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | 8 | | 
2 | 7 | 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | 8 | | 
2 | 7 9 | 
3 | 4 5 | 6 | 
source 
vertex 
d f 
What is the structure of the grey vertices? 
What do they represent?
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | 8 | | 
2 | 7 9 |10 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 | 8 |11 | 
2 | 7 9 |10 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 | 
2 | 7 9 |10 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13| 
2 | 7 9 |10 
3 | 4 5 | 6 | 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13| 
2 | 7 9 |10 
3 | 4 5 | 6 14| 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13| 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13|16 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds of edges 
• DFS introduces an important distinction among edges in 
the original graph: 
• Tree edge: encounter new (white) vertex 
• The tree edges form a spanning forest 
• Can tree edges form cycles? Why or why not?
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13|16 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f 
Tree edges
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds of edges 
• DFS introduces an important distinction among edges in 
the original graph: 
• Tree edge: encounter new (white) vertex 
• Back edge: from descendent to ancestor 
• Encounter a grey vertex (grey to grey)
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13|16 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f 
Tree edges Back edges
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds of edges 
• DFS introduces an important distinction among edges in 
the original graph: 
• Tree edge: encounter new (white) vertex 
• Back edge: from descendent to ancestor 
• Forward edge: from ancestor to descendent 
• Not a tree edge, though 
• From grey node to black node
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13|16 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f 
Tree edges Back edges Forward edges
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds of edges 
• DFS introduces an important distinction among edges in 
the original graph: 
• Tree edge: encounter new (white) vertex 
• Back edge: from descendent to ancestor 
• Forward edge: from ancestor to descendent 
• Cross edge: between a tree or subtrees 
• From a grey node to a black node
DFS Example 
FOR MORE HTTP://SCANFTREE.COM 
1 |12 8 |11 13|16 
2 | 7 9 |10 
3 | 4 5 | 6 14|15 
source 
vertex 
d f 
Tree edges Back edges Forward edges Cross edges
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds of edges 
• DFS introduces an important distinction among edges in 
the original graph: 
• Tree edge: encounter new (white) vertex 
• Back edge: from descendent to ancestor 
• Forward edge: from ancestor to descendent 
• Cross edge: between a tree or subtrees 
• Note: tree & back edges are important; most algorithms 
don’t distinguish forward & cross
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds Of Edges 
• Thm 23.9: If G is undirected, a DFS produces only tree 
and back edges 
• Proof by contradiction: 
• Assume there’s a forward edge 
• But F? edge must actually be a 
back edge (why?) 
source 
F?
FOR MORE HTTP://SCANFTREE.COM 
DFS: Kinds Of Edges 
• Thm 23.9: If G is undirected, a DFS produces only tree 
and back edges 
• Proof by contradiction: 
• Assume there’s a cross edge 
• But C? edge cannot be cross: 
• must be explored from one of the 
vertices it connects, becoming a tree 
vertex, before other vertex is explored 
• So in fact the picture is wrong…both 
lower tree edges cannot in fact be 
tree edges 
source 
C?
FOR MORE HTTP://SCANFTREE.COM 
DFS And Graph Cycles 
• Thm: An undirected graph is acyclic iff a DFS yields no 
back edges 
• If acyclic, no back edges (because a back edge implies a cycle 
• If no back edges, acyclic 
• No back edges implies only tree edges (Why?) 
• Only tree edges implies we have a tree or a forest 
• Which by definition is acyclic 
• Thus, can run DFS to find whether a graph has a cycle
FOR MORE HTTP://SCANFTREE.COM 
DFS And Cycles 
• How would you modify the code to detect cycles? 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
}
FOR MORE HTTP://SCANFTREE.COM 
DFS And Cycles 
•What will be the running time? 
DFS(G) 
{ 
for each vertex u Î G->V 
{ 
u->color = WHITE; 
} 
time = 0; 
for each vertex u Î G->V 
{ 
if (u->color == WHITE) 
DFS_Visit(u); 
} 
} 
DFS_Visit(u) 
{ 
u->color = GREY; 
time = time+1; 
u->d = time; 
for each v Î u->Adj[] 
{ 
if (v->color == WHITE) 
DFS_Visit(v); 
} 
u->color = BLACK; 
time = time+1; 
u->f = time; 
}
DFS And Cycles 
• What will be the running time? 
• A: O(V+E) 
• We can actually determine if cycles exist in O(V) time: 
• In an undirected acyclic forest, |E| £ |V| - 1 
• So count the edges: if ever see |V| distinct edges, must have seen 
a back edge along the way 
FOR MORE HTTP://SCANFTREE.COM

More Related Content

What's hot (20)

2.5 bfs & dfs 02
2.5 bfs & dfs 022.5 bfs & dfs 02
2.5 bfs & dfs 02
 
Depth First Search ( DFS )
Depth First Search ( DFS )Depth First Search ( DFS )
Depth First Search ( DFS )
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First Search
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
 
Expression trees
Expression treesExpression trees
Expression trees
 
Depth firstsearchalgorithm
Depth firstsearchalgorithmDepth firstsearchalgorithm
Depth firstsearchalgorithm
 
Kruskal & Prim's Algorithm
Kruskal & Prim's AlgorithmKruskal & Prim's Algorithm
Kruskal & Prim's Algorithm
 
Binary Search Tree in Data Structure
Binary Search Tree in Data StructureBinary Search Tree in Data Structure
Binary Search Tree in Data Structure
 
Tree in data structure
Tree in data structureTree in data structure
Tree in data structure
 
Graphs bfs dfs
Graphs bfs dfsGraphs bfs dfs
Graphs bfs dfs
 
Binary search tree(bst)
Binary search tree(bst)Binary search tree(bst)
Binary search tree(bst)
 
Dfs
DfsDfs
Dfs
 
Depth-First Search
Depth-First SearchDepth-First Search
Depth-First Search
 
Data structure - Graph
Data structure - GraphData structure - Graph
Data structure - Graph
 
Red Black Tree
Red Black TreeRed Black Tree
Red Black Tree
 
Depth first search [dfs]
Depth first search [dfs]Depth first search [dfs]
Depth first search [dfs]
 
Tree and Binary Search tree
Tree and Binary Search treeTree and Binary Search tree
Tree and Binary Search tree
 
B+ trees and height balance tree
B+ trees and height balance treeB+ trees and height balance tree
B+ trees and height balance tree
 
Dijkstra s algorithm
Dijkstra s algorithmDijkstra s algorithm
Dijkstra s algorithm
 
Abstract Data Types
Abstract Data TypesAbstract Data Types
Abstract Data Types
 

Viewers also liked

Heuristic Search
Heuristic SearchHeuristic Search
Heuristic Searchbutest
 
Linear and Binary Search Algorithms.(Discrete Mathematics)
Linear and Binary Search Algorithms.(Discrete Mathematics)Linear and Binary Search Algorithms.(Discrete Mathematics)
Linear and Binary Search Algorithms.(Discrete Mathematics)Shanawaz Ahamed
 
Search algorithms master
Search algorithms masterSearch algorithms master
Search algorithms masterHossam Hassan
 
Algorithm Analysis and Design Class Notes
Algorithm Analysis and Design Class NotesAlgorithm Analysis and Design Class Notes
Algorithm Analysis and Design Class NotesKumar Avinash
 
Ch2 3-informed (heuristic) search
Ch2 3-informed (heuristic) searchCh2 3-informed (heuristic) search
Ch2 3-informed (heuristic) searchchandsek666
 
Hillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionHillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionMohamed Gad
 
Design and Analysis of Algorithms
Design and Analysis of AlgorithmsDesign and Analysis of Algorithms
Design and Analysis of AlgorithmsArvind Krishnaa
 
Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}FellowBuddy.com
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and GraphsIntro C# Book
 

Viewers also liked (14)

Heuristic Search
Heuristic SearchHeuristic Search
Heuristic Search
 
Linear and Binary Search Algorithms.(Discrete Mathematics)
Linear and Binary Search Algorithms.(Discrete Mathematics)Linear and Binary Search Algorithms.(Discrete Mathematics)
Linear and Binary Search Algorithms.(Discrete Mathematics)
 
130210107039 2130702
130210107039 2130702130210107039 2130702
130210107039 2130702
 
Search algorithms master
Search algorithms masterSearch algorithms master
Search algorithms master
 
Bfs and Dfs
Bfs and DfsBfs and Dfs
Bfs and Dfs
 
Application of dfs
Application of dfsApplication of dfs
Application of dfs
 
Algorithm Analysis and Design Class Notes
Algorithm Analysis and Design Class NotesAlgorithm Analysis and Design Class Notes
Algorithm Analysis and Design Class Notes
 
ADA complete notes
ADA complete notesADA complete notes
ADA complete notes
 
Ch2 3-informed (heuristic) search
Ch2 3-informed (heuristic) searchCh2 3-informed (heuristic) search
Ch2 3-informed (heuristic) search
 
Hillclimbing search algorthim #introduction
Hillclimbing search algorthim #introductionHillclimbing search algorthim #introduction
Hillclimbing search algorthim #introduction
 
Design and Analysis of Algorithms
Design and Analysis of AlgorithmsDesign and Analysis of Algorithms
Design and Analysis of Algorithms
 
Hill climbing
Hill climbingHill climbing
Hill climbing
 
Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and Graphs
 

Similar to BFS DFS Graph Algorithms Explained

lecture 18
lecture 18lecture 18
lecture 18sajinsc
 
B.tech admission in india
B.tech admission in indiaB.tech admission in india
B.tech admission in indiaEdhole.com
 
Algorithm Design and Complexity - Course 7
Algorithm Design and Complexity - Course 7Algorithm Design and Complexity - Course 7
Algorithm Design and Complexity - Course 7Traian Rebedea
 
Elementary Graph Algo.ppt
Elementary Graph Algo.pptElementary Graph Algo.ppt
Elementary Graph Algo.pptSazidHossain9
 
Lecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdfLecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdfiftakhar8
 
lecture 17
lecture 17lecture 17
lecture 17sajinsc
 
22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.pptKarunaBiswas3
 
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gpchandrashekarr799
 
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docxgraphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docxwhittemorelucilla
 
FADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdfFADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdfYelah1
 
All pair shortest path by Sania Nisar
All pair shortest path by Sania NisarAll pair shortest path by Sania Nisar
All pair shortest path by Sania NisarSania Nisar
 
topological_sort_strongly Connected Components
topological_sort_strongly Connected Componentstopological_sort_strongly Connected Components
topological_sort_strongly Connected ComponentsJahidulIslam47153
 

Similar to BFS DFS Graph Algorithms Explained (20)

lecture 18
lecture 18lecture 18
lecture 18
 
B.tech admission in india
B.tech admission in indiaB.tech admission in india
B.tech admission in india
 
Bfs dfs
Bfs dfsBfs dfs
Bfs dfs
 
Algorithm Design and Complexity - Course 7
Algorithm Design and Complexity - Course 7Algorithm Design and Complexity - Course 7
Algorithm Design and Complexity - Course 7
 
Bfs dfs
Bfs dfsBfs dfs
Bfs dfs
 
Elementary Graph Algo.ppt
Elementary Graph Algo.pptElementary Graph Algo.ppt
Elementary Graph Algo.ppt
 
Shortest Path in Graph
Shortest Path in GraphShortest Path in Graph
Shortest Path in Graph
 
Lecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdfLecture 16 - Dijkstra's Algorithm.pdf
Lecture 16 - Dijkstra's Algorithm.pdf
 
lecture 17
lecture 17lecture 17
lecture 17
 
22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt
 
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
 
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docxgraphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
 
kumattt).pptx
kumattt).pptxkumattt).pptx
kumattt).pptx
 
FADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdfFADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdf
 
Lecture13
Lecture13Lecture13
Lecture13
 
Graph 02
Graph 02Graph 02
Graph 02
 
BFS
BFSBFS
BFS
 
19-graph1 (1).ppt
19-graph1 (1).ppt19-graph1 (1).ppt
19-graph1 (1).ppt
 
All pair shortest path by Sania Nisar
All pair shortest path by Sania NisarAll pair shortest path by Sania Nisar
All pair shortest path by Sania Nisar
 
topological_sort_strongly Connected Components
topological_sort_strongly Connected Componentstopological_sort_strongly Connected Components
topological_sort_strongly Connected Components
 

Recently uploaded

Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 

Recently uploaded (20)

Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 

BFS DFS Graph Algorithms Explained

  • 1. FOR MORE HTTP://SCANFTREE.COM BFS AND DFS: ALGORITHMS Graph Algorithms HTTP://SCANFTREE.COM
  • 2. FOR MORE HTTP://SCANFTREE.COM Administrative • Test postponed to Friday • Homework: • Turned in last night by midnight: full credit • Turned in tonight by midnight: 1 day late, 10% off • Turned in tomorrow night: 2 days late, 30% off • Extra credit lateness measured separately
  • 3. FOR MORE HTTP://SCANFTREE.COM Review: Graphs • A graph G = (V, E) • V = set of vertices, E = set of edges • Dense graph: |E| » |V|2; Sparse graph: |E| » |V| • Undirected graph: • Edge (u,v) = edge (v,u) • No self-loops • Directed graph: • Edge (u,v) goes from vertex u to vertex v, notated u®v • A weighted graph associates weights with either the edges or the vertices
  • 4. FOR MORE HTTP://SCANFTREE.COM Review: Representing Graphs • Assume V = {1, 2, …, n} • An adjacency matrix represents the graph as a n x n matrix A: • A[i, j] = 1 if edge (i, j) Î E (or weight of edge) = 0 if edge (i, j) Ï E • Storage requirements: O(V2) • A dense representation • But, can be very efficient for small graphs • Especially if store just one bit/edge • Undirected graph: only need one diagonal of matrix
  • 5. FOR MORE HTTP://SCANFTREE.COM Review: Graph Searching • Given: a graph G = (V, E), directed or undirected • Goal: methodically explore every vertex and every edge • Ultimately: build a tree on the graph • Pick a vertex as the root • Choose certain edges to produce a tree • Note: might also build a forest if graph is not connected
  • 6. FOR MORE HTTP://SCANFTREE.COM Review: Breadth-First Search • “Explore” a graph, turning it into a tree • One vertex at a time • Expand frontier of explored vertices across the breadth of the frontier • Builds a tree over the graph • Pick a source vertex to be the root • Find (“discover”) its children, then their children, etc.
  • 7. FOR MORE HTTP://SCANFTREE.COM Review: Breadth-First Search • Again will associate vertex “colors” to guide the algorithm • White vertices have not been discovered • All vertices start out white • Grey vertices are discovered but not fully explored • They may be adjacent to white vertices • Black vertices are discovered and fully explored • They are adjacent only to black and gray vertices • Explore vertices by scanning adjacency list of grey vertices
  • 8. Review: Breadth-First Search BFS(G, s) { initialize vertices; Q = {s}; // Q is a queue (duh); initialize to s while (Q not empty) { u = RemoveTop(Q); for each v Î u->adj { if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } } FOR MORE HTTP://SCANFTREE.COM What does v->d represent? What does v->p represent?
  • 9. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ v w x y
  • 10. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u ¥ ¥ 0 ¥ ¥ ¥ ¥ ¥ v w x y Q: s
  • 11. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 ¥ 0 1 ¥ ¥ ¥ ¥ v w x y Q: w r
  • 12. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 ¥ 0 1 2 2 ¥ ¥ v w x y Q: r t x
  • 13. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 ¥ ¥ v w x y Q: t x v
  • 14. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 3 ¥ v w x y Q: x v u
  • 15. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 3 3 v w x y Q: v u y
  • 16. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 3 3 v w x y Q: u y
  • 17. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 3 3 v w x y Q: y
  • 18. FOR MORE HTTP://SCANFTREE.COM Breadth-First Search: Example r s t u 1 2 0 1 2 2 3 3 v w x y Q: Ø
  • 19. BFS: The Code Again BFS(G, s) { initialize vertices; Q = {s}; while (Q not empty) { u = RemoveTop(Q); for each v Î u->adj { Touch every vertex: O(V) u = every vertex, but only once if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } } FOR MORE HTTP://SCANFTREE.COM (Why?) What will be the running time? So v = every vertex that appears in some other vert’s adjacency list Total running time: O(V+E)
  • 20. BFS: The Code Again BFS(G, s) { initialize vertices; Q = {s}; while (Q not empty) { u = RemoveTop(Q); for each v Î u->adj { if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } } FOR MORE HTTP://SCANFTREE.COM What will be the storage cost in addition to storing the graph? Total space used: O(max(degree(v))) = O(E)
  • 21. Breadth-First Search: Properties • BFS calculates the shortest-path distance to the source node • Shortest-path distance d(s,v) = minimum number of edges from s to v, or ¥ if v not reachable from s • Proof given in the book (p. 472-5) • BFS builds breadth-first tree, in which paths to root represent shortest paths in G • Thus can use BFS to calculate shortest path from one vertex to another in O(V+E) time FOR MORE HTTP://SCANFTREE.COM
  • 22. FOR MORE HTTP://SCANFTREE.COM Depth-First Search • Depth-first search is another strategy for exploring a graph • Explore “deeper” in the graph whenever possible • Edges are explored out of the most recently discovered vertex v that still has unexplored edges • When all of v’s edges have been explored, backtrack to the vertex from which v was discovered
  • 23. FOR MORE HTTP://SCANFTREE.COM Depth-First Search • Vertices initially colored white • Then colored gray when discovered • Then black when finished
  • 24. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; }
  • 25. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } What does u->d represent?
  • 26. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } What does u->f represent?
  • 27. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } Will all vertices eventually be colored black?
  • 28. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } What will be the running time?
  • 29. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } Running time: O(n2) because call DFS_Visit on each vertex, and the loop over Adj[] can run as many as |V| times
  • 30. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } BUT, there is actually a tighter bound. How many times will DFS_Visit() actually be called?
  • 31. FOR MORE HTTP://SCANFTREE.COM Depth-First Search: The Code DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; } So, running time of DFS = O(V+E)
  • 32. FOR MORE HTTP://SCANFTREE.COM Depth-First Sort Analysis • This running time argument is an informal example of amortized analysis • “Charge” the exploration of edge to the edge: • Each loop in DFS_Visit can be attributed to an edge in the graph • Runs once/edge if directed graph, twice if undirected • Thus loop will run in O(E) time, algorithm O(V+E) • Considered linear for graph, b/c adj list requires O(V+E) storage • Important to be comfortable with this kind of reasoning and analysis
  • 33. DFS Example FOR MORE HTTP://SCANFTREE.COM source vertex
  • 34. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | | | | | | source vertex d f
  • 35. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | 2 | | | | | source vertex d f
  • 36. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | 2 | | 3 | | | source vertex d f
  • 37. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | 2 | | 3 | 4 | | source vertex d f
  • 38. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | 2 | | 3 | 4 5 | | source vertex d f
  • 39. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | | | 2 | | 3 | 4 5 | 6 | source vertex d f
  • 40. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | 8 | | 2 | 7 | 3 | 4 5 | 6 | source vertex d f
  • 41. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | 8 | | 2 | 7 | 3 | 4 5 | 6 | source vertex d f
  • 42. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | 8 | | 2 | 7 9 | 3 | 4 5 | 6 | source vertex d f What is the structure of the grey vertices? What do they represent?
  • 43. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | 8 | | 2 | 7 9 |10 3 | 4 5 | 6 | source vertex d f
  • 44. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 | 8 |11 | 2 | 7 9 |10 3 | 4 5 | 6 | source vertex d f
  • 45. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 | 2 | 7 9 |10 3 | 4 5 | 6 | source vertex d f
  • 46. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 | source vertex d f
  • 47. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 14| source vertex d f
  • 48. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f
  • 49. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f
  • 50. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds of edges • DFS introduces an important distinction among edges in the original graph: • Tree edge: encounter new (white) vertex • The tree edges form a spanning forest • Can tree edges form cycles? Why or why not?
  • 51. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f Tree edges
  • 52. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds of edges • DFS introduces an important distinction among edges in the original graph: • Tree edge: encounter new (white) vertex • Back edge: from descendent to ancestor • Encounter a grey vertex (grey to grey)
  • 53. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f Tree edges Back edges
  • 54. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds of edges • DFS introduces an important distinction among edges in the original graph: • Tree edge: encounter new (white) vertex • Back edge: from descendent to ancestor • Forward edge: from ancestor to descendent • Not a tree edge, though • From grey node to black node
  • 55. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f Tree edges Back edges Forward edges
  • 56. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds of edges • DFS introduces an important distinction among edges in the original graph: • Tree edge: encounter new (white) vertex • Back edge: from descendent to ancestor • Forward edge: from ancestor to descendent • Cross edge: between a tree or subtrees • From a grey node to a black node
  • 57. DFS Example FOR MORE HTTP://SCANFTREE.COM 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 14|15 source vertex d f Tree edges Back edges Forward edges Cross edges
  • 58. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds of edges • DFS introduces an important distinction among edges in the original graph: • Tree edge: encounter new (white) vertex • Back edge: from descendent to ancestor • Forward edge: from ancestor to descendent • Cross edge: between a tree or subtrees • Note: tree & back edges are important; most algorithms don’t distinguish forward & cross
  • 59. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds Of Edges • Thm 23.9: If G is undirected, a DFS produces only tree and back edges • Proof by contradiction: • Assume there’s a forward edge • But F? edge must actually be a back edge (why?) source F?
  • 60. FOR MORE HTTP://SCANFTREE.COM DFS: Kinds Of Edges • Thm 23.9: If G is undirected, a DFS produces only tree and back edges • Proof by contradiction: • Assume there’s a cross edge • But C? edge cannot be cross: • must be explored from one of the vertices it connects, becoming a tree vertex, before other vertex is explored • So in fact the picture is wrong…both lower tree edges cannot in fact be tree edges source C?
  • 61. FOR MORE HTTP://SCANFTREE.COM DFS And Graph Cycles • Thm: An undirected graph is acyclic iff a DFS yields no back edges • If acyclic, no back edges (because a back edge implies a cycle • If no back edges, acyclic • No back edges implies only tree edges (Why?) • Only tree edges implies we have a tree or a forest • Which by definition is acyclic • Thus, can run DFS to find whether a graph has a cycle
  • 62. FOR MORE HTTP://SCANFTREE.COM DFS And Cycles • How would you modify the code to detect cycles? DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; }
  • 63. FOR MORE HTTP://SCANFTREE.COM DFS And Cycles •What will be the running time? DFS(G) { for each vertex u Î G->V { u->color = WHITE; } time = 0; for each vertex u Î G->V { if (u->color == WHITE) DFS_Visit(u); } } DFS_Visit(u) { u->color = GREY; time = time+1; u->d = time; for each v Î u->Adj[] { if (v->color == WHITE) DFS_Visit(v); } u->color = BLACK; time = time+1; u->f = time; }
  • 64. DFS And Cycles • What will be the running time? • A: O(V+E) • We can actually determine if cycles exist in O(V) time: • In an undirected acyclic forest, |E| £ |V| - 1 • So count the edges: if ever see |V| distinct edges, must have seen a back edge along the way FOR MORE HTTP://SCANFTREE.COM