4 Greedy-Algorithmen (gierige Algorithmen) · 4 Greedy-Algorithmen (gierige Algorithmen) I...
Transcript of 4 Greedy-Algorithmen (gierige Algorithmen) · 4 Greedy-Algorithmen (gierige Algorithmen) I...
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
4 Greedy-Algorithmen (gierige Algorithmen)I Greedy-Algorithmen werden oft fur die exakte oder approximative
Losung von Optimierungsproblemen verwendet.
I Typischerweise konstruiert ein Greedy-Algorithmus eine LosungKomponente fur Komponente, wobei der Wert einer einmalgesetzten Komponente nie zuruckgenommen wird.
I Beispiele: die Algorithmus von Kruskal, die Konstruktion einesHuffman-Codes und der Approximationsalgorithmus fur dasBinpacking Problem Best-Fit.
24
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Philosophie von Greedy-Verfahren
I Iterative Konstruktion einer Losung unter Verwendung lokalerOptimalitatskriterien.
I Hoffnung: Lokale Optimalitat fuhrt auch zur globalen Optimalitat —oder zumindest zu einer guten Approximation.
I Verschiedene lokale Kriterien fuhren zu verschiedenen Algorithmen.
Analysemethoden fur Greedy-Verfahren
Um zu zeigen, dass ein Greedy-Verfahren eine optimale Losung findet,werden im wesentlichen zwei Analysemethoden eingesetzt:
1. the greedy algorithm stays ahead: In jedem Schritt ist die gefundenepartielle Losung des Greedy-Verfahrens mindestens so gut wie jedeandere partielle Losung.
2. exchange argument: Jede Losung kann Schrittweise in die Losungdes Greedy-Verfahrens transformiert werden, ohne dass hierbei dieGute der Losung abnimmt.
25
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
4.1 Minimale Spannbaume
I Gegeben ist ein ungerichteter, zusammenhangender, gewichteterGraph G = (V , E ) mit einer positiven Kostenfunktion f : E → R+.
I Wir nehmen an, dass fur alle Kanten e ∈ E f (e) > 0 ist.
I Wir nennen T = (V ′, E ′) einen Spannbaum von G , wenn V = V ′
und T ein Baum ist.
I Gesucht ist ein Baum T = (V , E ′) mit E ′ ⊆ E , so dass,∑
e∈E ′ f (e)minimal unter allen Spannbaumen von G ist.
I Ist f (e) konstant 1, so konnen wir dieses Problem wieder mit Hilfeder Breiten- oder Tiefensuche losen.
I Wir werden im Folgenden das Verfahren von Kruskal vorstellen.
26
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
I Zur effizienten Implementation benutzen wir die Datenstruktur derPriorityqueue und der Partition. Die letztere Datenstruktur ist auchunter dem Namen UNION/FIND-Datenstruktur bekannt.
I Wir starten mit |V | einelementigen Mengen, von denen jede einenanderen Knoten des Graphen enthalt.
I Diese Mengen werden als Baume mit jeweils einem Knoteninterpretiert.
I Sukzessive verschmelzen wir diese Mengen durch Hinzunahme einerKante mit minimalen Kosten: Finde die minimale Kante, die zweiKnoten aus unterschiedlichen Mengen verbindet und vereinige diebeiden Mengen.
27
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Was ist eine Priorityqueue?
I Wir betrachten eine Teilmenge M eines Universums U, wobei jedemElement m ∈ M eine Prioritat p(m) (oder kurz p) zugeordnet wird.
I insert(m, p): fugt m ∈ U mit Prioritat p in M ein.
I deletemin: gibt das Element aus M mit minimaler Prioritat zuruckund entfernt dieses aus M.
I readmin: gibt das Element aus M mit minimaler Prioritat zuruckohne es zu entfernen.
I decpriority(m, d): die Prioritat von m in M wird um d reduziert.
Eine Priorityqueue kann mit Hilfe eines Heaps (Heapsort) soimplementiert werden, dass die Laufzeiten der Initialisierung in O(|M|),von readmin in O(1) und der drei verbleibenden Operationen inO(log |M|) liegen.
28
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Was ist eine UNION/FIND-Datenstruktur bzw. eine Partition?
I Partitionen stellen eine eingeschrankte Form von Mengen dar.
I Der abstrakten Datentyp ist wie folgt definiert:I U = {1, . . . , n} sei ein Universum.I P = {P1, . . . , Pk} sei eine Menge von disjunkten, nicht leeren
Teilmengen von U mit U =Sn
i=1 Pi . Wir nennen diese TeilmengenPartitionsblocke oder kurz Blocke.
I Jedem Partitionsblock Pi wird ein Element ni ∈ Pi als Reprasentant(bzw. als Name) zugeordnet.
I Auf P sind die folgenden zwei Prozeduren definiert: Sei x ∈ U undni , nj Reprasentanten zweier Partitionsblocke Pi und Pj .
I find(x) liefert den Reprasentanten ni der Menge Pi mit x ∈ Pi .I union(ni , nj ) vereinigt die Blocke mit den Reprasentanten ni und nj .
Diese Operation verandert die Menge P, d.h.P = (P \ {Pi , Pj}) ∪ {Pi ∪ Pj}. Der Reprasentant der neuen Mengeist entweder ni oder nj .
29
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Die UNION/FIND-Datenstruktur kann recht einfach so implementiertwerden, dass
I die Initialisierung in Zeit O(|U|),
I jede union-Operation in konstanter Zeit und
I jede find-Operation in Zeit O(log2 |U|)ausgefuhrt werden kann. Einige aufwendigere Implementierungenerlauben es die Laufzeit der find-Operation erheblich zu reduzieren.
30
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Algorithmus MST-Kruskal()Eingabe: global gegebener Graph GErgebnis: minimaler Spannbaum T = (V , E ′)
1: Bilde die Priorityqueue Q aller e ∈ E mit Prioritaten f (e).2: Initialisiere die Partitionen {v} fur alle v ∈ V .3: E ′ := ∅, k = |V |4: while k > 1 do5: {v , w} := deletemin(Q); v0 := find(v); w0 := find(w);6: if v0 6= w0 then7: union(v0, w0); E ′ := E ′ ∪ {{v , w}}; k := k − 1;8: end if9: end while
10: Return(T = (V , E ′))
31
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Beispiel
9
3
26
4 16
5
7
1
13
2
3
4
6
1 5
0. Initialisierung
2
5
3
1
4
6
1. deletemin= {3, 6}find(3) 6= find(6)
1
1
6
5
42
3
2. deletemin= {1, 2}find(1) 6= find(2)
2
1
51
2 4
3
6
32
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
3. deletemin= {5, 1}find(5) 6= find(1)
2
1
351
2 4
3
6
4. deletemin= {5, 6}find(5) 6= find(6)
4
3
1
2
51
2 4
3
6
5. deletemin= {2, 6}find(2) = find(6)
4
3
1
2
51
2 4
3
6
6. deletemin= {1, 6}find(1) = find(6)
4
3
1
2
51
2 4
3
6
7. deletemin= {2, 3}find(2) = find(3)
4
3
1
2
51
2 4
3
6
8. deletemin= {3, 4}find(3) 6= find(4)
4
9
3
2
1
51
2 4
3
6
33
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Korrektheit
Lemma 1 Sei
I G = (V , E ) ein ungerichteter Graph,
I T = (V , ET ) ein minimaler Spannbaum fur G ,
I W = (V , EW ) ein Wald der in T enthalten ist, d.h. EW ⊆ ET und
I S ⊆ V eine Knotenmenge, so dass keine Kante aus EW zwischenden Mengen S und V \ S verlauft.
Wir nennen eine Kante aus E kreuzend, wenn sie einen Knoten aus Smit einem Knoten aus V \ S verbindet. Ist e ∈ E eine kreuzende Kante,die minimale Kosten unter allen kreuzenden Kanten besitzt, dann istauch W ′ := (V , EW ∪ {e}) in einem minimalen Spannbaum enthalten.
34
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Beweis von Lemma 1:
Angenommen, T enthalt W aber nicht W ′.
e
SV \ S
I Dann gilt e 6∈ ET .
I T ist ein Spannbaum, somit gibt es vonjedem Knoten in V einen Weg zu jedemanderen Knoten in V .
I Addieren wir e zu T , so schließen wireinen Kreis C .
I C besitzt neben e noch eine kreuzendeKante e′.
I Sei T ′ := (V , (ET ∪ {e}) \ {e′}).
I T ′ ist ein Spannbaum von G , da T ′ wieder zyklenfrei ist und |V | − 1Kanten hat.
I Da f (e) minimal unter allen kreuzenden Kanten ist, giltf (e) ≤ f (e′).
35
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Beweis von Lemma 1 (Teil 2)
I Ist f (e) < f (e′), so gilt∑
w∈E ′T
f (w) <∑
w∈ETf (w) fur
E ′T = (ET ∪ {e}) \ {e′}. Dieses widerspricht der Annahme, dass Tein minimaler Spannbaum ist. Wir konnen somit ausschließen, dassf (e) < f (e′) ist.
I Ist f (e) = f (e′), so haben T und T ′ die gleichen Kosten. Da T einminimaler Spannbaum ist, muss auch T ′ ein minimaler Spannbaumsein. Wir haben somit gezeigt, dass W ′ in einem minimalenSpannbaum enthalten ist. �
36
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Korrektheit vom Kruskals Algorithmus
I Der MST-Algorithmus nimmt immer eine minimale kreuzende Kantein den bereits konstruierten Wald W auf.
I Sei e = {u, v} = deletemin(Q).I Uber die Abfrage find(u) = find(v) wird uberpruft, ob u und v
bereits in einer Komponente von W liegen. Beachte: Mit jedereingefugten Kante {u′, v ′} vereinigen wir die entsprechendenMengen find(u′) und find(v ′). Somit reprasentiert jede Menge derPartition einen Baum des konstruierten Walds.
I Ist find(u) = find(v), so verwerfen wir die Kante.I Ist find(u) 6= find(v), so stellt S die Knotenmenge des Teilbaums dar,
in dem u liegt. Somit ist e eine minimale kreuzende Kante.
I Aus Lemma 1 konnen wir nun schließen, dass W ′ = (V , EW ∪ {e})in einem minimalen Spannbaum enthalten ist, wenn auchW = (V , EW ) in einem minimalen Spannbaum enthalten ist.
37
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Laufzeit von Kruskals Algorithmus
I Die Initialisierung der Priorityqueue gelingt in Zeit O(|E |).
I Die Initialisierung der Partitionen gelingt in Zeit O(|V |).
I Die While-Schleife muss im Worst-Case |E | mal durchlaufen werden.Bei jedem Durchlauf werden einmal die Operationen deletemin undzweimal die Operation find aufgerufen. Nach unseren Annahmenuber die Priorityqueue und der UNION/FIND-Datenstruktur konnenwir diese Operationen in Zeit O(|E | · log |E |) ausfuhren.
I In |V | − 1 Durchlaufen der While-Schleife wird jeweils einmal eineunion-Operation aufgerufen.
I Zusammen erhalten wir eine Laufzeit von O(|E | · log |E |).
38
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Satz 1 Sei G = (V , E ) ein zusammenhangender, ungerichteter,gewichteter Graph. Dann berechnet Kruskals Algorithmus einenminimalen Spannbaum fur G in Zeit
O(|E | · log |E |) .
Beobachtung 1 Betrachten wir die Aussage von Lemma 1 und denKorrektheitsbeweis von Kruskals Algorithmus, so erkennen wir, dass wirhierbei ein exchange argument angewendet haben.
39
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
4.2 Intervall-Scheduling
Definition 3 [Intervall-Scheduling Problem] Gegeben sei
I eine Menge R = {1, . . . , n} von n Jobs und
I zwei Funktionen s, f : R → N.
Hierbei gilt fur alle Jobs is(i) ≤ f (i)
I s(i) nennen wir die Startzeit von Job i und
I f (i) nennen wir die Endzeit von Job i .
Job i steht im Konflikt mit Job j , wenn
I i 6= j und
I die Intervalle [s(i), f (i)[ und [s(j), f (j)[ sich uberlappen.
Mit [s(i), f (i)[ bezeichnen wir das nach rechts offene reelle Intervall.
40
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Definition 3 (Teil 2)
I Eine Teilmenge S ⊆ R ist eine zulassige Schedule, wenn Skonfliktfrei ist, d.h. fur alle i , j ∈ S steht i nicht im Konflikt zu j .
I Eine Teilmenge S ⊆ R ist eine optimale Schedule, wenn S einezulassige Schedule maximaler Kardinalitat ist, d.h. |S | ist maximal.
Aufgabe: Bestimme eine optimale Schedule!
41
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Wir starten mit einem Grundgerust fur einen Greedy-Algorithmus fur dasIntervall-Scheduling Problem:
Algorithmus Greedy-Intervall-Schedule(R)Eingabe: Menge RErgebnis: optimale Schedule S
1: S := ∅2: while R 6= ∅ do3: wahle ein eine Job i ∈ R4: S := S ∪ {i};5: entferne alle Jobs aus R, die zu i im Konflikt stehen6: R := R \ {i}7: end while8: Return(S)
Unsere Aufgabe besteht jetzt darin, den Auswahlmechanismus in Zeile 3naher zu beschreiben.
42
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Wir starten mit einer einfachen Beobachtung:
Beobachtung 2 Fur alle Auswahlmechanismen ist das Ergebnis S einezulassige Schedule.
Diese Beobachtung folgt unmittelbar daraus, dass wir in Zeile 5 alle Jobsloschen, die zu einem einmal in die Schedule aufgenommenen Job imKonflikt stehen.
43
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
Einfache Auswahlmechanismen:
1. wahle i mit s(i) = minj∈R s(j)
2. wahle i mit f (i)− s(i) = minj∈R f (j)− s(j)
3. wahle das i , welches mit den wenigsten Jobs in R im Konflikt steht
4. wahle i mit f (i) = minj∈R f (j)
44
Andreas Jakoby
Universitat zu Lubeck
Algorithmik WS 07/08
2. Vorlesung, 31.10.2007
I Anhand der nachfolgenden Graphik konnen wir leicht erkennen, dassdie ersten drei Auswahlmechanismen auf Folie 44 keine optimaleSchedule liefern.
3.
2.
1.
I Behauptung Benutzen wir jedoch den vierten Mechanismus in Zeile3 von Algorithmus Greedy-Intervall-Schedule, so erhalten wir eineoptimale Schedule. Dieses muss aber noch bewiesen werden!
45