greedy algorithms pasi fränti 8.10.2013. greedy algorithm 1.coin problem 2.minimum spanning tree...
TRANSCRIPT
Greedy algorithm
1. Coin problem2. Minimum spanning tree3. Generalized knapsack problem4. Traveling salesman problem
Minimum spanning treeWhen greedy works
Needs problem definition!Tree = … (no cycles)Spanning Tree = …Minimum = … (couple of examples with simple graph)
Prim(V, E): RETURN T
Select (u,v)E with min weightSS{u,v}; PP{(u,v)}; EE\{(u,v)};
REPEATSelect (u,v) with min weight (u,v)E, uS,
vSSS{v}; PP{(u,v)}; EE\{(u,v)};
UNTIL S=V
Return P;
Minimum spanning treePrim’s algorithm
136
170315
148 78
231
234
12089
131109
116
86
246
182
216110
117
199
121142
24279
191178
191
126149
17051 112
90163
59
14373
63 53
27135
10558
116
72
79
Example of Prim
Proof of optimalityGeneral properties of spanning trees
• Spanning tree includes N-1 links
• There are no cycles• Minimum spanning tree is
the one with the smallest weights
AB
C
AB
CRemoveLink BC
Cycle No cycle
Proof of optimalityCase: minimum link
2
AB
C
21
2
AB
C
21
• Link AB is minimum• Suppose it is not in MST• Path A→B must exist
Add AB
• Adding AB we can remove another link (e.g. AC)
• Path A→C exists• All nodes reached from
C can now be reached from B
Proof of optimalityInduction step
A
B
C
4
3 E
D
ReplaceCD by CE
MST solved forSubset S
• Suppose CE is minimum connecting S outside• Path D→E must exist and is outside S
Proof of optimalityInduction step
A
B
C
4
3 E
D
MST solved forSubset S
• Path D→E still exist as before• All nodes reachable via D
can now be reached via C→D
1. A // initially A is empty2. for each vertex v V[G] // line 2-3 takes O(V) time3. do Create-Set(v) // create set for each vertex4. sort the edges of E by nondecreasing weight w 5. for each edge (u,v) E, in order by nondecreasing weight 6. do if Find-Set(u) Find-Set(v) // u&v on different trees7. then A A {(u,v)}8. Union(u,v)9. return A
Total running time is O(E lg E).
Minimum spanning treeKruskal’s algorithm
Needs revisions:-Remove numbers
-Change terminology
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Cardiff
Sheffield
Nottingham
Oxford
Southampton
Bristol
Shrewsbury
Liverpool
Aberystwyth
B/ham
Manchester
50
40
40
30
80
7080
50
90
50
110
70
120
110 70 100
Input: Weight of N items {w1, w2, ..., wn}
Cost of N items {c1, c2, ..., cn}Knapsack limit S
Output: Selection for knapsack: {x1,x2,…xn}
where xi {0,1}. Sample input:
wi={1,1,2,4,12}
ci ={1,2,2,10,4}
S=15
Generalized Knapsack problem
Problem definition
Traveling salesman problem
GreedyTSP(V, E, home): RETURN T
X[1]home;
FOR i 1 TO N-1 DO
Select (u,v) with min weight (u,v)E, uS, vS
X[………….. SS{v}; ….UNTIL V≠{}
Return something;
Needs to be done