Presentation is loading. Please wait.

Presentation is loading. Please wait.

SPANNING TREES Lecture 20 CS2110 – Fall 2014 1. Spanning Trees  Definitions  Minimum spanning trees  3 greedy algorithms (incl. Kruskal’s & Prim’s)

Similar presentations


Presentation on theme: "SPANNING TREES Lecture 20 CS2110 – Fall 2014 1. Spanning Trees  Definitions  Minimum spanning trees  3 greedy algorithms (incl. Kruskal’s & Prim’s)"— Presentation transcript:

1 SPANNING TREES Lecture 20 CS2110 – Fall 2014 1

2 Spanning Trees  Definitions  Minimum spanning trees  3 greedy algorithms (incl. Kruskal’s & Prim’s)  Concluding comments: Greedy algorithms Travelling salesman problem 2

3 Undirected Trees An undirected graph is a tree if there is exactly one simple path between any pair of vertices 3

4 Facts About Trees |E| = |V| – 1 connected no cycles In fact, any two of these properties imply the third, and imply that the graph is a tree 4

5 Spanning Trees A spanning tree of a connected undirected graph (V,E) is a subgraph (V,E') that is a tree 5

6 Spanning Trees A spanning tree of a connected undirected graph (V,E) is a subgraph (V,E') that is a tree Same set of vertices V E' ⊆ E (V,E') is a tree 6

7 Spanning Trees: Examples http://mathworld.wolfram.com/SpanningTree.html 7

8 Finding a Spanning Tree A subtractive method If there is a cycle, pick an edge on the cycle, throw it out – the graph is still connected (why?) Repeat until no more cycles Start with the whole graph – it is connected 8

9 If there is a cycle, pick an edge on the cycle, throw it out – the graph is still connected (why?) Repeat until no more cycles Start with the whole graph – it is connected Finding a Spanning Tree A subtractive method 9

10 If there is a cycle, pick an edge on the cycle, throw it out – the graph is still connected (why?) Repeat until no more cycles Start with the whole graph – it is connected Finding a Spanning Tree A subtractive method 10

11 An additive method If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles Finding a Spanning Tree 11

12 If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles An additive method Finding a Spanning Tree 12

13 If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles An additive method Finding a Spanning Tree 13

14 If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles An additive method Finding a Spanning Tree 14

15 If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles An additive method Finding a Spanning Tree 15

16 If more than one connected component, insert an edge between them – still no cycles (why?) Repeat until only one component Start with no edges – there are no cycles An additive method Finding a Spanning Tree 16

17 Minimum Spanning Trees Suppose edges are weighted, and we want a spanning tree of minimum cost (sum of edge weights) Some graphs have exactly one minimum spanning tree. Others have multiple trees with the same cost, any of which is a minimum spanning tree 17

18 Minimum Spanning Trees Suppose edges are weighted, and we want a spanning tree of minimum cost (sum of edge weights) 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 Useful in network routing & other applications For example, to stream a video 10 14 16 18

19 3 Greedy Algorithms A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 14 16 19

20 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 20

21 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 62 11 12 27 49 51 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 21

22 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 62 11 12 27 49 51 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 22

23 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 1 2 5 66 22 28 24 34 72 64 8 25 54 62 11 12 27 49 51 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 23

24 3 Greedy Algorithms 4 13 9 6 7 21 15 1 2 5 22 24 8 25 54 11 12 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 24

25 3 Greedy Algorithms 4 13 9 6 7 15 1 2 5 8 25 54 11 12 3 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 14 16 25

26 3 Greedy Algorithms 14 4 9 6 7 1 2 5 8 25 54 11 12 10 A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it 16 26

27 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 14 16 27

28 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 14 16 28

29 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 14 16 29

30 3 Greedy Algorithms 33 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 14 16 30

31 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 16 31

32 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 16 32

33 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 B. Find a min weight edge – if it forms a cycle with edges already taken, throw it out, otherwise keep it Kruskal's algorithm 33

34 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 34

35 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 35

36 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 36

37 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 37

38 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 38

39 3 Greedy Algorithms 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 39

40 3 Greedy Algorithms C. Start with any vertex, add min weight edge extending that connected component that does not form a cycle Prim's algorithm (reminiscent of Dijkstra's algorithm) 33 14 4 13 9 6 32 40 7 16 21 15 100 1 2 5 66 22 28 24 34 72 64 8 25 54 101 62 11 12 27 49 51 3 10 40

41 3 Greedy Algorithms 14 4 9 6 7 1 2 5 8 25 54 11 12 10 When edge weights are all distinct, or if there is exactly one minimum spanning tree, the 3 algorithms all find the identical tree 16 41

42 Prim’s Algorithm  O(m + n log n) for adj list  Use a PQ  Regular PQ produces time O(n + m log m)  Can improve to O(m + n log n) using a fancier heap prim(s) { D[s] = 0; //start vertex D[i] = ∞ for all i≠s; while (some vertices are unmarked) { v = unmarked vertex with smallest D; mark v; for (each w adj to v) D[w] = min(D[w], c(v,w)); } O(n 2 ) for adj matrix –While-loop is executed n times –For-loop takes O(n) time 42

43 Application of MST  Maze generation using Prim’s algorithm 43 http://en.wikipedia.org/wiki/File:MAZE_30x20_Prim.ogv The generation of a maze using Prim's algorithm on a randomly weighted grid graph that is 30x20 in size.

44 More complicated maze generation 44 http://www.cgl.uwaterloo.ca/~csk/projects/mazes/

45 Greedy Algorithms  These are examples of Greedy Algorithms  The Greedy Strategy is an algorithm design technique  Like Divide & Conquer  Greedy algorithms are used to solve optimization problems  The goal is to find the best solution  Works when the problem has the greedy-choice property  A global optimum can be reached by making locally optimum choices  Example: Change Making Problem  Given an amount of money, find the smallest number of coins to make that amount  Solution: Use a Greedy Algorithm  Give as many large coins as you can  This greedy strategy produces the optimum number of coins for the US coin system  Different money system  greedy strategy may fail  Example: old UK system 45

46 Similar Code Structures while (some vertices are unmarked) { v = best unmarked vertex mark v; for (each w adj to v) update D[w]; } Breadth-first-search (bfs) –best: next in queue –update: D[w] = D[v]+1 Dijkstra’s algorithm –best: next in priority queue –update: D[w] = min(D[w], D[v]+c(v,w)) Prim’s algorithm –best: next in priority queue –update: D[w] = min(D[w], c(v,w)) here c(v,w) is the v  w edge weight 46

47 Traveling Salesman Problem  Given a list of cities and the distances between each pair, what is the shortest route that visits each city exactly once and returns to the origin city?  The true TSP is very hard (NP complete)… for this we want the perfect answer in all cases, and can’t revisit.  Most TSP algorithms start with a spanning tree, then “evolve” it into a TSP solution. Wikipedia has a lot of information about packages you can download… 47


Download ppt "SPANNING TREES Lecture 20 CS2110 – Fall 2014 1. Spanning Trees  Definitions  Minimum spanning trees  3 greedy algorithms (incl. Kruskal’s & Prim’s)"

Similar presentations


Ads by Google