spanning trees lecture 21 cs2110 – spring 2014 1
Post on 20-Jan-2016
214 Views
Preview:
TRANSCRIPT
Spanning TreesLecture 21
CS2110 – Spring 2014
1
A lecture with two distinct parts Part I: Finishing our discussion of graphs
Short review of DFS and BFS. Spanning trees Definitions, algorithms (Prim’s, Kruskal’s) Travelling salesman problem
2
Undirected Trees
• An undirected graph is a tree if there is exactly one simple path between any pair of vertices
3
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
Spanning Trees
A spanning tree of a connected undirected graph (V,E) is a subgraph (V,E') that is a tree
5
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
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
7
• 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
8
• 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
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 Tree10
• 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 Tree11
• 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 Tree12
• 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 Tree13
• 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 Tree14
• 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 Tree15
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
16
Minimum Spanning Trees
• Suppose edges are weighted, and we want a spanning tree of minimum cost (sum of edge weights)
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
49 51
3
• Useful in network routing & other applications
• For example, to stream a video
10
14
16
17
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
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
49 51
3
10
14
16
18
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
49 51
3
10
A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it
14
16
19
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
6211
1227
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
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
6211
1227
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
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
1
2
5
66
22 2824
34
72
64
825
54
6211
1227
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
3 Greedy Algorithms
4
13
9
6
7
21
15
1
2
5
22 24
825
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
23
3 Greedy Algorithms
4
13
9
6
7
15
1
2
58
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
3 Greedy Algorithms
14
4
9
6
7
1
2
58
25
54
11
12
10
A. Find a max weight edge – if it is on a cycle, throw it out, otherwise keep it
16
25
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
26
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
30
3 Greedy Algorithms
33
14
4
13
9
632
40
7
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
32
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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)
33
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
3 Greedy Algorithms
33
14
4
13
9
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
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
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
632
40
7
16
21
15
100
1
2
5
66
22 2824
34
72
64
825
54
101
6211
1227
49 51
3
10
39
3 Greedy Algorithms
14
4
9
6
7
1
2
58
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
40
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; mark s; //start vertex
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(n2) for adj matrix– While-loop is executed n times– For-loop takes O(n) time
41
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: the 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
42
Similar Code Structures
while (some vertices are unmarked) {
v = best of unmarked vertices;
mark v;
for (each w adj to v)
update 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 vw edge weight
43
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? Basically what we want the butterfly to do in A6! But
we don’t mind if the butterfly revisits a city (Tile), or doesn’t use the very shortest possible path.
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…
44
top related