This preview shows pages 1–10. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: Part II: Graph Algorithms Lecture 6: DepthFirst Search and Its Applications Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms Intro to Part II: What are graphs? A graph is a pair G = ( V , E ), where V is the collection of vertices , and E is the collection of edges . V = { , 1 , 2 , . . . , 10 } E = { (0 , 1) , (1 , 0) , (1 , 2) , (2 , 1) , . . . , (10 , 5) , . . . } Directed graph : if ( u , v ) ∈ E , then ( v , u ) / ∈ E . Undirected graph : if ( u , v ) ∈ E , then ( v , u ) ∈ E . Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms Intro to Part II: Representations of graphs Adjacency list representation : Adj [ u ] — linked list of all v such that ( u , v ) ∈ E . Adj [0] = { 1 , 3 , 9 } ; Adj [1] = { , 9 , 2 } ; . . . Adjacencymatrix representation : A = [ a ij ], a ij = 1 if ( v i , v j ) ∈ E . Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms Intro to Part III:Why study graph algorithms Graphs are a pervasive data structure in Computer Science. Algorithms for working with graph are fundamental to Computer Science. Hundreds of interesting computational problems defined on graphs. We will sample a few basic ones. Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms Objective and Outline of Lecture 6 Objective : Discuss an elementary graph algorithm, i.e. depthfirst search (DFS). Reference : Chapter 22 of CLRS Outline: The DFS Algorithm Analyzing the DFS algorithm Properties of DFS. Applications of DFS Articulation points. Biconnected components Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms The DFS Algorithm What does DFS do? Traverse all vertices in graph, and thereby Reveal properties of the graph. Four arrays are used to keep information gathered during traversal 1 color [ u ] : the color of each vertex visited white: undiscovered gray: discovered but not finished processing black: finished processing 2 pred [ u ] : the predecessor pointer pointing back to the vertex from which u was discovered 3 d [ u ] : the discovery time a counter indicating when vertex u is discovered 4 f [ u ] : the finishing time a counter indicating when the processing of vertex u (and all its descendants) is finished Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms The DFS Algorithm How does DFS work? It starts from an initial vertex. After visiting a vertex, it recursively visits all of its neighbors. The strategy is to search “ deeper ” in the graph whenever possible Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms DFS Algorithm DFS(G) // Initialize foreach u in V do color[u] = white; pred[u] = NULL; end time= 0; foreach u in V do // start a new tree if color[u] = white then DFSVisit(u) end Lecture 6: DepthFirst Search and Its Applications Part II: Graph Algorithms DFSVisit(u) color[u] = gray; // u is discovered d[u] = ++time; // u’s discovery time foreach...
View
Full
Document
This note was uploaded on 10/18/2009 for the course COMP 271 taught by Professor Arya during the Spring '07 term at HKUST.
 Spring '07
 ARYA
 Algorithms

Click to edit the document details