Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMSC 341 Graphs – DFS Expanded. 2 Depth First Traversal with Finish Times dfs(Graph G) { for (each v  V) d[v] = 0// d = discovery “time” time = 0// “global”

Similar presentations


Presentation on theme: "CMSC 341 Graphs – DFS Expanded. 2 Depth First Traversal with Finish Times dfs(Graph G) { for (each v  V) d[v] = 0// d = discovery “time” time = 0// “global”"— Presentation transcript:

1 CMSC 341 Graphs – DFS Expanded

2 2 Depth First Traversal with Finish Times dfs(Graph G) { for (each v  V) d[v] = 0// d = discovery “time” time = 0// “global” variable for (each v  V) if (d[v] = 0)// not discovered yet dfs (v) } dfs(Vertex v) { time = time + 1 d[v] = time// “discover” and mark v for(each vertex w adjacent from v) if (d[w] = 0)// w not discovered dfs(w) time = time + 1 f[v] = time// v is “finished” }

3 3 Edge Types After DFS, edges can be classified into the following types: –tree edges -- a discovered vertex v 1 encounters an undiscovered vertex v 2 ; the edge between them is a tree edge –back edges -- a discovered vertex v 1 encounters a discovered but unfinished vertex v 2 ; the edge between them is a back edge. (Graph has a cycle if and only if there is a back edge.) –forward edges (directed graphs only) -- a discovered vertex v 1 encounters a finished vertex v 2 –cross edges (directed graphs only) -- a discovered vertex v 1 encounters a finished vertex v 2 and d[v 1 ] > d[v 2 ]

4 4 Edge Types (after DFS completion) ConditionType of Edge (v 1, v 2 )

5 5 Utility of Discovery/Finish Times A graph contains a cycle if and only if it contains a back edge. Finish times can be used to do a topological sort of a digraph (later). Finish times can be used to find strongly connected components in a graph.


Download ppt "CMSC 341 Graphs – DFS Expanded. 2 Depth First Traversal with Finish Times dfs(Graph G) { for (each v  V) d[v] = 0// d = discovery “time” time = 0// “global”"

Similar presentations


Ads by Google