Introduction to Algorithms Graph Algorithms CSE 680 Prof
- Slides: 32
Introduction to Algorithms Graph Algorithms CSE 680 Prof. Roger Crawfis
Bipartiteness Graph G = (V, E) is bipartite iff it can be partitioned into two sets of nodes A and B such that each edge has one end in A and the other end in B Alternatively: • Graph G = (V, E) is bipartite iff all its cycles have even length • Graph G = (V, E) is bipartite iff nodes can be coloured using two colours Question: given a graph G, how to test if the graph is bipartite? Note: graphs without cycles (trees) are bipartite: non bipartite
Testing bipartiteness Method: use BFS search tree Recall: BFS is a rooted spanning tree. Algorithm: • Run BFS search and colour all nodes in odd layers red, others blue • Go through all edges in adjacency list and check if each of them has two different colours at its ends - if so then G is bipartite, otherwise it is not We use the following alternative definitions in the analysis: • Graph G = (V, E) is bipartite iff all its cycles have even length, or • Graph G = (V, E) is bipartite iff it has no odd cycle non bipartite
Topological Sort Want to “sort” or linearize a directed acyclic graph (DAG). A B E C A B D C D E
Topological Sort Performed on a DAG. l Linear ordering of the vertices of G such that if (u, v) E, then u appears before v. l Topological-Sort (G) 1. call DFS(G) to compute finishing times f [v] for all v V 2. as each vertex is finished, insert it onto the front of a linked list 3. return the linked list of vertices Time: (V + E).
Example A B D 1/ C E Linked List:
Example A B D 1/ 2/ C E Linked List:
Example A B D 1/ 2/3 C E Linked List: 2/3 E
Example B A D 1/4 2/3 C E Linked List: 1/4 2/3 D E
Example A B D 5/ 1/4 2/3 C E Linked List: 1/4 2/3 D E
Example A B D 5/ 1/4 6/ 2/3 C E Linked List: 1/4 2/3 D E
Example A B D 5/ 1/4 6/7 2/3 C E Linked List: 6/7 1/4 2/3 C D E
Example B D 5/8 1/4 A 6/7 2/3 C E Linked List: 5/8 6/7 1/4 2/3 B C D E
Example A B D 9/ 5/8 1/4 6/7 2/3 C E Linked List: 5/8 6/7 1/4 2/3 B C D E
Example A B D 9/10 5/8 1/4 6/7 2/3 C E Linked List: 9/10 5/8 6/7 1/4 2/3 A B C D E
Precedence Example l Tasks that have to be done to eat breakfast: l get glass, pour juice, get bowl, pour cereal, pour milk, get spoon, eat. l Certain events must happen in a certain order (ex: get bowl before pouring milk) l For other events, it doesn't matter (ex: get bowl and get spoon)
Precedence Example get glass pour juice get bowl pour cereal pour milk eat breakfast Order: glass, juice, bowl, cereal, milk, spoon, eat. get spoon
Precedence Example l Topological 1 2 3 4 eat 5 6 Sort 7 8 9 10 milk juice cereal glass bowl consider reverse order of finishing times: spoon, bowl, cereal, milk, glass, juice, eat 11 12 13 14 spoon
Precedence Example l What if we started with juice? 1 4 2 3 eat juice 5 6 glass 7 8 9 10 milk cereal bowl consider reverse order of finishing times: spoon, bowl, cereal, milk, glass, juice, eat 11 12 13 14 spoon
Correctness Proof l l Show if (u, v) E, then f [v] < f [u]. When we explore (u, v), what are their colors? l l Note, u is gray – we are exploring it Is v gray? l l Is v white? l l l No, because then v would be an ancestor of u. (u, v) is a back edge. a cycle (dag has no back edges). Then v becomes descendant of u. By parenthesis theorem, d[u] < d[v] < f [u]. Is v black? l l l Then v is already finished. Since we’re exploring (u, v), we have not yet finished u. Therefore, f [v] < f [u].
Strongly Connected Components l Consider a directed graph. l A strongly connected component (SCC) of the graph is a maximal set of nodes with a (directed) path between every pair of nodes. l If a path from u to v exists in the SCC, then a path from v to u also exists. l Problem: Find all the SCCs of the graph.
Uses of SCC’s l Packaging software modules Construct directed graph of which modules call which other modules l A SCC is a set of mutually interacting modules l Pack together those in the same SCC l
SCC Example h f a e g c b d four SCCs
Main Idea of SCC Algorithm l DFS tells us which nodes are reachable from the roots of the individual trees l Also need information in the other direction: is the root reachable from its descendants? l Run DFS again on the transpose graph (reverse the directions of the edges)
SCC Algorithm Input: directed graph G = (V, E) 1. call DFS(G) to compute finishing times 2. compute GT // transpose graph 3. call DFS(GT), considering nodes in decreasing order of finishing times 4. each tree from Step 3 is a separate SCC of G
SCC Algorithm Example h f a e g c b d input graph - run DFS
4 5 c 8 10 11 d 12 13 14 h e b a Order of nodes for Step 3: f, g, h, a, e, b, d, c g f 15 fin(f) 9 fin(g) 7 fin(h) 6 fin(a) 3 fin(e) 2 fin(b) 1 fin(d) fin(c) After Step 1 16
After Step 2 h f a e g c b d transposed input graph - run DFS with specified order of nodes
After Step 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 g h f e a SCCs are {f, h, g} and {a, e} and {b, c} and {d}. c b d
Run Time of SCC Algorithm l Step 1: O(V+E) to run DFS l Step 2: O(V+E) to construct transpose graph, assuming adjacency list rep. l Adjacency matrix is O(1) time w/ wrapper. l Step 3: O(V+E) to run DFS again l Step 4: O(V) to output result l Total: O(V+E)
Component Graph l GSCC = (VSCC, ESCC). l VSCC has one vertex for each SCC in G. l ESCC has an edge if there’s an edge between the corresponding SCC’s in G. {a, e} {f, h, g} GSCC based on example graph from before {d} {b, c}
Component Graph Facts l Claim: GSCC is a directed acyclic graph. l l l Suppose there is a cycle in GSCC such that component Ci is reachable from component Cj and vice versa. Then Ci and Cj would not be separate SCCs. Lemma: If there is an edge in GSCC from component C' to component C, then f(C') > f(C). l l l Consider any component C during Step 1 (running DFS on G) Let d(C) be earliest discovery time of any node in C Let f(C) be latest finishing time of any node in C
- Altair 680
- Talk 680
- F tag 689
- Bme 680
- Ese 680
- Nur 680
- Morbidly interesting
- 260 in word form
- Ese 680
- A 680 newton student runs up a flight of stairs
- Ese 680
- White path theorem
- Parallelizing sequential graph computations
- W graph
- Undirected graph algorithms
- An introduction to the analysis of algorithms
- Bioinformatics
- Introduction of design and analysis of algorithms
- Introduction to algorithms
- Introduction to algorithms slides
- Introduction to algorithms 2nd edition
- Introduction to algorithms
- Introduction to algorithms lecture notes
- Introduction to the design and analysis of algorithms
- Introduction to sorting algorithms
- Introduction to algorithms 2nd edition
- Introduction to algorithms 2nd edition
- Introduction to bioinformatics algorithms
- An introduction to bioinformatics algorithms
- Texte argumentatif développement
- Bridge graph
- Wait-for graph
- Spectral graph theory course