Minimum Spanning Trees Ch 23 Traversing graphs

Similar documents
Minimum Spanning Trees Ch 23 Traversing graphs

Graphs. Graph G = (V, E) Types of graphs E = O( V 2 ) V = set of vertices E = set of edges (V V)

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

Graph Representation

Data Structures and Algorithms. Werner Nutt

Elementary Graph Algorithms

Data Structures and Algorithms. Chapter 7. Graphs

Design and Analysis of Algorithms

Representations of Graphs

Unit 2: Algorithmic Graph Theory

Graph representation

ECE250: Algorithms and Data Structures Elementary Graph Algorithms Part B

DFS & STRONGLY CONNECTED COMPONENTS

Part VI Graph algorithms. Chapter 22 Elementary Graph Algorithms Chapter 23 Minimum Spanning Trees Chapter 24 Single-source Shortest Paths

Graph: representation and traversal

Chapter 22. Elementary Graph Algorithms

Basic Graph Algorithms

Graph Algorithms: Chapters Part 1: Introductory graph concepts

CHAPTER 23: ELEMENTARY GRAPH ALGORITHMS Representations of graphs

Introduction to Algorithms. Lecture 11

COT 6405 Introduction to Theory of Algorithms

Minimum Spanning Trees

Graph Search. Adnan Aziz

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Graph Algorithms. Definition

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Greedy Algorithms. At each step in the algorithm, one of several choices can be made.

Elementary Graph Algorithms. Ref: Chapter 22 of the text by Cormen et al. Representing a graph:

Graphs. Graphs. Representation of Graphs. CSE 680 Prof. Roger Crawfis. Two standard ways. Graph G = (V, E)» V = set of vertices

CSI 604 Elementary Graph Algorithms

Outlines: Graphs Part-2

Minimum Spanning Trees

Graph: representation and traversal

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 16. Graph Search Algorithms. Recall BFS

CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

W4231: Analysis of Algorithms

Minimum Spanning Trees My T. UF

Data Structures. Elementary Graph Algorithms BFS, DFS & Topological Sort

Week 5. 1 Analysing BFS. 2 Depth-first search. 3 Analysing DFS. 4 Dags and topological sorting. 5 Detecting cycles. CS 270 Algorithms.

Tutorial. Question There are no forward edges. 4. For each back edge u, v, we have 0 d[v] d[u].

Taking Stock. Last Time Flows. This Time Review! 1 Characterize the structure of an optimal solution

ECE250: Algorithms and Data Structures Elementary Graph Algorithms Part A

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 17. Depth-First Search. DFS (Initialize and Go) Last Time Depth-First Search

1 Start with each vertex being its own component. 2 Merge two components into one by choosing the light edge

Minimum Spanning Trees

Proof: if not f[u] < d[v], then u still grey while v is being visited. DFS visit(v) will then terminate before DFS visit(u).

CS583 Lecture 09. Jana Kosecka. Graph Algorithms Topological Sort Strongly Connected Component Minimum Spanning Tree

Announcements. HW3 is graded. Average is 81%

Undirected Graphs. DSA - lecture 6 - T.U.Cluj-Napoca - M. Joldos 1

Graph Algorithms. Chapter 22. CPTR 430 Algorithms Graph Algorithms 1

Lecture Notes for Chapter 23: Minimum Spanning Trees

Graph implementations :

22.3 Depth First Search

CISC 320 Introduction to Algorithms Fall Lecture 15 Depth First Search

CS 270 Algorithms. Oliver Kullmann. Breadth-first search. Analysing BFS. Depth-first. search. Analysing DFS. Dags and topological sorting.

Elementary Graph Algorithms

Introduction to Algorithms

Practical Session No. 12 Graphs, BFS, DFS, Topological sort

CS 270 Algorithms. Oliver Kullmann. Analysing BFS. Depth-first search. Analysing DFS. Dags and topological sorting.

22 Elementary Graph Algorithms. There are two standard ways to represent a

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

Unit 5F: Layout Compaction

Unit 3: Layout Compaction

Graphs. CSE 2320 Algorithms and Data Structures Alexandra Stefan and Vassilis Athitsos University of Texas at Arlington

Introduction to Algorithms

22 Elementary Graph Algorithms. There are two standard ways to represent a

Review: Graph Theory and Representation

Practical Session No. 12 Graphs, BFS, DFS Topological Sort

Week 11: Minimum Spanning trees

CS 220: Discrete Structures and their Applications. graphs zybooks chapter 10

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Introduction to Algorithms

CS 561, Lecture 9. Jared Saia University of New Mexico

Shortest path problems

Minimum Spanning Trees Outline: MST

Chapter 22 Elementary Graph Algorithms

Data Structures and Algorithms. Werner Nutt

Decreasing a key FIB-HEAP-DECREASE-KEY(,, ) 3.. NIL. 2. error new key is greater than current key 6. CASCADING-CUT(, )

2pt 0em. Computer Science & Engineering 423/823 Design and Analysis of Algorithms. Lecture 04 Minimum-Weight Spanning Trees (Chapter 23)

Trees and Graphs Shabsi Walfish NYU - Fundamental Algorithms Summer 2006

Algorithm Design and Analysis

Graph Theory. Many problems are mapped to graphs. Problems. traffic VLSI circuits social network communication networks web pages relationship

Minimum-Spanning-Tree problem. Minimum Spanning Trees (Forests) Minimum-Spanning-Tree problem

Basic Graph Algorithms (CLRS B.4-B.5, )

Minimum Spanning Trees

Minimum Spanning Trees

Graph Representations and Traversal

Chapter 23. Minimum Spanning Trees

COP 4531 Complexity & Analysis of Data Structures & Algorithms

Graph Algorithms Using Depth First Search

CS Elementary Graph Algorithms

CS Elementary Graph Algorithms

Depth-first Search (DFS)

Announcements Problem Set 5 is out (today)!

Algorithm Design and Analysis

Suggested Study Strategy

CS521 \ Notes for the Final Exam

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI. Department of Computer Science and Engineering CS6301 PROGRAMMING DATA STRUCTURES II

CS473-Algorithms I. Lecture 14-A. Graph Searching: Breadth-First Search. Cevdet Aykanat - Bilkent University Computer Engineering Department

Transcription:

Next: Graph Algorithms Graphs Ch 22 Graph representations adjacency list adjacency matrix Minimum Spanning Trees Ch 23 Traversing graphs Breadth-First Search Depth-First Search 11/30/17 CSE 3101 1

Graphs Definition A graph G = (V,E) is composed of: V: set of vertices EVV: set of edges connecting the vertices An edge e = (u,v) is a pair of vertices (u,v) is ordered, if G is a directed graph 11/30/17 CSE 3101 2

Graph Terminology adjacent vertices: connected by an edge degree (of a vertex): # of adjacent vertices vv deg( v) 2(# of edges) Since adjacent vertices each count the adjoining edge, it will be counted twice path: sequence of vertices v 1,v 2,...v k such that consecutive vertices v i and v i+1 are adjacent 11/30/17 CSE 3101 3

Graph Terminology (2) simple path: no repeated vertices 11/30/17 CSE 3101 4

Graph Terminology (3) cycle: simple path, except that the last vertex is the same as the first vertex connected graph: any two vertices are connected by some path 11/30/17 CSE 3101 5

Graph Terminology (4) subgraph: subset of vertices and edges forming a graph connected component: maximal connected subgraph. E.g., the graph below has 3 connected components 11/30/17 CSE 3101 6

Graph Terminology (5) (free) tree - connected graph without cycles forest - collection of trees 11/30/17 CSE 3101 7

Data Structures for Graphs The Adjacency list of a vertex v: a sequence of vertices adjacent to v Represent the graph by the adjacency lists of all its vertices Space ( n deg( v)) ( n m) 11/30/17 CSE 3101 8

Adjacency matrix Matrix M with entries for all pairs of vertices M[i,j] = true there is an edge (i,j) in the graph M[i,j] = false there is no edge (i,j) in the graph Space = O(n 2 ) Data Structures for Graphs 11/30/17 CSE 3101 9

Spanning Tree A spanning tree of G is a subgraph which is a tree contains all vertices of G 11/30/17 CSE 3101 10

Minimum Spanning Trees Undirected, connected graph G = (V,E) Weight function W: E R (assigning cost or length or other values to edges) Spanning tree: tree that connects all vertices Minimum spanning tree: tree that connects all the vertices and minimizes w( T ) = å w( u, v) ( u, v) ÎT 11/30/17 CSE 3101 11

Optimal Substructure MST T T 2 T 1 Removing the edge (u,v) partitions T into T 1 and T 2 w( T ) w( u, v) w( T ) w( T ) We claim that T 1 is the MST of G 1 =(V 1,E 1 ), the subgraph of G induced by vertices in T 1 Also, T 2 is the MST of G 2 1 2 11/30/17 CSE 3101 12

Greedy Choice Greedy choice property: locally optimal (greedy) choice yields a globally optimal solution Theorem Let G=(V, E), and let S V and let (u,v) be min-weight edge in G connecting S to V S Then (u,v) T some MST of G 11/30/17 CSE 3101 13

Proof suppose (u,v) T Greedy Choice (2) look at path from u to v in T swap (x, y) the first edge on path from u to v in T that crosses from S to V S this improves T contradiction (T supposed to be MST) S x y V-S u v 11/30/17 CSE 3101 14

Generic MST Algorithm Generic-MST(G, w) w) 1 A// Contains edges that belong to to a MST MST 2 while A does not not form a spanning tree do do 3 Find an an edge (u,v) that is is safe for for A 4 AA{(u,v)} 5 return A Safe edge edge that does not destroy A s property MoreSpecific-MST(G, w) w) 1 A// Contains edges that belong to to a MST MST 2 while A does not not form a spanning tree do do 3.1 3.1 Make a cut cut (S, (S, V-S) of of G that respects A 3.2 3.2 Take the the min-weight edge (u,v) connecting S to to V-S V-S 4 AA{(u,v)} 5 return A 11/30/17 CSE 3101 15

Prim s Algorithm Vertex based algorithm Grows one tree T, one vertex at a time A cloud covering the portion of T already computed Label the vertices v outside the cloud with key[v] the minimum weight of an edge connecting v to a vertex in the cloud, key[v] =, if no such edge exists 11/30/17 CSE 3101 16

Prim s Algorithm (2) MST-Prim(G,w,r) 01 Q V[G] // Q vertices out of T 02 for each u Q 03 key[u] 04 key[r] 0 05 [r] NIL 06 while Q do 07 u ExtractMin(Q) // making u part of T 08 for each v Adj[u] do 09 if v Q and w(u,v) < key[v] then 10 [v] u 11 key[v] w(u,v) updating keys 11/30/17 CSE 3101 17

Prim Example 11/30/17 CSE 3101 18

Prim Example (2) 11/30/17 CSE 3101 19

Prim Example (3) 11/30/17 CSE 3101 20

Priority Queues A priority queue is a data structure for maintaining a set S of elements, each with an associated value called key We need PQ to support the following operations BuildPQ(S) initializes PQ to contain elements of S ExtractMin(S) returns and removes the element of S with the smallest key ModifyKey(S,x,newkey) changes the key of x in S A min heap can be used to implement a PQ BuildPQ O(n) ExtractMin and ModifyKey O(lg n) 11/30/17 CSE 3101 21

Prim s Running Time Time = V T(ExtractMin) + O( E )T(ModifyKey) Time = O( V lg V + E lg V ) = O( E lg V ) Q T(ExtractMin) T(DecreaseKey) Total array O( V ) O(1) O( V 2 ) min heap O(lg V ) O(lg V ) O( E lg V ) Fibonacci heap O(lg V ) O(1) amortized O( V lg V + E ) 11/30/17 CSE 3101 22

Kruskal's Algorithm Edge based algorithm Add the edges one at a time, in increasing weight order The algorithm maintains A a forest of trees. An edge is accepted it if connects vertices of distinct trees We need an ADT that maintains a partition, i.e.,a collection of disjoint sets MakeSet(S,x): S S {{x}} Union(S i,s j ): S S {S i,s j } {S i S j } FindSet(S, x): returns unique S i S, where x S i 11/30/17 CSE 3101 23

Kruskal's Algorithm The algorithm keeps adding the cheapest edge that connects two trees of the forest MST-Kruskal(G,w) 01 A 02 for each vertex v V[G] do 03 Make-Set(v) 04 sort the edges of E by non-decreasing weight w 05 for each edge (u,v) E, in order by nondecreasing weight do 06 if Find-Set(u) Find-Set(v) then 07 A A {(u,v)} 08 Union(u,v) 09 return A 11/30/17 CSE 3101 24

Kruskal's Algorithm: example 11/30/17 CSE 3101 25

Kruskal's Algorithm: example (2) 11/30/17 CSE 3101 26

Kruskal's Algorithm: example (3) 11/30/17 CSE 3101 27

Kruskal's Algorithm: example (4) 11/30/17 CSE 3101 28

Kruskal running time Initialization O( V ) time Sorting the edges ( E lg E ) = ( E lg V ) (why?) O( E ) calls to FindSet Union costs Let t(v) the number of times v is moved to a new cluster Each time a vertex is moved to a new cluster the size of the cluster containing the vertex at least doubles:t(v) log V Total time spent doing Union t( v) V log V Total time: O( E lg V ) vv 11/30/17 CSE 3101 29

Next: Graph Algorithms Graphs Graph representations adjacency list adjacency matrix Traversing graphs Breadth-First Search Depth-First Search 11/30/17 CSE 3101 30

Graph Searching Algorithms Systematic search of every edge and vertex of the graph Graph G = (V,E) is either directed or undirected Today's algorithms assume an adjacency list representation Applications Compilers Graphics Maze-solving Mapping Networks: routing, searching, clustering, etc. 11/30/17 CSE 3101 31

Breadth First Search A Breadth-First Search (BFS) traverses a connected component of a graph, and in doing so defines a spanning tree with several useful properties BFS in an undirected graph G is like wandering in a labyrinth with a string. The starting vertex s, it is assigned a distance 0. In the first round, the string is unrolled the length of one edge, and all of the edges that are only one edge away from the anchor are visited (discovered), and assigned distances of 1 11/30/17 CSE 3101 32

Breadth First Search (2) In the second round, all the new edges that can be reached by unrolling the string 2 edges are visited and assigned a distance of 2 This continues until every vertex has been assigned a level The label of any vertex v corresponds to the length of the shortest path (in terms of edges) from s to v 11/30/17 CSE 3101 33

11/30/17 CSE 3101 34 Breadth First Search: example r s u t w v y x 0 s Q r s u t w v y x 1 w 1 r Q r s u t w v y x 2 t 1 r 2 x Q r s u t w v y x 2 x 2 t 2 v Q

11/30/17 CSE 3101 35 Breadth First Search: example r s u t w v y x 2 v 2 x 3 u Q r s u t w v y x 3 u 2 v 3 y Q r s u t w v y x 3 y 3 u Q r s u t w v y x 3 y Q

Breadth First Search: example r s t u v w x y Q - 11/30/17 CSE 3101 36

BFS Algorithm BFS(G,s) 01 for each vertex u V[G]-{s} 02 color[u] white 03 d[u] 04 [u] NIL 05 color[s] gray 06 d[s] 0 07 [u] NIL 08 Q {s} 09 while Q do 10 u head[q] 11 for each v Adj[u] do 12 if color[v] = white then 13 color[v] gray 14 d[v] d[u] + 1 15 [v] u 16 Enqueue(Q,v) 17 Dequeue(Q) 18 color[u] black Init all vertices Init BFS with s Handle all u s children before handling any children of children 11/30/17 CSE 3101 37

BFS Algorithm: running time Given a graph G = (V,E) Vertices are enqueued if there color is white Assuming that en- and dequeuing takes O(1) time the total cost of this operation is O( V ) Adjacency list of a vertex is scanned when the vertex is dequeued (and only then ) The sum of the lengths of all lists is O( E ). Consequently, O( E ) time is spent on scanning them Initializing the algorithm takes O( V ) Total running time O( V + E ) (linear in the size of the adjacency list representation of G) 11/30/17 CSE 3101 38

BFS Algorithm: properties Given a graph G = (V,E), BFS discovers all vertices reachable from a source vertex s It computes the shortest distance to all reachable vertices It computes a breadth-first tree that contains all such reachable vertices For any vertex v reachable from s, the path in the breadth first tree from s to v, corresponds to a shortest path in G 11/30/17 CSE 3101 39

BFS Tree Predecessor subgraph of G G ( V, E ) : [ ] ( [ ], ) : { } V v V v NIL s E v v E v V s G p is a breadth-first tree V p consists of the vertices reachable from s, and for all v V p, there is a unique simple path from s to v in G p that is also a shortest path from s to v in G The edges in G p are called tree edges 11/30/17 CSE 3101 40

Depth-first search (DFS) A depth-first search (DFS) in an undirected graph G is like wandering in a labyrinth with a string and a can of paint We start at vertex s, tying the end of our string to the point and painting s visited (discovered). Next we label s as our current vertex called u Now, we travel along an arbitrary edge (u,v). If edge (u,v) leads us to an already visited vertex v we return to u If vertex v is unvisited, we unroll our string, move to v, paint v visited, set v as our current vertex, and repeat the previous steps 11/30/17 CSE 3101 41

Depth-first search (2) Eventually, we will get to a point where all incident edges on u lead to visited vertices We then backtrack by unrolling our string to a previously visited vertex v. Then v becomes our current vertex and we repeat the previous steps Then, if all incident edges on v lead to visited vertices, we backtrack as we did before. We continue to backtrack along the path we have traveled, finding and exploring unexplored edges, and repeating the procedure 11/30/17 CSE 3101 42

Depth-first search algorithm Initialize color all vertices white Visit each and every white vertex using DFS- Visit Each call to DFS-Visit(u) roots a new tree of the depth-first forest at vertex u A vertex is white if it is undiscovered A vertex is gray if it has been discovered but not all of its edges have been discovered A vertex is black after all of its adjacent vertices have been discovered (the adj. list was examined completely) 11/30/17 CSE 3101 43

Depth-first search algorithm (2) Init all vertices Visit all children recursively 11/30/17 CSE 3101 44

Depth-first search example u 1/ v w u v 1/ 2/ w u v 1/ 2/ w x y z x y z x 3/ y z u v w u v w u v w 1/ 2/ 1/ 2/ B 1/ 2/ B 4/ x 3/ y z 4/ x 3/ y z 4/5 x 3/ y z 11/30/17 CSE 3101 45

Depth-first search example (2) u v w u v w u v w 1/ 2/ B 4/5 x 3/6 y z 1/ 2/7 B 4/5 x 3/6 y z 1/ 2/7 F B 4/5 x 3/6 y z u v w u v w u v w 1/8 2/7 F B 4/5 x 3/6 y z 1/8 2/7 F B 4/5 x 3/6 y 9/ z 1/8 2/7 F B 4/5 x 3/6 y C 9/ z 11/30/17 CSE 3101 46

Depth-first search example (3) u v w u v w u v w 1/8 2/7 F B 4/5 x 3/6 y C 9/ 10/ z 1/8 2/7 F B 4/5 x 3/6 y C 9/ 10/ B z 1/8 2/7 F B 4/5 x 3/6 y C 9/ 10/11 B z u v w 1/8 2/7 F B 4/5 x 3/6 y C 9/12 10/11 B z 11/30/17 CSE 3101 47

Depth-first search example (4) When DFS returns, every vertex u is assigned a discovery time d[u], and a finishing time f[u] Running time the loops in DFS take time (V) each, excluding the time to execute DFS-Visit DFS-Visit is called once for every vertex its only invoked on white vertices, and paints the vertex gray immediately for each DFS-visit a loop interates over all Adj[v] the total cost for DFS-Visit is (E) the running time of DFS is (V+E) Adj[ v] ( E) 11/30/17 CSE 3101 48 vv

Predecessor Subgraph Defined slightly different from BFS G E ( [ v], v) E : v V and [ v] NIL ( V, E ) The PD subgraph of a depth-first search forms a depth-first forest composed of several depth-first trees The edges in G p are called tree edges 11/30/17 CSE 3101 49

DFS Timestamping The DFS algorithm maintains a monotonically increasing global clock discovery time d[u] and finishing time f[u] For every vertex u, the inequality d[u] < f[u] must hold 11/30/17 CSE 3101 50

Vertex u is DFS Timestamping white before time d[u] gray between time d[u] and time f[u], and black thereafter Notice the structure througout the algorithm. gray vertices form a linear chain correponds to a stack of vertices that have not been exhaustively explored (DFS-Visit started but not yet finished) 11/30/17 CSE 3101 51

DFS Parenthesis Theorem Discovery and finish times have parenthesis structure represent discovery of u with left parenthesis "(u" represent finishin of u with right parenthesis "u)" history of discoveries and finishings makes a wellformed expression (parenthesis are properly nested) Intuition for proof: any two intervals are either disjoint or enclosed Overlaping intervals would mean finishing ancestor, before finishing descendant or starting descendant without starting ancestor 11/30/17 CSE 3101 52

DFS Parenthesis Theorem (2) 11/30/17 CSE 3101 53

DFS Edge Classification Tree edge (gray to white) encounter new vertices (white) Back edge (gray to gray) from descendant to ancestor 11/30/17 CSE 3101 54

DFS Edge Classification (2) Forward edge (gray to black) from ancestor to descendant Cross edge (gray to black) remainder between trees or subtrees 11/30/17 CSE 3101 55

DFS Edge Classification (3) Tree and back edges are important Most algorithms do not distinguish between forward and cross edges 11/30/17 CSE 3101 56

Next: Application of DFS: Topological Sort 11/30/17 CSE 3101 57

Directed Acyclic Graphs A DAG is a directed graph with no cycles Often used to indicate precedences among events, i.e., event a must happen before b An example would be a parallel code execution Total order can be introduced using Topological Sorting 11/30/17 CSE 3101 58

DAG Theorem A directed graph G is acyclic if and only if a DFS of G yields no back edges. Proof: suppose there is a back edge (u,v); v is an ancestor of u in DFS forest. Thus, there is a path from v to u in G and (u,v) completes the cycle suppose there is a cycle c; let v be the first vertex in c to be discovered and u is a predecessor of v in c. Upon discovering v the whole cycle from v to u is white We must visit all nodes reachable on this white path before return DFS-Visit(v), i.e., vertex u becomes a descendant of v Thus, (u,v) is a back edge Thus, we can verify a DAG using DFS! 11/30/17 CSE 3101 59

Topological Sort Example Precedence relations: an edge from x to y means one must be done with x before one can do y Intuition: can schedule task only when all of its subtasks have been scheduled 11/30/17 CSE 3101 60

Topological Sort Sorting of a directed acyclic graph (DAG) A topological sort of a DAG is a linear ordering of all its vertices such that for any edge (u,v) in the DAG, u appears before v in the ordering The following algorithm topologically sorts a DAG Topological-Sort(G) 1) call DFS(G) to compute finishing times f[v] for each vertex v 2) as each vertex is finished, insert it onto the front of a linked list 3) return the linked list of vertices The linked lists comprises a total ordering 11/30/17 CSE 3101 61

Topological Sort Running time depth-first search: O(V+E) time insert each of the V vertices to the front of the linked list: O(1) per insertion Thus the total running time is O(V+E) 11/30/17 CSE 3101 62

Topological Sort Correctness Claim: for a DAG, an edge ( u, v) Î E Þ f [ u] > f [ v] When (u,v) explored, u is gray. We can distinguish three cases v = gray (u,v) = back edge (cycle, contradiction) v = white v becomes descendant of u v will be finished before u f[v] < f[u] v = black v is already finished f[v] < f[u] The definition of topological sort is satisfied 11/30/17 CSE 3101 63