-
SS 2016 DuA - Kapitel 19 1
19. Gierige Algorithmen
Gierige Algorithmen sind eine Algorithmenmethode, um so genannte
Optimierungsprobleme zu lsen.
Bei einem Optimierungsproblem gibt es zu jeder Probleminstanz
viele mgliche oder zulssige Lsungen. Lsungen haben Werte gegeben
durch eine Zielfunktion. Gesucht ist dann eine mglichst gute
zulssige Lsung. Also eine Lsung mit mglichst kleinem oder mglichst
groem Wert (Minimierungs-bzw. Maximierungsproblem).
-
2
Gierige Strategie fr Optimierungsprobleme:
Aufbau einer Lsung in kleinen Schritten In jedem dieser Schritte
wird entsprechend eines definierten
Optimierungskriteriums eine irreversible Entscheidung
getroffen
Frage 1:Wann kann eine solche Strategie zu einer optimalen Lsung
fhren?
Frage 2:Wie beweist man, dass ein gieriger Algo. eine optimale
Lsung liefert?
2
Gierige (Greedy) Algorithmen
DuA - Kapitel 19SS 2016 2
-
SS 2016 DuA - Kapitel 19 3
Gierige Algorithmen Minimale Spannbume
Beispiel: Minimale Spannbume:
1. Probleminstanz gewichteter, ungerichteteter, zusammenhngender
Graph
2. Zulssige Lsungen Spannbume
3. Zielfunktion Gewicht eines Spannbaums
4. Gesucht Spannbaum minimalen Gewichts
-
SS 2016 DuA - Kapitel 19 4
Gierige Algorithmen Idee und Prim
1. Gierige Algorithmen bestimmen Lsung durch sukzessives
Er-weitern von bereits gefundenen Teillsungen.
2. Erweitern geschieht durch lokal optimale Wahlen.
3. Analyse muss dann zeigen, dass lokal optimale Wahlen zu
global optimalen Lsungen fhrt.
1. Algorithmus von Prim bestimmt minimalen Spannbaum durch
sukzessives Hinzufgen von Kanten.
2. Prims Algorithmus whlt mglichst leichte Kante, die isolierten
Knoten mit Teilbaum verbindet.
3. Analyse mit Hilfe von Schnitten zeigte, dass Teilbaum immer
in einem minimalen Spannbaum enthalten ist.
-
SS 2016 DuA - Kapitel 19 5
Gierige Algorithmen Idee und Kruskal
1. Gierige Algorithmen bestimmen Lsung durch sukzessives
Er-weitern von bereits gefundenen Teillsungen.
2. Erweitern geschieht durch lokal optimale Wahlen.
3. Analyse muss dann zeigen, dass lokal optimale Wahlen zu
global optimalen Lsungen fhrt.
1. Algorithmus von Kruskal bestimmt minimalen Spannbaum durch
sukzessives Hinzufgen von Kanten.
2. Kruskals Algorithmus whlt mglichst leichte Kante, die
Zusammenhangskomponen-ten verbindet.
3. Analyse mit Hilfe von Schnitten zeigte, dass Teilbaum immer
in einem minimalen Spannbaum enthalten ist.
-
SS 2016 DuA - Kapitel 19 6
Gieriges 1-Prozessor-Scheduling (1)
Gegeben sind n Jobs n1 j,,j mit Dauer n1 t,,t . Jeder der Jobs
muss auf einem einzigen Prozessor
abgearbeitet werden. Der Prozessor kann zu jedem Zeitpunkt nur
einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht
abgebrochen werden. Gesucht ist eine Reihenfolge, in der die Jobs
abgear-
beitet werden, so dass die durchschnittliche Bearbei- tungszeit
der Jobs mglichst gering ist.
Gegeben sind n Jobs
n
1
j
,
,
j
K
mit Dauer
n
1
t
,
,
t
K
.
Jeder der Jobs muss auf einem einzigen Prozessor abgearbeitet
werden. Der Prozessor kann zu jedem Zeitpunkt nur einen Job
bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen
werden.
Gesucht ist eine Reihenfolge, in der die Jobs abgear- beitet
werden, so dass die durchschnittliche Bearbei- tungszeit der Jobs
mglichst gering ist.
_1180798859.unknown
_1180798897.unknown
-
SS 2016 DuA - Kapitel 19 7
Gieriges 1-Prozessor-Scheduling (2)
Bearbeitungszeit eines Jobs ist der Zeitpunkt, an dem der Job
vollstndig bearbeitet wurde. Werden die Jobs in Reihenfolge ( ) (
)n1 j,,j ausgefhrt,
wobei eine Permutation ist, so ist die Bearbeitungs- zeit von
Job ( )1j genau ( )1t , die Bearbeitungszeit von Job ( )2j ist ( )
( )21 tt + , usw.
Bearbeitungszeit eines Jobs ist der Zeitpunkt, an dem der Job
vollstndig bearbeitet wurde.
Werden die Jobs in Reihenfolge
(
)
(
)
n
1
j
,
,
j
p
p
K
ausgefhrt, wobei
p
eine Permutation ist, so ist die Bearbeitungs- zeit von Job
(
)
1
j
p
genau
(
)
1
t
p
, die Bearbeitungszeit von Job
(
)
2
j
p
ist
(
)
(
)
2
1
t
t
p
p
+
, usw.
_1180799283.unknown
_1180799399.unknown
_1180799418.unknown
_1180799431.unknown
_1180799351.unknown
_1180799206.unknown
-
SS 2016 DuA - Kapitel 19 8
Gieriges 1-Prozessor-Scheduling - Beispiel
0 15 23 26 36
Schedule Nr. 1:
Durchschnittliche Beendigung: 25
Job Laufzeit 1j 15 2j 8 3j 3 4j 10
1j 2j 4j3j
0 3 11 21 36
Schedule Nr. 2:
Durchschnittliche Beendigung: 17,75
1j4j2j3j
Job
Laufzeit
1
j
15
2
j
8
3
j
3
4
j
10
_1180693989.unknown
_1180693996.unknown
_1180694004.unknown
_1180693965.unknown
-
SS 2016 DuA - Kapitel 19 9
Gieriges 1-Prozessor-Scheduling (3)
Lemma 19.1: Bei Permutation ist die durchschnittliche
Bearbeitungszeit gegeben durch Lemma 19.2: Eine Permutation fhrt
genau dann zu einer minimalen durchschnittlichen Bearbeitungszeit,
wenn die Folge ( ) ( )( )n1 t,,t aufsteigend sortiert ist.
( ) ( )in
1it 1in
n1
= +
Lemma 19.1: Bei Permutation
(
)
(
)
i
n
1
i
t
1
i
n
n
1
p
=
+
-
ist die durchschnittliche Bearbeitungszeit gegeben durch
p
Lemma 19.2: Eine Permutation
p
fhrt genau dann zu einer minimalen durchschnittlichen
Bearbeitungszeit,
wenn die Folge
(
)
(
)
(
)
n
1
t
,
,
t
p
p
K
aufsteigend sortiert ist.
EMBED Equation.3
(
)
(
)
i
n
1
i
t
1
i
n
n
1
p
=
+
-
_1180799753.unknown
_1180852040.unknown
_1180799536.unknown
-
SS 2016 DuA - Kapitel 19 10
Gieriges Mehr-Prozessor-Scheduling
Gegeben sind n Jobs n1 j,,j mit Dauer n1 t,,t und m identische
Prozessoren. Jeder der Jobs muss auf einem einzigen Prozessor
abgearbeitet werden. Jeder Prozessor kann zu jedem Zeitpunkt nur
einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht
abgebrochen werden. Gesucht ist eine Aufteilung der Jobs auf
die
Prozessoren und fr jeden Prozessor eine Reihenfolge der ihm
zugewiesenen Jobs, so dass durchschnittliche Bearbeitungszeit der
Jobs mglichst gering ist. Bearbeitungszeit eines Jobs wie vorher
definiert.
Gegeben sind n Jobs
n
1
j
,
,
j
K
mit Dauer
n
1
t
,
,
t
K
und m identische Prozessoren.
Jeder der Jobs muss auf einem einzigen Prozessor abgearbeitet
werden. Jeder Prozessor kann zu jedem Zeitpunkt nur einen Job
bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen
werden.
Gesucht ist eine Aufteilung der Jobs auf die Prozessoren und fr
jeden Prozessor eine Reihenfolge der ihm zugewiesenen Jobs, so dass
durchschnittliche Bearbeitungszeit der Jobs mglichst gering
ist.
Bearbeitungszeit eines Jobs wie vorher definiert.
_1180798859.unknown
_1180798897.unknown
-
SS 2016 DuA - Kapitel 19 11
Gieriges Mehr-Prozessor-Scheduling (2)
Lemma 19.3: Die Permutation sei so gewhlt, dass die Folge
(t(1),,t(n)) aufsteigend sortiert ist. Weiter werde dann Job j(i)
auf dem Prozessor mitNummer i mod m ausgefhrt (wobei wir fr alle i
mit i mod m = 0 Prozessorm verwenden). Das so konstruierte
Scheduling minimiert dann die durchschnittliche
Bearbeitungszeit.
Beweisidee:1. Hat Prozessor i mehr als einen Job mehr als
Prozessor j, verbessert sich
die durchschnittliche Bearbeitungszeit, wenn ein Job von i nach
jverschoben wird.
2. Der Tausch zweier Jobs an derselben Ausfhrungsposition in
zweiProzessoren mit derselben Anzahl an Jobs verndert nicht die
durchschnittliche Bearbeitungszeit.
3. Die durchschnittliche Bearbeitungszeit innerhalb eins
Prozessors istminimal, wenn die Jobs nach aufsteigender
Bearbeitungszeit ausgefhrtwerden.
-
SS 2016 DuA - Kapitel 19 12
Gieriges Mehr-Prozessor-Scheduling - Beispiel
0
Schedule Nr. 1 (Methode aus Lemma 19.3):
Durchschnittliche Beendigung: 18,33
40
Job Laufzeit
1j 3 2j 5 3j 6 4j 10 5j 11 6j 14 7j 15 8j 18 9j 20
1j 4j 7j
2j 5j 8j
9j6j3j
0
Schedule Nr. 2:
Durchschnittliche Beendigung: 18,33
38
1j 5j 9j
2j 4j 7j
8j6j3j
Job
Laufzeit
1
j
3
2
j
5
3
j
6
4
j
10
5
j
11
6
j
14
7
j
15
8
j
18
9
j
20
_1180694442.unknown
_1180694465.unknown
_1180694504.unknown
_1180694519.unknown
_1180694478.unknown
_1180694453.unknown
_1180694423.unknown
_1180694431.unknown
_1180694404.unknown
-
SS 2016 DuA - Kapitel 19 13
Gierig ist nicht immer optimal
Job Laufzeit
1j 3 2j 5 3j 6 4j 10 5j 11 6j 14 7j 15 8j 18 9j 20
Betrachten dasselbe Szenario wie vorher mit Jobs und
Prozessoren.
Wollen aber jetzt den Zeitpunkt minimieren, an dem alle Jobs
beendet sind.
Optimaler Schedule:
0 34
Greedy Scheduling (vorige Folie): 40
1j
2j3j 4j 7j
5j 8j
9j6j
Job
Laufzeit
1
j
3
2
j
5
3
j
6
4
j
10
5
j
11
6
j
14
7
j
15
8
j
18
9
j
20
_1180694442.unknown
_1180694465.unknown
_1180694504.unknown
_1180694519.unknown
_1180694478.unknown
_1180694453.unknown
_1180694423.unknown
_1180694431.unknown
_1180694404.unknown
-
SS 2016 DuA - Kapitel 19 14
Gierig ist nicht immer optimal
Geht es schlimmer? Ja!Beispiel: m Prozessoren, m(m-1) Jobs der
Lnge 1,
ein Job der Lnge mGreedy Schedule fr m=10:
m=10
199
-
SS 2016 DuA - Kapitel 19 15
Gierig ist nicht immer optimal
m=10
10
Greedy Schedule: 2m-1 ZeiteinheitenOptimaler Schedule: m
ZeiteinheitenGreedy kann also Faktor 2-1/m schlechter als OPT sein.
Das ist aber fr alle Instanzen auch der worst case.
-
SS 2016 DuA - Kapitel 19 16
Gierig ist nicht immer optimal
Greedy Schedule ber absteigend sortierte Jobzeiten:Kann sogar
nie schlechter als 4/3OPT sein.Beweis ist sehr aufwndig.
4/3-Resultat ist bestmglich.Beispiel: m Maschinen, n=2m+1 Jobs:
jeweils 2 Jobs der Lnge m+1,m+2,,2m und ein Job der Lnge mVergleich
zu OPT: bung.
-
Anwendungsbeispiel: Intervall Scheduling
SS 2016 DuA - Kapitel 19 17
-
18
Intervall Scheduling: eine Ressource (Hrsaal, Parallelrechner,
...) Menge von Anfragen der Art:
Kann ich die Ressource fr den Zeitraum [ t ,t ] nutzen?
Optimierungs-Ziel: Mglichst viele Anfragen erfllen
1 2
18
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19SS 2016 18
-
19
Intervall Scheduling: eine Ressource (Hrsaal, Parallelrechner,
...) Menge von Anfragen der Art:
Kann ich die Ressource fr den Zeitraum [ t ,t ] nutzen?
Optimierungs-Ziel: Mglichst viele Anfragen erfllen
1 2
19
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19SS 2016 19
-
20
Definition: Zwei Anfragen heien kompatibel, wenn sich die
Intervalle nicht berschneiden.
20
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 20SS 2016
-
21
Definition: Zwei Anfragen heien kompatibel, wenn sich die
Intervalle nicht berschneiden.
21
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 21SS 2016
-
22
Definition: Zwei Anfragen heien kompatibel, wenn sich die
Intervalle nicht berschneiden.
22
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 22SS 2016
-
23
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
23
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 23SS 2016
-
24
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
24
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 24SS 2016
-
25
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
25
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 25SS 2016
-
26
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
26
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 26SS 2016
-
27
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
27
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 27SS 2016
-
28
Generelle berlegung: Whle erste Anfrage i geschickt Ist i
akzeptiert, weise alle Anfragen zurck, die nicht
kompatibel sind Whle nchste Anfrage i und weise alle
Anfragen
zurck, die nicht mit i kompatibel sind Mache weiter, bis keine
Anfragen mehr brig sind
1
1
2
2
28
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 28SS 2016
-
2929
Gierige Algorithmen Intervall Scheduling
Was ist nun aber eine geschickte Auswahlstrategie ?
DuA - Kapitel 19 29SS 2016
-
30
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
30
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 30SS 2016
-
31
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
31
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 31SS 2016
-
32
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
32
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 32SS 2016
-
33
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
33
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 33SS 2016
-
34
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
34
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 34SS 2016
-
35
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
Optimalitt ?
35
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 35SS 2016
-
36
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
Optimalitt ?
36
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 36SS 2016
-
37
Strategie 1: Whle immer die Anfrage, die am frhesten beginnt
Optimalitt ? Nicht optimal, da eine optimale Lsung 4
Anfragen
erfllen kann
37
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 37SS 2016
-
38
Strategie 2: Whle immer das krzeste Intervall
38
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 38SS 2016
-
39
Strategie 2: Whle immer das krzeste Intervall
39
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 39SS 2016
-
40
Strategie 2: Whle immer das krzeste Intervall
40
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 40SS 2016
-
41
Strategie 2: Whle immer das krzeste Intervall
41
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 41SS 2016
-
42
Strategie 2: Whle immer das krzeste Intervall
42
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 42SS 2016
-
43
Strategie 2: Whle immer das krzeste Intervall
43
Gierige Algorithmen Intervall Scheduling
43SS 2016 DuA - Kapitel 19
-
44
Strategie 2: Whle immer das krzeste Intervall
44
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 44SS 2016
-
45
Strategie 2: Whle immer das krzeste Intervall
Optimalitt?
45
Gierige Algorithmen Intervall Scheduling
45SS 2016 DuA - Kapitel 19
-
46
Strategie 2: Whle immer das krzeste Intervall
Optimalitt?
Ebenfalls nicht optimal, da man 2 Anfragen erfllen kann!
46
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 46SS 2016
-
47
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
47
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 47SS 2016
-
48
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
48
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 48SS 2016
-
49
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
49
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 49SS 2016
-
50
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
50
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 50SS 2016
-
51
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
51
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 51SS 2016
-
52
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
52
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 52SS 2016
-
53
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
53
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 53SS 2016
-
54
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
54
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 54SS 2016
-
55
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
55
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 55
-
56
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
56
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 56
-
57
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
57
Gierige Algorithmen Intervall Scheduling
SS 2016 57DuA - Kapitel 19
-
58
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
58
Gierige Algorithmen Intervall Scheduling
SS 2016 58DuA - Kapitel 19
-
59
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
59
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 59
-
60
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
60
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 60
-
61
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
61
Gierige Algorithmen Intervall Scheduling
SS 2016 61DuA - Kapitel 19
-
62
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
62
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 62
-
63
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
63
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 63
-
64
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?
64
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 64
-
65
Strategie 3: Whle immer das Intervall mit den wenigsten
nicht
kompatiblen Intervallen bei Gleichheit whle das krzeste
Intervall
Optimalitt?Wieder nicht
optimal!
65
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 65
-
66
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
66
Gierige Algorithmen Intervall Scheduling
DuA - Kapitel 19 66SS 2016
-
67
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
67
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 67
-
68
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
68
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 68
-
69
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
69
Gierige Algorithmen Intervall Scheduling
SS 2016 69DuA - Kapitel 19
-
70
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
70
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 70
-
71
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
71
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 71
-
72
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
72
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 72
-
73
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
73
Gierige Algorithmen Intervall Scheduling
SS 2016 73DuA - Kapitel 19
-
74
Worauf muss man achten? Ressource muss mglichst frh wieder frei
werden!
Neue Strategie: Nimm die Anfrage, die am frhesten fertig
ist.
Diese Strategie ist optimal! Aber wie beweist man das?
74
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 74
-
75
Formale Problemformulierung: Problem: Intervall Scheduling
Eingabe: Felder s und f, die die Intervalle [ s[i], f[i] ]
beschreiben Ausgabe: Indizes der ausgewhlten Intervalle
o.B.d.A. nehmen wir an: Eingabe ist nach Intervallendpunkten
sortiert,
d.h.: f[1] f[2] f[n]
75
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 75
-
76
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i7. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
76
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 76
-
77
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
77
Gierige Algorithmen Intervall Scheduling
SS 2016 77DuA - Kapitel 19
-
78
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
78
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 78
-
79
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
79
Gierige Algorithmen Intervall Scheduling
SS 2016 79DuA - Kapitel 19
-
80
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
i
80
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 80
-
81
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
i
f[j]
s[i]
81
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 81
-
82
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
i
f[j]
s[i]
82
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 82
-
83
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j i
f[j]
83
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 83
-
84
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j i
f[j]
s[i]
84
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 84
-
85
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j i
f[j]
s[i]
85
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 85
-
86
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
86
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 86
-
87
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
i
87
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 87
-
88
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
f[j]
i
s[i]
88
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 88
-
89
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5j
f[j]
i
s[i]
89
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 89
-
90
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
90
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 90
-
91
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
91
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 91
-
92
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
i
92
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 92
-
93
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
i
f[j]
s[i]
93
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 93
-
94
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
i
94
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 94
-
95
IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to
n do5. if s[i] f[j] then6. A A {i}7. j i8. return A
s 1 2 4 7 5f 3 5 6 8 9
1
2
3
4
5
j
i
95
Gierige Algorithmen Intervall Scheduling
SS 2016 95DuA - Kapitel 19
-
96
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen Knnen wir A = O zeigen ?
96
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 96
-
97
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen Knnen wir A = O zeigen ?
97
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 97
-
98
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
98
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 98
-
99
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
99
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 99
-
100
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
100
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 100
-
101
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
101
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 101
-
102
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
102
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 102
-
103
Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von
Intervallen u. U. viele optimale Lsungen
Wir zeigen: |A| = |O|
103
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 103
-
104
Beobachtung:A ist eine Menge von kompatiblen Anfragen, d.h. die
Menge A bildet eine zulssige bzw. gltige Lsung.
104
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 104
-
105
Notation: i , , i Intervalle von A in Ordnung des Hinzufgens j
,, j Intervalle von O sortiert nach Endpunkt
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
1
1
k
m
105
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 105
-
106
Wir zeigen: Der gierige Algorithmus liegt vorn: D.h. jedes
Intervall in A gibt die Ressource mindestens so
frh wieder frei, wie das korrespondierende Intervall in O Dies
ist wahr fr das erste Intervallpaar, da i1j1 und damit
f[i1] f[j1]. Zu zeigen: Dies gilt fr alle anderen Intervallpaare
!
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
106
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 106
-
107
Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
107
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 107
-
108
Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
f[i ], f[j ]1 1
108
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 108
-
109
Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
f[i ]
2
2
f[j ]
109
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 109
-
110
Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
f[i ]3 3f[j ]
110
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 110
-
111
Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
f[i ]4
4f[j ]
111
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 111
-
112
Satz 19.5:Die von Algorithmus IntervalScheduling berechnete
Lsung
A ist optimal.
i i i
ij
j
j
j
1
1
2
2
3
3 4
4
112
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 112
-
113
IntervalScheduling(s,f)1. n length[s] 2. A {1} 3. j 1 4. for i 2
to n do5. if s[i] f[j] then6. A A {i}7. j i8. return A
113
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 113
-
114
IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for
i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
114
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 114
-
115
IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for
i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A
(n)
115
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 115
-
116
IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for
i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A (1)
(n)
116
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 116
-
117
IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for
i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A (1)
(n)
(n)117
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 117
-
118
Satz 19.6:Algorithmus IntervalScheduling berechnet in (n) Zeit
eine
optimale Lsung, wenn die Eingabe nach Endzeit der Intervalle
(rechter Endpunkt) sortiert ist. Die Sortierung kann in (n log n)
Zeit berechnet werden.
118
Gierige Algorithmen Intervall Scheduling
SS 2016 DuA - Kapitel 19 118
-
Anwendungsbeispiel: Datenkompression
SS 2016 DuA - Kapitel 19 119
-
Datenkompression Reduziert Gren von Files Viele Verfahren fr
unterschiedliche Anwendungen:
MP3, MPEG, JPEG, Wie funktioniert Datenkompression?
Zwei Typen von Kompression: Verlustbehaftete Kompression
(Bilder, Musik, Filme,) Verlustfreie Kompression (Programme, Texte,
)
120SS 2016 120
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 120
-
Datenkompression Reduziert Gren von Files Viele Verfahren fr
unterschiedliche Anwendungen:
MP3, MPEG, JPEG, Wie funktioniert Datenkompression?
Zwei Typen von Kompression: Verlustbehaftete Kompression
(Bilder, Musik, Filme,) Verlustfreie Kompression (Programme, Texte,
)
121SS 2016 121
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 121
-
Kodierung: Computer arbeiten auf Bits (Symbole 0 und 1),
nutzen
also das Alphabet {0,1} Menschen nutzen umfangreichere
Alphabete
(z.B. Alphabete von Sprachen) Darstellung auf Rechner erfordert
Umwandlung in
Bitfolgen
122SS 2016 122
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 122
-
Beispiel: Alphabet ={a,b,c,d,,x,y,z, ,.,:,!,?,&} (32
Zeichen) 5 Bits pro Symbol: 2 = 32 Mglichkeiten
a b z . : ! ? &00000 00001 11001 11010 11011 11100 11101
11110 11111
5
123SS 2016 123
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 123
-
Beispiel: Alphabet ={a,b,c,d,,x,y,z, ,.,:,!,?,&} (32
Zeichen) 5 Bits pro Symbol: 2 = 32 Mglichkeiten
Fragen? Sind 4 Bits pro Symbol nicht genug ? Mssen wir im
Durchschnitt 5 Bits fr jedes Vorkommen
eines Symbols in langen Texten verwenden?
a b z . : ! ? &00000 00001 11001 11010 11011 11100 11101
11110 11111
5
124SS 2016 124
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 124
-
Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B.
kommen x,y und z in der deutschen Sprache viel
seltener vor als e, n oder r
125SS 2016 125
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 125
-
Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B.
kommen x,y und z in der deutschen Sprache viel
seltener vor als e, n oder rIdee: Benutze kurze Bitstrings fr
Symbole die hufig
vorkommen
126SS 2016 126
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 126
-
Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B.
kommen x,y und z in der deutschen Sprache viel
seltener vor als e, n oder rIdee: Benutze kurze Bitstrings fr
Symbole die hufig
vorkommen Effekt: Gesamtlnge der Kodierung einer Symbolfolge
(eines
Textes) wird reduziert
127SS 2016 127
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 127
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90000 0001 0010 0011 0100 0101 0110 0111 1000
1001
128SS 2016 128
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 128
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90000 0001 0010 0011 0100 0101 0110 0111 1000
1001
Lnge der Kodierung:4 17 = 68 Bits
129SS 2016 129
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 129
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101
11110 11111
130SS 2016 130
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 130
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101
11110 11111
Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits
131SS 2016 131
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 131
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101
11110 11111
Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits
132SS 2016 132
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 132
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101
11110 11111
Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits
133SS 2016 133
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 133
-
Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht:
Eine binre Kodierung von , so dass die Lnge
des Textes in dieser Kodierung minimiert wirdBeispiel:
={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)
0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101
11110 11111
Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits
134SS 2016 134
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 134
-
MorseCode: Elektrische Pulse ber Kabel Punkte (kurze Pulse)
Striche(Lange Pulse)
Beispiele aus dem MorseCode: e ist 0 (ein einzelner Punkt) t ist
1 (ein einzelner Strich) a ist 01 (Punkt Strich)
Problem: Ist 0101 eta, aa, etet, oder aet ?
135SS 2016 135135135
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 135
-
Problem Mehrdeutigkeit: Ist die Kodierung eines Buchstabens ein
Prfix der
Kodierung eines anderen Buchstabens, dann kann es passieren,
dass die Kodierung nicht eindeutig ist.
Beispiel: e = 0, a = 01 0 ist Prfix von 01
SS 2016
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 136
-
Prfix-Kodierung:Eine Prfix-Kodierung fr ein Alphabet ist eine
Funktion ,die jeden Buchstaben x auf eine endliche Sequenz von 0und
1 abbildet, so dass fr x,y, xy, die Sequenz (x) kein Prfix der
Sequenz (y) ist.
137SS 2016 137
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 137
-
Prfix-Kodierung:Eine Prfix-Kodierung fr ein Alphabet ist eine
Funktion ,die jeden Buchstaben x auf eine endliche Sequenz von 0und
1 abbildet, so dass fr x,y, xy, die Sequenz (x) kein Prfix der
Sequenz (y) ist.
Beispiel (Prfix-Kodierung):x 0 1 2 3 4 5 6 7 8 9
(x) 00 0100 0110 0111 1001 1010 1011 1101 1110 1111
138SS 2016 138
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 138
-
Definition (Frequenz) Die Frequenz f[x] eines Buchstaben x
bezeichnet den
Bruchteil der Buchstaben im Text, die x sind.Beispiel: = {0,1,2}
Text =0010022001 (10 Zeichen) f[0] = 3/5 f[1] = 1/5 f[2] = 1/5
139SS 2016 139
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 139
-
Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n
Zeichen bzgl.einer Kodierung ist definert als
Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b)
=101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16
x
140SS 2016 140
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 140
-
Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n
Zeichen bzgl.einer Kodierung ist definiert als
Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b)
=101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16
x
Anzahl der Vorkommen von x im Text
141SS 2016 141
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 141
-
Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n
Zeichen bzgl.einer Kodierung ist definiert als
Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b)
=101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16
x
Lnge der Codierung von x
142SS 2016 142
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 142
-
Definition (durchschn. Kodierungslnge)Die durchschnittliche
Kodierungslnge eines Buchstabensin einem Text mit n Zeichen und
bzgl. einer Kodierung ist
definiert als ABL() = f[x]|(x)|
Beispiel: = {a,b,c,d} (a) = 0; (b) =101; (c)= 110; (d)=111 Text
= aacdaabb Durchschnittliche Kodierungslnge = 16/8 = 2
x
143SS 2016 143
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 143
-
Problem einer optimalen Prfix-Kodierung:
Eingabe: Alphabet und fr jedes x seine Frequenz f[x]
Ausgabe: Eine Kodierung , die ABL() minimiert
SS 2016
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 144
-
Binrbume und Prfix-Kodierungen:
b
a
cd
145SS 2016 145
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 145
-
Binrbume und Prfix-Kodierungen:
b
a
cd
0
0
0
1
1
1
146SS 2016 146
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 146
-
b
a
cd
0
0
0
1
1 x (x)
a 00
b 1
c 011
d 010
Binrbume und Prfix-Kodierungen:
1
147SS 2016 147
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 147
-
Prfix-Kodierungen und Binrbume:
x (x)
a 11
b 01
c 00
d 10
148SS 2016 148
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 148
-
Prfix-Kodierungen und Binrbume:
x (x)
a 11
b 01
c 00
d 10c b d a
0
0 0
1
1 1
149SS 2016 149
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 149
-
Definition:Die Tiefe eines Baumknotens ist die Lnge seines
Pfadeszur Wurzel.
b
a
cd
0
0
0
1
1
1
Tiefe(c) = 3
150SS 2016 150
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 150
-
Neue Problemformulierung: Suche Binrbaum T, dessen Bltter die
Symbole aus
sind und der ABL(T) = f[x] TiefeT(x)
minimiert.x
SS 2016
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 151
-
Definition:Ein Binrbaum heit voll, wenn jeder innere Knoten
genauzwei Kinder hat.
b
a
cd
0
0
0
1
1
1
Ein voller Binrbaum
152SS 2016 152
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 152
-
Definition:Ein Binrbaum heit voll, wenn jeder innere Knoten
genauzwei Kinder hat.
b
a
d
0
0
01
1
Ein nicht voller Binrbaum,da der rote innere Knoten keine zwei
Kinder hat
153SS 2016 153
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 153
-
Lemma 19.7:Der Binrbaum, der einer optimalen Prfix-Kodierung
entspricht, ist voll.
b
ad
0
0
1
1
1
154SS 2016 154
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 154
-
Lemma 19.7:Der Binrbaum, der einer optimalen
Prfix-Kodierungentspricht, ist voll.
b
v
a
u
d
0
0
1
1
1
Beweis: Annahme: T ist optimal und
hat inneren Knoten u mit einem Kind v
Ersetze u durch v Dies verkrzt die Tiefe einiger
Knoten, erhht aber keine Tiefe Damit verbessert man die
Kodierung
155SS 2016 155
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 155
-
Lemma 19.7:Der Binrbaum, der einer optimalen
Prfix-Kodierungentspricht, ist voll.
b
a
v
d
0
0
1
1
Beweis: Annahme: T ist optimal und
hat inneren Knoten u mit einem Kind v
Ersetze u durch v Dies verkrzt die Tiefe einiger
Knoten, erhht aber keine Tiefe Damit verbessert man die
Kodierung
156SS 2016 156
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 156
-
Ein Gedankenexperiment: Angenommen, jemand gibt uns den
optimalen Baum T*,
aber nicht die Bezeichnung der Bltter Wie schwierig ist es, die
Bezeichnungen zu finden?
SS 2016
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 157
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)
-
BeobachtungSei v der tiefste Blattknoten in T*. Dann hat v einen
Bruder
und dieser ist ebenfalls ein Blattknoten.
d
c
ba
0
0
0
1
1
1
vw(Bruder von v)
SS 2016 165
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 165
-
BeobachtungSei v der tiefste Blattknoten in T*. Dann hat v einen
Bruder
und dieser ist ebenfalls ein Blattknoten.
d
c
ba
0
0
0
1
1
1
vw(Bruder von v)
Beweis: Da ein optimaler Baum
voll ist, hat v einen Bruder w
Wre w kein Blatt, dannhtte ein Nachfolger vonw grere Tiefe als
v
SS 2016 166
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 166
-
Zusammenfassende Behauptung Es gibt eine optimale
Prfix-Kodierung mit zugehrigem Baum T*,
so dass die beiden Blattknoten, denen die Symbole mit
denkleinsten Frequenzen zugewiesen wurden, Bruderknoten in T*
sind.
167SS 2016 167
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 167
-
Zusammenfassende Behauptung Es gibt eine optimale
Prfix-Kodierung mit zugehrigem Baum T*, so
dass die beiden Blattknoten, denen die Symbole mit den kleinsten
Frequenzen zugewiesen wurden, Bruderknoten in T* sind.
d
c
ba
0
0
0
1
1
1
x f[x]a 10%b 12%c 18%d 60%
168SS 2016 168
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 168
-
Zusammenfassende Behauptung Es gibt eine optimale
Prfix-Kodierung mit zugehrigem Baum T*, so
dass die beiden Blattknoten, denen die Symbole mit den kleinsten
Frequenzen zugewiesen wurden, Bruderknoten in T* sind.
d
c
ba
0
0
0
1
1
1
x f[x]a 10%b 12%c 18%d 60%
a und b erfllen die Bedingungen der Behauptung!
169SS 2016 169
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 169
-
Idee des Algorithmus: Die beiden Symbole y* und z* mit den
niedrigsten
Frequenzen sind Bruderknoten Fasse y* und z* zu einem neuen
Symbol zusammen Lse das Problem fr die brigen n-1 Symbole
(z.B. rekursiv)
z*y*
170SS 2016 170
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 170
-
Idee des Algorithmus: Die beiden Symbole y* und z* mit den
niedrigsten
Frequenzen sind Bruderknoten Fasse y* und z* zu einem neuen
Symbol zusammen Lse das Problem fr die brigen n-1 Symbole
(z.B. rekursiv)
y*z*
171SS 2016 171
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 171
-
x f[x]
a 23%
b 12%
c 55%
d 10%
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
172SS 2016 172
Gierige Algorithmen Datenkompression
DuA - Kapitel 19 172
-
x f[x]
a 23%
b 12%
c 55%
d 10%
173SS 2016 173
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 173
-
x f[x]
a 23%
b 12%
c 55%
d 10%
Q: 10% 12% 23% 55%
174SS 2016 174
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 174
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=1
Q: 10% 12% 23% 55%
175SS 2016 175
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 175
-
x f[x]
a 23%
b 12%
c 55%
d 10%
10%
i=1
x:
Q: 12% 23% 55%
176SS 2016 176
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 176
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=1
x:
y:
Q: 23% 55%
10%
12%
177SS 2016 177
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 177
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=1
z:
Q: 23% 55%
10% 12%
22%
178SS 2016 178
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 178
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=1
z:
Q: 23% 55%
10% 12%
22%
179SS 2016 179
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 179
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=1
Q: 23% 55%
10% 12%
22%
180SS 2016 180
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 180
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q: 23% 55%
10% 12%
22%
181SS 2016 181
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 181
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q: 23% 55%
10% 12%
22%x:
182SS 2016 182
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 182
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q:
23%
55%
10% 12%
22%x: y:
183SS 2016 183
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 183
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q:
23%
55%
10% 12%
22%
z: 45%
184SS 2016 184
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 184
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q:
23%
55%
10% 12%
22%
z: 45%
185SS 2016 185
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 185
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=2
Q: 55%
23%
10% 12%
22%
45%
186SS 2016 186
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 186
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q: 55%
23%
10% 12%
22%
45%
187SS 2016 187
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 187
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45%55%x:
188SS 2016 188
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 188
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45% 55%x: y:
189SS 2016 189
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 189
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45% 55%z:
100%
190SS 2016 190
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 190
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45% 55%z:
100%
191SS 2016 191
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 191
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45% 55%
100%
192SS 2016 192
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 192
-
x f[x]
a 23%
b 12%
c 55%
d 10%i=3
Q:
23%
10% 12%
22%
45% 55%
100%
193SS 2016 193
Gierige Algorithmen Datenkompression
Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1
to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x,
f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)
DuA - Kapitel 19 193
-
Satz 19.9Algorithmus Huffman() berechnet eine optimale
Prfix-Kodierung.Beweis: Durch Induktion ber Anzahl Symbole in .
||=2: Algo Huffman() offensichtlich optimal nn+1: seien x und y die
Symbole mit kleinsten Frequenzen in .
Verschmelze x und y zu einem Symbol z mit f[z]=f[x]+f[y] und sei
= (\{x,y}){z}.
Betrachte einen optimalen Baum T fr und ersetze den Knoten z mit
einem Knoten mit Kindern x und y. Der resultierende Baum T hat die
Kosten
ABL(T) = x f[x] TiefeT(x) = ABL(T) + f[x]+f[y]. Angenommen, T
sei nicht optimal fr S, aber ein Baum T ist es. Nach
Lemma 19.8 sind (o.B.d.A.) x und y Bruderknoten in T. Deren
Verschmelzung zu einem Knoten mit Symbol z ergibt dann einen Baum T
fr mit
ABL(T) = ABL(T)-f[x]-f[y] < ABL(T)-f[x]-f[y] = ABL(T) Wir
wissen: Algo Huffman() konstruiert optimalen Baum fr . Dann
konstruiert Huffman() auch optimalen Baum fr .
SS 2016DuA - Kapitel 19 194
Gierige Algorithmen Datenkompression
Widerspruch!
-
Kann man an einem Problem erkennen, ob ein Greedy Algorithmus
eine optimale
Ausgabe liefert?
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 195
-
Definition 19.10: Sei M eine endlichen Menge und T eine
nichtleere Menge von Teilmengen von M.
Das Mengensystem (M,T ) heit Teilmengensystem fr alle A,BM
gilt:
AT und BA BTD.h. die Teilmengen in T sind bezglich
abgeschlossen.
Das zu (M,T ) gehrige Optimierungsproblem besteht darin, fr eine
beliebige gegebene Gewichtsfunktion w:M eine in T maximale Menge T
zu finden, deren Gesamtgewicht
w(T):=eT w(e)
maximal (bzw. minimal) ist.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 196
-
Beispiele fr ein Teilmengensystem: T = { } { {x} | xM} T = P(M)
(P(M): Potenzmenge von M)
Kein Teilmengensystem: T = { {x,y} | x,yM} Beweis: betrachte
beliebige x,yM. Sei
A={x,y} und B={x}. Dann sind A,BM, AT und BA, aber BT.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 197
-
Gegeben sei ein Teilmengensystem (M,T ) und eine
Gewichtsfunktion w:M.
Greedy-Algorithmus:1. Sortiere die Elemente in M nach
absteigen-
dem Gewicht (Maximierung). Sei M={x1,...,xm} mit w(x1) ...
w(xm).
2. T3. Fr k1 bis m:4. Falls T{xk}T , dann TT{xk}5. Gib T aus
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 198
-
Bemerkung 19.11: Der Greedy-Algorithmus liefert nicht immer eine
Menge T mit maximalem Gewicht.
Beispiel: M={a,b,c} T={, {a}, {b}, {c}, {a,b}} w(a)=w(b)=2,
w(c)=3 Dafr berechnet der Greedy-Algorithmus
T={c} mit w(T)=3, aber die optimale Lsung ist T={a,b} mit
w(T)=4.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 199
-
Beispiel: Traveling Salesman Problem (TSP): Gegeben
eine Knotenmenge V mit Distanzen d:VV+, finde eine Rundtour
TP(VV) ber alle Knoten mit minimaler Lnge d(T)= eT d(e), die jeden
Knoten genau einmal besucht.
Teilmengensystem zum TSP:M =VVT ={ EM | ET fr eine Rundtour
T}
Das TSP ist ein NP-schweres Problem, die Greedy-Methode kann
also in der Regel keine optimale Lsung liefern.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 200
-
Beispiel: Rucksack Problem: Gegeben eine Objektmenge
M mit Gewichten w:M+und ein Rucksack mit maximaler Traglast W,
finde eine Teilmenge T der Objekte mit maximalem Gewicht, die in
den Rucksack passt, d.h. w(T):= xT w(x) W.
Teilmengensystem zum Rucksack Problem:M wie oben definiertT ={
TM | w(T)W }
Das Rucksackproblem ist auch ein NP-schweres Problem, d.h. auch
hier wird die Greedy-Methode im Allgemeinen keine optimale Lsung
liefern.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 201
-
Definition 19.12: Ein Teilmengensystem (M,T ) heit Matroid fr
alle A,BT das Austauschaxiomgilt:
|A|=|B|+1 aA\B: B{a}TDie Mengen in T werden unabhngige Mengen
genannt. Jede maximale (d.h. nicht erweiterbare) unabhngige Menge
heit Basis.
Beispiele: Sei G=(V,E) ein Graph. Dann ist (M,T ) mit M=E
und T = { TM | (V,T) ist ein Wald} ein Matroid. Die
Teilmengensysteme zum TSP und zum
Rucksackproblem sind dagegen keine Matroide.SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 202
-
Satz 19.13: Sei (M,T ) ein Teilmengensystem. Der
Greedy-Algorithmus lst genau dann das zu (M,T ) gehrige
Optimierungsproblem (fr jede Gewichtsfunktion w), wenn (M,T ) ein
Matroid ist.
Beweis:: Alle maximalen Mengen von T haben wegen des
Austauschaxioms die gleiche Kardinalitt. Sei k diese Kardinalitt
und sei S={x1,...,xk} die
vom Greedy-Algorithmus berechnete Lsung. Es gelte w(x1) ...
w(xk).
Sei T={y1,...,yk} eine andere maximale Menge aus T . Es gelte
w(y1) ... w(yk).
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 203
-
Annahme: es existiert ein i mit w(yi)>w(xi). Sei i der
kleinste solche Index, also
w(y1)w(x1),...,w(yi-1)w(xi-1). Definition 19.12 liefert mit
A={y1,...,yi} und
B={x1,...,xi-1} ein yjA\B, so dass B{yj}T . Wegen
w(yj)w(yi)>w(xi) htte der Greedy-
Algorithmus vor xi schon yj genommen, wir erhalten also einen
Widerspruch zur Annahme.
Also ist w(yi)w(xi) fr alle 1 ik und somit w(T)w(S).
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 204
-
: Das Austauschaxiom gelte nicht. Dann gibt es A,BT mit
|A|=|B|+1, so dass
B{a}T fr alle aA\B. Sei r=|A| und w:VV gegeben durch
r+1 falls xBw(x):= r falls xA\B
0 sonst Der Greedy-Algorithmus whlt dann eine Menge T
mit TB und T(A\B)= mit Gewicht w(T)=|B|(r+1) = r2-1
Whlt man stattdessen ein S mit SA, dann ergibt sich w(S)|A|r =
r2 > w(T).
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 205
-
Gegeben sei eine Menge J={1,...,n} von Jobs. Jeder Job habe
einen Fertigstellungstermin f(i)
und eine Strafe s(i), die bei nicht rechtzeitiger Fertigstellung
gezahlt werden muss.
Pro Tag kann nur ein Job erledigt werden. Wie muss man die Jobs
einplanen, so dass die
Gesamtstrafe minimiert wird?
Beispiel:
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 206
Job 1 2 3 4 5 6f(i) 1 1 2 3 3 6s(i) 10 9 6 7 4 2
-
Modellierung als Matroid: M = J T = { PJ | jP: Job j ist
pnktlich planbar}
Man nehme s(i) als Gewichtsfunktion und wende den
Greedy-Algorithmus an.
Terminplan:
Strafe: 13
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 207
Job 1 2 3 4 5 6f(i) 1 1 2 3 3 6s(i) 10 9 6 7 4 2
Reihe 1 - 3 2 - 4
-
Beispiel: minimale Spannbume Gegeben sei ein Graph G=(V,E)
mit
Kantenkosten c:E. Finde einen Spannbaum (V,T) mit TE mit
mini-malen Kosten.
Modellierung als Matroid: M = E T = { TE | (V,T) ist ein Wald
}Greedy-Algorithmus identisch mit Kruskal.SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 208
-
Satz 19.14: Das System (M,T ) zum Minimalen-Spannbaum-Problem
ist ein Matroid.
Beweis: T : klar AT und BA BT : klar Wir mssen die
Austauscheigenschaft
nachweisen.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 209
-
Zu zeigen: fr alle A,BT gilt|A|=|B|+1 aA\B: B{a}T
Betrachte zwei kreisfreie Kantenmengen A,BE. Seien V1,...,Vk die
Zusammenhangskomponenten von (V,B).
Da |B||B|, gibt es somit in A eine Kante e, die zwei
verschiedene Vi verbindet. Diese kann aber in Bkeinen Kreis
schlieen, d.h. B{e}T.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 210
-
Beispiel: maximales Matching Ein Matching ist eine Kantenmenge,
in der
jeder Knoten hchstens einmal vorkommt. Gegeben sei ein
bipartiter Graph G=(LR,E)
mit Knotengewichten w:L+. Finde ein Matching FE mit maximalem
Gewicht w(F) = (u,v)F w(u).
Modellierung als Matroid: M=L T = { TL | T hat ein Matching in G
}
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 211
-
Satz 19.15: Das System (M,T ) zum Maximalen-Matching-Problem ist
ein Matroid.
Beweis: T : klar AT und BA BT : klar Wir mssen die
Austauscheigenschaft
nachweisen.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 212
-
Zu zeigen: fr alle A,BT gilt|A|=|B|+1 aA\B: B{a}T
Betrachte Knotenmengen A,BL mit |A|=|B|+1. Sei X ein Matching zu
A und Y ein Matching zu B.
Betrachte den Graphen H=(LR,XY). Seien X die roten und Y die
blauen Kanten. H besteht aus
isolierten Kanten, die rot, blau oder beides sein knnen,
und/oder
disjunkten Wegen, die aus abwechselnd roten und blauenKanten
bestehen.
H hat mehr rote als blaue Kanten. Also gibt es entweder eine
isolierte rote Kante oder einen
Weg der Lnge >1 mit mehr roten als blauen Kanten.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 213
-
Also: es gibt entweder eine isolierte rote Kante (mit linkem
Knoten vA\B) oder einen Weg P der Lnge >1 mit mehr roten als
blauen Kanten.
Im ersten Fall: B{v}T . Im zweiten Fall: P hat ungerade Lnge,
beginnt und
endet mit roter Kante.
B{v}T, da die roten Kanten ein Matching bilden.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 214
L
R
vA\B
-
Fazit: Knnen wir ein Optimierungsproblem als Matroid
modellieren, wissen wir, dass der Greedy-Algorithmus eine optimale
Lsung findet.
SS 2016
Gierige Algorithmen Matroide
DuA - Kapitel 19 215
-
SS 2016 216
Changelog
27.06.16: Folien 11, 12, 106, 107, 13601.07.16: Folie 194
DuA - Kapitel 19
19. Gierige AlgorithmenFoliennummer 2Gierige Algorithmen
Minimale SpannbumeGierige Algorithmen Idee und PrimGierige
Algorithmen Idee und KruskalGieriges 1-Prozessor-Scheduling
(1)Gieriges 1-Prozessor-Scheduling (2)Gieriges
1-Prozessor-Scheduling - BeispielGieriges 1-Prozessor-Scheduling
(3)Gieriges Mehr-Prozessor-Scheduling Gieriges
Mehr-Prozessor-Scheduling (2)Gieriges Mehr-Prozessor-Scheduling -
BeispielGierig ist nicht immer optimalGierig ist nicht immer
optimalGierig ist nicht immer optimalGierig ist nicht immer
optimalFoliennummer 17Foliennummer 18Foliennummer 19Foliennummer
20Foliennummer 21Foliennummer 22Foliennummer 23Foliennummer
24Foliennummer 25Foliennummer 26Foliennummer 27Foliennummer
28Foliennummer 29Foliennummer 30Foliennummer 31Foliennummer
32Foliennummer 33Foliennummer 34Foliennummer 35Foliennummer
36Foliennummer 37Foliennummer 38Foliennummer 39Foliennummer
40Foliennummer 41Foliennummer 42Foliennummer 43Foliennummer
44Foliennummer 45Foliennummer 46Foliennummer 47Foliennummer
48Foliennummer 49Foliennummer 50Foliennummer 51Foliennummer
52Foliennummer 53Foliennummer 54Foliennummer 55Foliennummer
56Gierige Algorithmen Intervall SchedulingFoliennummer
58Foliennummer 59Foliennummer 60Foliennummer 61Foliennummer
62Foliennummer 63Foliennummer 64Foliennummer 65Foliennummer
66Foliennummer 67Foliennummer 68Foliennummer 69Foliennummer
70Foliennummer 71Foliennummer 72Foliennummer 73Foliennummer
74Foliennummer 75Foliennummer 76Foliennummer 77Foliennummer
78Foliennummer 79Foliennummer 80Foliennummer 81Foliennummer
82Foliennummer 83Foliennummer 84Foliennummer 85Foliennummer
86Foliennummer 87Foliennummer 88Foliennummer 89Foliennummer
90Foliennummer 91Foliennummer 92Foliennummer 93Foliennummer
94Foliennummer 95Foliennummer 96Foliennummer 97Foliennummer
98Foliennummer 99Foliennummer 100Foliennummer 101Foliennummer
102Foliennummer 103Foliennummer 104Foliennummer 105Foliennummer
106Foliennummer 107Foliennummer 108Foliennummer 109Foliennummer
110Foliennummer 111Foliennummer 112Foliennummer 113Foliennummer
114Foliennummer 115Foliennummer 116Foliennummer 117Foliennummer
118Foliennummer 119Foliennummer 120Foliennummer 121Foliennummer
122Foliennummer 123Foliennummer 124Foliennummer 125Foliennummer
126Foliennummer 127Foliennummer 128Foliennummer 129Foliennummer
130Foliennummer 131Foliennummer 132Foliennummer 133Foliennummer
134Foliennummer 135Foliennummer 136Foliennummer 137Foliennummer
138Foliennummer 139Foliennummer 140Foliennummer 141Foliennummer
142Foliennummer 143Foliennummer 144Foliennummer 145Foliennummer
146Foliennummer 147Foliennummer 148Foliennummer 149Foliennummer
150Foliennummer 151Foliennummer 152Foliennummer 153Foliennummer
154Foliennummer 155Foliennummer 156Foliennummer 157Foliennummer
158Foliennummer 159Foliennummer 160Foliennummer 161Foliennummer
162Foliennummer 163Foliennummer 164Foliennummer 165Foliennummer
166Foliennummer 167Foliennummer 168Foliennummer 169Foliennummer
170Foliennummer 171Foliennummer 172Foliennummer 173Foliennummer
174Foliennummer 175Foliennummer 176Foliennummer 177Foliennummer
178Foliennummer 179Foliennummer 180Foliennummer 181Foliennummer
182Foliennummer 183Foliennummer 184Foliennummer 185Foliennummer
186Foliennummer 187Foliennummer 188Foliennummer 189Foliennummer
190Foliennummer 191Foliennummer 192Foliennummer 193Foliennummer
194Foliennummer 195Foliennummer 196Foliennummer 197Foliennummer
198Foliennummer 199Foliennummer 200Foliennummer 201Foliennummer
202Foliennummer 203Foliennummer 204Foliennummer 205Foliennummer
206Foliennummer 207Foliennummer 208Foliennummer 209Foliennummer
210Foliennummer 211Foliennummer 212Foliennummer 213Foliennummer
214Foliennummer 215Changelog