greedy algorithms pasi fränti 8.10.2013. greedy algorithm 1.coin problem 2.minimum spanning tree...

31
Greedy Algorithms Pasi Fränti 8.10.2013

Upload: dasia-purington

Post on 15-Dec-2015

228 views

Category:

Documents


0 download

TRANSCRIPT

Greedy Algorithms

Pasi Fränti8.10.2013

Greedy algorithm

1. Coin problem2. Minimum spanning tree3. Generalized knapsack problem4. Traveling salesman problem

Task: Given a coin set, pay the required amount (36 snt) using least number of coins.

Coin problem

25 110

Coin problemAnother coin set

Amount to be paid: 30

Greedy:

Optimal:

Blank space for notes

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

Source of data just for fun

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

Will appear 2014…

Generalized Knapsack problem

Semi-blank space

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

Greedy algorithms

1. Coin problem2. Minimum spanning tree3. Generalized knapsack problem4. Traveling salesman problem

Solved

Not

SolvedNot