WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

23
WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren

Transcript of WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

Page 1: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

WS 06/07

Tobias Lauer

Algorithmentheorie

6 – Greedy-Verfahren

Page 2: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

2 WS 06/07

Greedy-Verfahren

1. Allgemeine Vorbemerkungen

2. Einfache Beispiele• Münzwechselproblem• Handlungsreisenden-Problem

3. Das Aktivitäten-Auswahlproblem

Page 3: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

3 WS 06/07

Treffe in jedem Verfahrensschritt diejenige

Entscheidung, die im Moment am besten ist!

Möglichkeiten:

1. Wir erhalten stets die optimale Gesamtlösung.

2. Wir erhalten eine Lösung, die zwar nicht immer optimal ist, aber vom Optimum stets nur wenig abweicht.

3. Die berechnete Lösung kann beliebig schlecht werden.

Greedy-Verfahren zur Lösung eines Optimierungsproblems

Page 4: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

4 WS 06/07

Einfaches Beispiel: Münzwechselproblem

EUR Bargeld-Werte:

500, 200, 100, 50, 20, 10, 5, 2, 1

Beobachtung

Jeder ganze EUR Betrag kann durch Münzen und Banknoten

mit diesen Werten bezahlt werden.

Ziel

Bezahlung eines Betrages n mit möglichst wenig

Münzen bzw. Banknoten

Page 5: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

5 WS 06/07

Münzwechselproblem

Greedy-Verfahren

Wähle die maximale Zahl von Banknoten und

Münzen mit jeweils größtmöglichem Wert,

bis der gewünschte Betrag n erreicht ist.

Beispiel: n = 487

500 200 100 50 20 10 5 2 1

Page 6: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

6 WS 06/07

Allgemeines Münzwechselproblem

Werte von Münzen und Banknoten: n1, n2, ..., nk

n1 > n2 > ... > nk , und nk = 1.

Greedy-Zahlungsverfahren:

1. w = n

2. for i = 1 to k do

mi = # Münzen mit Wert ni = w / ni

w = w – m i∙ni

Jeder Geldbetrag kann bezahlt werden!

Liefert das Greedy-Verfahren immer eine optimale Lösung?

Page 7: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

7 WS 06/07

Land Absurdia

Drei Münzen:

n3 = 1, n2 > 1 beliebig, n1 = 2 n2 + 1

Beispiel: 41, 20, 1

Zu zahlender Betrag: n = 3 n2 (z.B. n = 60)

Optimale Zahlungsweise:

Greedy-Zahlungsverfahren:

Page 8: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

8 WS 06/07

Handlungsreisenden-Problem (TSP)

Gegeben: n Orte und Kosten c(i, j), um von Ort i nach j

zu reisen

Gesucht: Eine billigste Rundreise, die alle Orte genau

einmal besucht.

Formal: Eine Permutation p von {1, 2, ..., n}, so dass

c(p(1), p(2)) + ... + c(p(n-1), p(n)) + c(p(n), p(1))

minimal ist.

Page 9: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

9 WS 06/07

Handlungsreisenden-Problem (TSP)

Greedy-Verfahren zur Lösung von TSP

Beginne mit Ort 1 und gehe jeweils zum nächsten bisher noch nicht besuchten Ort. Wenn alle Orte besucht sind, kehre zum Ausgangsort 1 zurück.

Page 10: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

10 WS 06/07

Handlungsreisenden-Problem (TSP)

Beispiel:

c(i, i+1) = 1 für i = 1, ..., n - 1

c(n,1) = M für eine sehr große Zahl M

c(i, j) = 2 sonst

Vom Greedy Verfahren berechnete Tour:

Optimale Tour:

1 2 3 n – 2 n – 1 n

1 2 3 n – 2 n – 1 n

Page 11: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

11 WS 06/07

Das Aktivitäten-Auswahl-Problem

Gegeben:

S = {a1,...,an} Menge von n Aktivitäten, die alle eine Ressource benötigen,

z.B. einen Hörsaal.

Aktivität ai: Beginn bi und Ende ei

Aktivitäten ai und aj heißen kompatibel, falls

[bi, ei) [bj, ej) =

Gesucht:

Eine größtmögliche Menge A S paarweise kompatibler Aktivitäten.

Page 12: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

12 WS 06/07

1. Versuch

Sortiere die Aktivitäten nach Anfangszeitpunkt, d.h.

b1 b2 b3 ... bn

und nimm immer die nächste Aktivität hinzu, die zur bisherigen Menge kompatibel ist.

Beispiel:

10

4

8

9

11

7

5

6

3

2

1

0 12t

Page 13: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

13 WS 06/07

Das Aktivitäten-Auswahl-Problem

1

1

1

10

8

4

8

9

11

7

5

6

3

2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

bi ei

0 6

1 4

2 13

3 5

3 8

5 7

5 9

6 10

8 11

8 12

12 14

1 8

1 8

1 8 11

1

1

1

1

1

Page 14: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

14 WS 06/07

1. Versuch

Sortiere die Aktivitäten nach Anfangszeitpunkt, d.h.

b1 b2 b3 ... bn

und nimm immer die nächste Aktivität hinzu, die zur bisherigen Menge kompatibel ist.

Problem: Dieses Verfahren ist nicht optimal!

Beispiel:

Page 15: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

15 WS 06/07

2. Versuch

Greedy-Strategie zur Lösung des Aktivitäten-Auswahl-Problems:

Sortiere die Aktivitäten nach aufsteigendem Endzeitpunkt:

e1 e2 e3 ... en

Wähle immer die Aktivität mit frühestem Endzeitpunkt,

die legal eingeplant werden kann!

Insbesondere ist die erste gewählte Aktivität die mit

frühestem Endzeitpunkt.

Page 16: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

16 WS 06/07

2. Versuch

Sortiere die Aktivitäten nach Endzeitpunkt, d.h.

e1 e2 e3 ... en

9

2

7

8

11

6

54

10

1

3

0 12t

Page 17: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

17 WS 06/07

Das Aktivitäten-Auswahl-Problem

1

1

1

1

1

1

1

1

1

1

1

10

4

4

4

4

4

4

4

4

8

8

8

8

11

4

8

9

11

7

5

6

3

2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

bi ei

1 4

3 5

0 6

5 7

3 8

5 9

6 10

8 11

8 12

2 13

12 14

Page 18: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

18 WS 06/07

Aktivitäten-Auswahl

Algorithmus Greedy-Aktivitäten

Input: n Aktivitätenintervalle [bi, ei), 1 i n mit ei ei+1

Output: Eine maximal große Menge von paarweise kompatiblenAktivitäten

1 A1 = {a1}2 last = 1 /* last ist Index der zuletzt hinzugefügten Aktivität */3 for i = 2 to n do

4 if bi < elast

5 then Ai = Ai-1

6 else /* bi elast */

7 Ai = Ai-1 {ai}8 last = i

9 return An

Laufzeit: O(n)

Page 19: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

19 WS 06/07

Optimalität des Greedy-Verfahrens

Satz

Das Greedy-Verfahren liefert eine optimale Lösung.

Beweis Wir zeigen: Für alle 1 i n gilt:

Es gibt eine optimale Gesamtlösung A* mit

A* {a1 ,...., ai} = Ai

i = 1:

Wähle A* {a1 ,...., an}, A* ist optimal, A* = {ai1 ,...., aik}

A* = ai1

ai2ai3

aik

a1

Page 20: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

20 WS 06/07

Optimalität des Greedy-Verfahrens

i –1 i:

wähle A* {a1, ..., an}, A* ist optimal mit A* {a1,...,ai-1 } = Ai-1

betrachte R = A* \ Ai-1

Beobachtung:

R ist eine optimale Lösung für die Menge der Aktivitäten

in {ai, ..., an}, die zu den Aktivitäten in Ai-1 kompatibel sind.

Page 21: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

21 WS 06/07

Optimalität des Greedy-Verfahrens

Fall 1: bi < elast

Ai-1 =

ai ist nicht kompatibel zu Ai-1

ai ist nicht enthalten in A*

A* {a1,...,ai} = Ai-1 = Ai

alast

elast

ai

bi

Page 22: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

22 WS 06/07

Optimalität des Greedy-Verfahrens

Fall 2: bi elast

Ai-1=

ai ist kompatibel zu Ai-1

Es gilt: R {ai, ..., an}

R =

A*neu = Ai-1 (R \ {c1}) {ai} ist optimal

A*neu {a1,...,ai} = Ai-1 {ai} = Ai

alast

elast

ai

bi

c1 c2 c3 cl

ai

Page 23: WS 06/07 Tobias Lauer Algorithmentheorie 6 – Greedy-Verfahren.

23 WS 06/07

Greedy-Verfahren

Greedy-Wahl-Eigenschaft:

Wenn man optimale Teillösung hat und man trifft eine lokal optimale Wahl, dann gibt es eine global optimale Lösung, die diese Wahl enthält.

Optimalität von Teillösungen:

Eine Teillösung einer optimalen Lösung ist eine optimale Lösung des Teilproblems.

nach jeder lokal optimalen Wahl erhalten wir ein zur Ausgangssituation analoges Problem