Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 780 Algorithms Advanced Algorithms Graph Alg. DFS Topological sort.

Similar presentations


Presentation on theme: "CSE 780 Algorithms Advanced Algorithms Graph Alg. DFS Topological sort."— Presentation transcript:

1 CSE 780 Algorithms Advanced Algorithms Graph Alg. DFS Topological sort

2 CSE 780 Algorithms Objectives On completion of this lecture, students should be able to: 1. Write a dfs algorithm 2. Apply dfs in topological sort and finding strongly- connected components.

3 CSE 780 Algorithms Breadth-first Search Works for both directed and undirected graph Starting from source node s, visits remaining nodes of graph from small distance to large distance Produce a BF-tree Return distance between s to any reachable node in time O(|V| + |E|)

4 CSE 780 Algorithms Depth-first Search Breadth-first search: Go as broad as possible at each node Depth-first search (a different strategy): Go as deep as possible first

5 CSE 780 Algorithms More Formally Again, a node white: unvisited gray: discovered but not finished black: finished (explored) For every node v  V d[v]: time v is discovered f[v]: time v is finished (all edges in v’s adjacency list are explored) f[v] - d[v] = time from grey to black

6 CSE 780 Algorithms Pseudo-code Time complexity

7 CSE 780 Algorithms Example

8 CSE 780 Algorithms Depth-first Forest Consider all edges (p(u), u) When it happens: p(u) is grey, u is white A forest, called Depth-first forest Depends on the order of vertices Example from previous page Property: Start (finish) time for each tree: same order as if we visit nodes in pre-order (post-order) tree walk

9 CSE 780 Algorithms Properties of DFS Parenthesis Theorem: Any two nodes u and v, one of the following 3 cases: (1) u is descendant of v, and d[v] < d[u] < f[u] < f[v] (2) v is descendant of u, and d[u] < d[v] < f[v] < f[u] (3) u is not descendant of v, neither is v a descendant of u, and d[u] < f[u] < d[v] < f[v] or d[v] < f[v] < d[u] < f[u] u is descendant of v iff d[v] < d[u] < f[u] < f[v] White-path Theorem u is descendant of v iff at the time of d[v], there is a all white path from v to u.

10 CSE 780 Algorithms Classification of Edges Four types of an edge (u,v) Tree edge Non-tree edges: Back edge: u is descendant of v Forward edge: v is descendent of u Cross edge: others Distinguish by the color of v Example b dc e f g h j a k

11 CSE 780 Algorithms Theorem In a DFS of an undirected graph G, every edge of G is either a tree edge or a back edge. b dc e f g h j a k

12 CSE 780 Algorithms Connected Components Undirected graph DF forests represents the set of connected components Directed graph Does the tree rooted at u include all nodes accessible from u ?

13 CSE 780 Algorithms Directed Acyclic Graph DAG: directed acyclic graph Determine whether a directed graph is DAG or not How? A directed graph G is a dag iff a DFS of G yields no back edges. How about an undirected acyclic graph?

14 CSE 780 Algorithms Topological Sort A topological sort of a dag G = (V, E) A linear ordering A of all vertices from V If edge (u,v)  E => A[u] < A[v] undershort s pants belt shirt tie jacke t shoes socks watch

15 CSE 780 Algorithms Topological Sort Using DFS Topological-Sort(G) Call DFS(G) to compute finishing times f[v] for each v Output vertices in descreasing order of finishing time Time complexity O (|V| + |E|)

16 CSE 780 Algorithms Example undershort s pants belt shirt tie jacke t shoes socks watch 11, 16 12, 15 6, 7 3, 4 2, 5 1, 8 13, 14 17, 18 9, 10 socks, undershots, pants, shoes, watch, shirt, belt, tie, jacket

17 CSE 780 Algorithms Correctness Theorem Topological-Sort(G) produces a topological sort of a directed acyclic graph G Proof: Consider any edge (u, v) Goal: f[v] < f[u] Three possible types of edges: Tree edge, forward edge, cross edge

18 CSE 780 Algorithms Connected Components An undirected graph is connected if every pair of vertices is connected by a path A graph that is not connected is naturally decomposed into several connected components. A connected components is a maximal set of vertices, which are all connected.

19 CSE 780 Algorithms Connected Components (cont.) The graph below has 3 connected components {1,2,5}, {3,6} and {4}. An undirected graph is connected if it has exactly one connected component.

20 CSE 780 Algorithms Strongly-connected components

21 CSE 780 Algorithms Strongly-connected components The above graph has 3 strongly connected components {1,2,4,5}, {3} and {6} A directed graph is strongly connected if it has only one strongly connected component.

22 CSE 780 Algorithms Transpose of a Graph The transpose of a directed graph G = (V,E) is the graph G T = (V, E T ) where E T = {(u,v): (v,u) Є E}. E T consists of the edges of G with their directions reversed. G and G T have exactly the same strongly connected components.

23 CSE 780 Algorithms Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

24 CSE 780 Algorithms

25 Corollary 22.15 Let C and C’ be distinct strongly connected components in directed graph G = (V,E). Suppose that there is an edge (u,v)  E T, where u  C and v  C’. Then f(C) < f(C’) Note: f(C) = max u  C {f[u]}

26 CSE 780 Algorithms Theorem 22.16 STRONGLY-CONNECTED-COMPONENTS(G) correctly computes the strongly connected components of a directed graph G. Proof. We argue by induction that the vertices of each tree form a strongly connected component. The inductive hypothesis: The first k trees produced in line 3 are strongly connected.

27 CSE 780 Algorithms The basis for the induction, when k=0, is trivial. The inductive step: assume that each of the first trees produced is a strongly connected component. Consider the (k+1)st tree. Let the root of this tree be vertex u, and let u be in a strongly connected component C. Because of how we choose roots in line 3, f[u] = f(C) > f(C’) for any strongly connected component C’ that has yet to be visited.

28 CSE 780 Algorithms By inductive hypothesis, at the time that the search visits u, all other vertices of C are white. Therefore, all other vertices of C are descendants of u in its tree. Moreover, by inductive hypothesis and corollary 22.15, any edge in G T that leave C must be to strongly connected components that have already visited. Thus, no vertex in any strongly connected component other than C will be a descendant of u during the depth-first search of G T. Thus, the vertices of the depth-first tree in G T that is rooted at u form exactly one strongly connected component.

29 CSE 780 Algorithms Summary Graph search/traversal method Breadth-first search Discover nodes in shortest distance (# links) e.g, chess Depth-first search Parenthesis theorem e.g, topological sort


Download ppt "CSE 780 Algorithms Advanced Algorithms Graph Alg. DFS Topological sort."

Similar presentations


Ads by Google