![Page 1: E ziente Algorithmen - Startseite TU Ilmenau · besitzt also wahrscheinlich keinen effizienten Algorithmus. Das fraktionale Rucksackproblem ist mit einem Greedy-Algorithmus in Zeit](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/1.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/2.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/3.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/4.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/5.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/6.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/7.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/8.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/9.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/10.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/11.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/12.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/13.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/14.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/15.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/16.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/17.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/18.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/19.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/20.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/21.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/22.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/23.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/24.jpg)
(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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/25.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022041411/5e190f95f9cb696cae220157/html5/thumbnails/26.jpg)
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