Download presentation
Presentation is loading. Please wait.
1
Graph Traversals and Minimum Spanning Trees 15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003
2
Announcements
3
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 3 Announcements Readings: Chapter 14 HW5: Due in less than one week! Monday, April 14, 2003, 11:59pm
4
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 4 Today More Graph Terminology (some review) Topological sort Graph Traversals (BFS and DFS) Minimal Spanning Trees After Class... Before Recitation
5
Graph Terminology
6
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 6 Paths and cycles A path is a sequence of nodes v 1, v 2, …, v N such that (v i,v i+1 ) E for 0<i<N –The length of the path is N-1. –Simple path: all v i are distinct, 0<i<N A cycle is a path such that v 1 =v N –An acyclic graph has no cycles
7
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 7 Cycles PIT BOS JFK DTW LAX SFO
8
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 8 More useful definitions In a directed graph: The indegree of a node v is the number of distinct edges (w,v) E. The outdegree of a node v is the number of distinct edges (v,w) E. A node with indegree 0 is a root.
9
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 9 Trees are graphs A dag is a directed acyclic graph. A tree is a connected acyclic undirected graph. A forest is an acyclic undirected graph (not necessarily connected), i.e., each connected component is a tree.
10
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 10 Example DAG Watch Socks Shoes Undershorts Pants Belt Tie Shirt Jacket a DAG implies an ordering on events
11
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 11 Example DAG Watch Socks Shoes Undershorts Pants Belt Tie Shirt Jacket In a complex DAG, it can be hard to find a schedule that obeys all the constraints.
12
Topological Sort
13
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 13 Topological Sort For a directed acyclic graph G = (V,E) A topological sort is an ordering of all of G’s vertices v 1, v 2, …, v n such that... Formally: for every edge (v i,v k ) in E, i<k. Visually: all arrows are pointing to the right
14
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 14 Topological sort There are often many possible topological sorts of a given DAG Topological orders for this DAG : 1,2,5,4,3,6,7 2,1,5,4,7,3,6 2,5,1,4,7,3,6 Etc. Each topological order is a feasible schedule. 1 4 7 6 3 5 2
15
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 15 Topological Sorts for Cyclic Graphs? Impossible! 12 3 If v and w are two vertices on a cycle, there exist paths from v to w and from w to v. Any ordering will contradict one of these paths
16
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 16 Topological sort algorithm Algorithm –Assume indegree is stored with each node. –Repeat until no nodes remain: Choose a root and output it. Remove the root and all its edges. Performance –O(V 2 + E), if linear search is used to find a root.
17
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 17 Better topological sort Algorithm: –Scan all nodes, pushing roots onto a stack. –Repeat until stack is empty: Pop a root r from the stack and output it. For all nodes n such that (r,n) is an edge, decrement n’s indegree. If 0 then push onto the stack. O( V + E ), so still O(V 2 ) in worst case, but better for sparse graphs. Q: Why is this algorithm correct?
18
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 18 Correctness Clearly any ordering produced by this algorithm is a topological order But... Does every DAG have a topological order, and if so, is this algorithm guaranteed to find one?
19
Quiz Break
20
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 20 Quiz Prove: –This algorithm never gets stuck, i.e. if there are unvisited nodes then at least one of them has an indegree of zero. Hint: –Prove that if at any point there are unseen vertices but none of them have an indegree of 0, a cycle must exist, contradicting our assumption of a DAG.
21
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 21 Proof See Weiss page 476.
22
Graph Traversals
23
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 23 Graph Traversals Both take time: O(V+E)
24
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 24 Use of a stack It is very common to use a stack to keep track of: –nodes to be visited next, or –nodes that we have already visited. Typically, use of a stack leads to a depth-first visit order. Depth-first visit order is “aggressive” in the sense that it examines complete paths.
25
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 25 Topological Sort as DFS do a DFS of graph G as each vertex v is “finished” (all of it’s children processed), insert it onto the front of a linked list return the linked list of vertices why is this correct?
26
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 26 Use of a queue It is very common to use a queue to keep track of: –nodes to be visited next, or –nodes that we have already visited. Typically, use of a queue leads to a breadth- first visit order. Breadth-first visit order is “cautious” in the sense that it examines every path of length i before going on to paths of length i+1.
27
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 27 Graph Searching ??? Graph as state space (node = state, edge = action) For example, game trees, mazes,... BFS and DFS each search the state space for a best move. If the search is exhaustive they will find the same solution, but if there is a time limit and the search space is large... DFS explores a few possible moves, looking at the effects far in the future BFS explores many solutions but only sees effects in the near future (often finds shorter solutions)
28
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 28 Minimum Spanning Trees
29
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 29 Problem: Laying Telephone Wire Central office
30
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 30 Wiring: Naïve Approach Central office Expensive!
31
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 31 Wiring: Better Approach Central office Minimize the total length of wire connecting the customers
32
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 32 Minimum Spanning Tree (MST) (see Weiss, Section 24.2.2) it is a tree (i.e., it is acyclic) it covers all the vertices V –contains |V| - 1 edges the total cost associated with tree edges is the minimum among all possible spanning trees not necessarily unique A minimum spanning tree is a subgraph of an undirected weighted graph G, such that
33
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 33 Applications of MST Any time you want to visit all vertices in a graph at minimum cost (e.g., wire routing on printed circuit boards, sewer pipe layout, road planning…) Internet content distribution –$$$, also a hot research topic –Idea: publisher produces web pages, content distribution network replicates web pages to many locations so consumers can access at higher speed –MST may not be good enough! content distribution on minimum cost tree may take a long time! Provides a heuristic for traveling salesman problems. The optimum traveling salesman tour is at most twice the length of the minimum spanning tree (why??)
34
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 34 How Can We Generate a MST? a c e d b 2 45 9 6 4 5 5 a c e d b 2 45 9 6 4 5 5
35
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 35 Prim’s Algorithm Initialization a. Pick a vertex r to be the root b. Set D(r) = 0, parent(r) = null c. For all vertices v V, v r, set D(v) = d. Insert all vertices into priority queue P, using distances as the keys a c e d b 2 45 9 6 4 5 5 eabcd 0 VertexParent e -
36
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 36 Prim’s Algorithm While P is not empty: 1. Select the next vertex u to add to the tree u = P.deleteMin() 2. Update the weight of each vertex w adjacent to u which is not in the tree (i.e., w P ) If weight(u,w) < D(w), a. parent(w) = u b. D(w) = weight(u,w) c. Update the priority queue to reflect new distance for w
37
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 37 Prim’s algorithm a c e d b 2 45 9 6 4 5 5 dbca 455 VertexParent e- be ce de The MST initially consists of the vertex e, and we update the distances and parent for its adjacent vertices VertexParent e- b- c- d- dbca e 0
38
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 38 Prim’s algorithm a c e d b 2 45 9 6 4 5 5 acb 245 VertexParent e- be c d de a d dbca 455 VertexParent e- be ce de
39
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 39 Prim’s algorithm a c e d b 2 45 9 6 4 5 5 cb 45 VertexParent e- be c d de a d acb 245 VertexParent e- be c d de a d
40
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 40 Prim’s algorithm a c e d b 2 45 9 6 4 5 5 b 5 VertexParent e- be c d de a d cb 45 VertexParent e- be c d de a d
41
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 41 Prim’s algorithm VertexParent e- be c d de a d a c e d b 2 45 9 6 4 5 5 The final minimum spanning tree b 5 VertexParent e- be c d de a d
42
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 42 Running time of Prim’s algorithm (without heaps) Initialization of priority queue (array): O(| V |) Update loop: | V | calls Choosing vertex with minimum cost edge: O(| V |) Updating distance values of unconnected vertices: each edge is considered only once during entire execution, for a total of O(| E |) updates Overall cost without heaps: When heaps are used, apply same analysis as for Dijkstra’s algorithm (p.469) (good exercise) O(| E | + | V | 2 )
43
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 43 Prim’s Algorithm Invariant At each step, we add the edge (u,v) s.t. the weight of (u,v) is minimum among all edges where u is in the tree and v is not in the tree Each step maintains a minimum spanning tree of the vertices that have been included thus far When all vertices have been included, we have a MST for the graph!
44
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 44 Correctness of Prim’s This algorithm adds n-1 edges without creating a cycle, so clearly it creates a spanning tree of any connected graph (you should be able to prove this). But is this a minimum spanning tree? Suppose it wasn't. There must be point at which it fails, and in particular there must a single edge whose insertion first prevented the spanning tree from being a minimum spanning tree.
45
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 45 Correctness of Prim’s Let V' be the vertices incident with edges in S Let T be a MST of G containing all edges in S, but not (x,y). Let G be a connected, undirected graph Let S be the set of edges chosen by Prim’s algorithm before choosing an errorful edge (x,y) x y
46
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 46 Correctness of Prim’s x y v w There is exactly one edge on this cycle with exactly one vertex in V’, call this edge (v,w) Edge (x,y) is not in T, so there must be a path in T from x to y since T is connected. Inserting edge (x,y) into T will create a cycle
47
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 47 Correctness of Prim’s Since Prim’s chose (x,y) over (v,w), w(v,w) >= w(x,y). We could form a new spanning tree T’ by swapping (x,y) for (v,w) in T (prove this is a spanning tree). w(T’) is clearly no greater than w(T) But that means T’ is a MST And yet it contains all the edges in S, and also (x,y)...Contradiction
48
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 48 Another Approach a c e d b 2 45 9 6 4 5 5 Create a forest of trees from the vertices Repeatedly merge trees by adding “safe edges” until only one tree remains A “safe edge” is an edge of minimum weight which does not create a cycle forest: {a}, {b}, {c}, {d}, {e}
49
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 49 Kruskal’s algorithm Initialization a. Create a set for each vertex v V b. Initialize the set of “safe edges” A comprising the MST to the empty set c. Sort edges by increasing weight a c e d b 2 45 9 6 4 5 5 F = {a}, {b}, {c}, {d}, {e} A = E = {(a,d), (c,d), (d,e), (a,c), (b,e), (c,e), (b,d), (a,b)}
50
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 50 Kruskal’s algorithm For each edge (u,v) E in increasing order while more than one set remains: If u and v, belong to different sets U and V a. add edge (u,v) to the safe edge set A = A {(u,v)} b. merge the sets U and V F = F - U - V + (U V) Return A Running time bounded by sorting (or findMin) O( |E|log|E| ), or equivalently, O( |E|log|V| ) (why???)
51
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 51 Kruskal’s algorithm E = {(a,d), (c,d), (d,e), (a,c), (b,e), (c,e), (b,d), (a,b)} Forest {a}, {b}, {c}, {d}, {e} {a,d}, {b}, {c}, {e} {a,d,c}, {b}, {e} {a,d,c,e}, {b} {a,d,c,e,b} A {(a,d)} {(a,d), (c,d)} {(a,d), (c,d), (d,e)} {(a,d), (c,d), (d,e), (b,e)} a c e d b 2 45 9 6 4 5 5
52
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 52 After each iteration, every tree in the forest is a MST of the vertices it connects Algorithm terminates when all vertices are connected into one tree Kruskal’s Algorithm Invariant
53
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 53 Correctness of Kruskal’s This algorithm adds n-1 edges without creating a cycle, so clearly it creates a spanning tree of any connected graph (you should be able to prove this). But is this a minimum spanning tree? Suppose it wasn't. There must be point at which it fails, and in particular there must a single edge whose insertion first prevented the spanning tree from being a minimum spanning tree.
54
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 54 Correctness of Kruskal’s Let e be this first errorful edge. Let K be the Kruskal spanning tree Let S be the set of edges chosen by Kruskal’s algorithm before choosing e Let T be a MST containing all edges in S, but not e. K T S e
55
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 55 Correctness of Kruskal’s Proof (by contradiction): Assume there exists some edge e’ in T - S, w(e’) < w(e) Kruskal’s must have considered e’ before e K T S e Lemma: w(e’) >= w(e) for all edges e’ in T - S However, since e’ is not in K (why??), it must have been discarded because it caused a cycle with some of the other edges in S. But e’ + S is a subgraph of T, which means it cannot form a cycle...Contradiction
56
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 56 Correctness of Kruskal’s Inserting edge e into T will create a cycle There must be an edge on this cycle which is not in K (why??). Call this edge e’ e’ must be in T - S, so (by our lemma) w(e’) >= w(e) We could form a new spanning tree T’ by swapping e for e’ in T (prove this is a spanning tree). w(T’) is clearly no greater than w(T) But that means T’ is a MST And yet it contains all the edges in S, and also e...Contradiction
57
15-211: Fundamental Data Structures and Algorithms Rose Hoberman April 8, 2003 57 Greedy Approach Like Dijkstra’s algorithm, both Prim’s and Kruskal’s algorithms are greedy algorithms The greedy approach works for the MST problem; however, it does not work for many other problems!
58
That’s All!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.