e ziente algorithmen - startseite tu ilmenau · besitzt also wahrscheinlich keinen effizienten...

26
Effiziente Algorithmen Greedy-Algorithmen Vorlesender: Martin Aum¨ uller (nach Folien von Prof. Martin Dietzfelbinger) Mai 2012 FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 1

Upload: others

Post on 24-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

E!ziente Algorithmen

Greedy-Algorithmen

Vorlesender: Martin Aumuller(nach Folien von Prof. Martin Dietzfelbinger)

Mai 2012

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 1

Page 2: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Kapitel 3: Greedy-AlgorithmenGreedy!-Algorithmen sind anwendbar bei Konstruktionsaufgaben zumFinden einer optimalen Struktur.

Sie finden eine Losung, die sie schrittweise aufbauen, ohne zuruckzusetzen.Es werden dabei nicht mehr Teillosungen konstruiert als unbedingt notig.

! greedy (engl.): gierig.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 2

Page 3: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

3.1 Zwei BeispieleBeispiel 1: Horsaalbelegung

Gegeben: Veranstaltungsort (Horsaal), Zeitspanne [T0,T1) und eineMenge von n Aktionen (Vorlesungen oder ahnliches), durch Start- undEndzeit spezifiziert:

[si , fi ), fur 1 ! i ! n.

Gesucht: Belegung des Horsaals, die moglichst viele Ereignisse mitdisjunkten Zeitspannen stattfinden lasst.

Nenne eine Menge A " {1, . . . , n} zulassig, wenn alle [si , fi ), i # A,disjunkt sind.

Aufgabe, formal: Finde zulassige Menge A mit |A| so groß wie moglich.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 3

Page 4: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

T0

T1

Eingabe: Aktionen mit Beginn und Ende

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 4

Page 5: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

T0 T1

Zulassige Losung mit 4 Aktionen. Optimal?

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 5

Page 6: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

T0 T1

Zulassige Losung mit 5 Aktionen. Optimal?

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 6

Page 7: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Ansatze, die nicht funktionieren:

Zuerst kurze Ereignisse planen

T0 T1

Immer ein Ereignis mit moglichst fruher Anfangszeit wahlen

T0 T1

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 7

Page 8: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Trick: Bearbeite Ereignisse nach wachsenden Schlusszeiten. O.B.d.A.:Veranstaltungen nach Schlusszeiten aufsteigend sortiert (ZeitaufwandO(n log n)), also:

f1 ! f2 ! · · · ! fn.

1T0T

1

2

3

4

5

6

7

8

9

10

11

12

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 8

Page 9: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Wiederhole: Wahle die wahlbare Aktion mit der kleinsten Schlusszeitund fuge sie zum Belegungsplan hinzu.

Eine Aktion ist wahlbar, wenn ihre Startzeit mindestens so groß wie dieSchlusszeit der letzten schon geplanten Veranstaltung ist.

1T0T

Ausgabe von GS: Zulassige Losung.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 9

Page 10: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Algorithmus Greedy Scheduling (GS)Eingabe: [T0,T1), [s1, f1), . . . , [sn, fn), nichtleere

reelle Intervalle, [si , fi ) " [T0,T1)Ausgabe: Maximal großes A " {1, . . . , n} mit

[si , fi ), i # A disjunkt(1) Sortiere Intervalle gemaß f1, . . . , fn aufsteigend;(2) A $ {1};(3) flast $ f1;(4) for i from 2 to n do(5) if si % flast then (& [si, fi) wahlbar &)(6) A $ A ' {i};(7) flast $ fi;(8) return A

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 10

Page 11: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Satz 3.1.1

Der Algorithmus Greedy Scheduling (GS) hat lineare Laufzeit (bis auf dieSortierkosten von O(n log n)) und lost das Horsaalplanungsproblemoptimal.

Beweis: Laufzeit: Sortieren kostet Zeit O(n log n); der restlicheAlgorithmus hat o!ensichtlich Laufzeit O(n).

Korrektheit: Wir behaupten: Algorithmus GS liefert auf Inputs mit Großen eine optimale Losung, und beweisen dies durch vollstandige Induktion.

Der Fall n = 1 ist trivial.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 11

Page 12: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Sei nun n > 1.

I.V.: GS liefert fur Inputs der Lange n" < n eine optimale Losung.

Ind.-Schritt: Sei B " {1, . . . , n} eine optimale Losung, |B | = r . (ImBeispiel: r = 5.)

1T0T

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 12

Page 13: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

1. Beobachtung:Es gibt eine Losung B ", die mit dem Intervall [s1, f1) (dem ersten Schrittdes Greedy-Algorithmus) startet und ebenfalls r Ereignisse hat. (Also istB " auch optimal.)

1T0T

Setze B " := (B ( {min(B)}) ' {1}.Intervalle aufsteigend sortiert ) f1 ! fmin(B).

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 13

Page 14: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

2. Beobachtung:

Die Menge B ( {min(B)} lost das Teilproblem

(!) [f1,T1), {[si, fi) | si " f1}

optimal, das heißt:in [f1,T1) konnen maximal r ( 1 Ereignisse untergebracht werden.

Wieso? Sonst wurden wir [s1, f1) mit einer besseren Losung fur (&) zu einerbesseren Losung fur das Gesamtproblem kombinieren: Widerspruch zurOptimalitat von B .

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 14

Page 15: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

3. Beobachtung:

Algorithmus GS auf Eingabe {[si , fi ) | 1 ! i ! n} hat ab Iteration i = 2genau dasselbe Verhalten wie wenn man GS auf [f1,T1),{[si , fi ) | si % f1} starten wurde.Nach I.V. liefert also dieser Teil des Algorithmus eine optimale Losung mitr ( 1 Ereignissen fur (&).Also liefert Greedy Scheduling insgesamt eine optimale Losung der Großer . !

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 15

Page 16: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Beispiel 2: Fraktionales (”teilbares“) Rucksackproblem

Veranschaulichung: Ein Dieb stiehlt Sackchen mit Edelmetallkrumeln, diebeliebig teilbar sind. Der Wert pro Volumeneinheit ist unterschiedlich furunterschiedliche Materialien. Was soll er in seinen Rucksack mit Volumen bpacken, um den Wert zu maximieren?

Gegeben: n Objekte mit positiven Volumina a1, . . . , an und positivenNutzenwerten c1, . . . , cn,sowie eine Volumenschranke b.

Gesucht: Vektor (!1, . . . ,!n) # [0, 1]n, so dass

!1a1 + . . .+ !nan ! b (”zulassig“)

und!1c1 + . . .+ !ncn maximal.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 16

Page 17: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Beim”0-1-Rucksackproblem“ werden nur 0-1-Vektoren mit !i # {0, 1}

zugelassen.

Mitteilung (im Vorgri! auf BuK, 5. Sem.): Die {0, 1}-Version ist NP-vollstandig,besitzt also wahrscheinlich keinen e"zienten Algorithmus.

Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in ZeitO(n log n) losbar.

Kern der Losungsidee: Berechne”Nutzendichte“

di = ci/ai , 1 ! i ! n,

und sortiere die Objekte gemaß di fallend.

Nehme von vorne beginnend moglichst viele ganze Objekte, bis schließlichdas letzte Objekt teilweise genommen wird, so dass die Gewichtsschrankevollstandig ausgenutzt wird.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 17

Page 18: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

ba

321 aaa n

c c

c

1 2 3

n

c

Input, sortiert nach Nutzendichte di = ci/ai .

Hohe von Kasten Nummer i ist di = ci/ai .

Breite ist ai.

Flache ist ci.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 18

Page 19: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Algorithmus Greedy Fractional Knapsack (GFKS)(1) for i from 1 to n do(2) di $ ci/ai;(3) !i $ 0;(4) Sortiere Objekte gemaß di fallend;(5) i $ 0;(6) r $ b; (* Inhalt r ist das verfugbare Rest-Volumen *)(7) while r > 0 do(8) i++;(9) if ai ! r

(10) then !i $ 1; r $ r( ai;(11) else !i $ r/ai;(12) r $ 0;

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 19

Page 20: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

ba

321 aaa n

c c

c

1 2 3

n

c

b321 aaaan

c c

c

1 2 3

n

c

Vom Greedy-Algorithmus gelieferte Losung.Gesamtnutzen: grun.Zulassige Losung, nicht optimal. Gesamtnutzen: blau.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 20

Page 21: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

b321 aaaan

c c

c

1 2 3

n

c

b2 aa na 3a 1

2 3

n

c c c

c

1

Anschaulich: Greedy-Losung nie schlechter als beliebige Losung.Gleich: Vollstandiger Beweis.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 21

Page 22: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Satz 3.1.2

Der Algorithmus GFKS ist korrekt (liefert eine zulassige Losung mitmaximalem Gesamtnutzen) und hat Laufzeit O(n log n).

Beweis: Sei x = (a1, . . . , an, c1, . . . , cn, b) die Eingabe.

O.B.d.A.:!

i ai > b (sonst ist (!1, . . . ,!n) = (1, . . . , 1) optimal und wirdvon GFKS gefunden).

Sei (!1, . . . ,!n) # [0, 1]n die Ausgabe des Algorithmus.

Laufzeit: klar.

Korrektheit: Zulassigkeit klar. Zu zeigen: Optimalitat.

Sei (!"1, . . . ,!

"n) # [0, 1]n eine optimale Losung.

O!ensichtlich:!

i !"iai = b (sonst verbesserbar).

Durch Induktion uber n zeigen wir:!

i !ici =!

i !"ici .

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 22

Page 23: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

I.A.: n = 1. Dann liefert der Algorithmus o!ensichtlich die optimaleLosung: Packe genau den Bruchteil !1 = b/a1, der in den Rucksack passt.

Ind.-Schritt: n > 1.

1. Fall: a1 % b.

GFKS wahlt !1 = b/a1, und das ist optimal: Weil d1 % di fur alle i , gilt:

!1c1 = bd1 = (!

i !"iai )d1 %

!i !

"iaidi =

!i !

"ici .

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 23

Page 24: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

(Ind.-Schritt:) 2. Fall: a1 < b.

Behauptung: Wir konnen o.B.d.A. !"1 = 1 annehmen.

(”Der erste Schritt des Greedy-Algorithmus ist nicht falsch.“)

Denn: Wenn !"1 < 1, kann man wegen

!1#i#n !

"iai = b

Werte !""1 = 1, 0 ! !""

2 ! !"2, . . . , 0 ! !""

n ! !"n finden, so dass

(1( !"1)a1 =

!2#i#n(!

"i ( !""

i )ai . (&)

(Verringere Gewicht bei”spateren“ Objekten zugunsten von Objekt 1.)

Dann ist (!""1, . . . ,!

""n) zulassig und

"

i

!""i ci =

"

i

!"ici +

#(1( !"

1)a1d1 ("

2#i#n

(!"i ( !""

i )aidi$.

Aus (&) und d1 % di folgt, dass die letzte Klammer nichtnegativ ist, also!i !

""i ci %

!i !

"ici gilt. (Sogar Gleichheit.)

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 24

Page 25: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

Wissen nun: 1 = !1 = !"1.

Wir wenden die Induktionsvoraussetzung auf den modifizierten Inputx$ = (a2, . . . , an, c2, . . . , cn, b ( a1) an.

GFKS lauft in Schleifendurchlaufen 2 bis n ebenso wie GFKS auf x$,liefert also fur x$ eine optimale Losung: (!2, . . . ,!n).

Klar: (!"2, . . . ,!

"n) muss fur x$ optimal sein.

(Wenn (!!!2 , . . . ,!

!!n ) besser ware, dann ware (1,!!!

2 , . . . ,!!!n ) eine bessere Losung

fur x als (1,!!2, . . . ,!

!n). Das kann nicht sein.)

Nach I.V. gilt!

2#i#n !ici =!

2#i#n !"ici .

Also haben auch die Losungen (1,!"2, . . . ,!

"n) und (1,!2, . . . ,!n) fur x

denselben Nutzenwert. !

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 25

Page 26: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit

An den Beispielen zu beobachtende Charakteristika der Greedy-Methode:

1 Der erste Schritt der Greedy-Losung ist nicht falsch. Es gibt eineoptimale Losung, die als Fortsetzung des ersten Schritteskonstruiert werden kann.

2”Prinzip der optimalen Substruktur“: Entfernt man aus einer

optimalen Losung die erste(n) Komponente(n), so bleibt als Rest dieoptimale Losung fur einen Teil oder Rest des Inputs.

3 Der Korrektheitsbeweis wird mit vollstandiger Induktion gefuhrt.

FG KTuEA, TU Ilmenau E!ziente Algorithmen – Sommersemester 2012 26