12 greedy-algorithmen - tu bergakademie freibergernst/lehre/ad/folien/adkapitel12.pdf ·...

35
Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen weitere Optimierungsstrategie, verwandt mit dynamischem Program- mieren Idee: wann immer eine Auswahl zu treffen ist wird die lokal optimale gew¨ ahlt In manchen F ¨ allen f ¨ uhrt dies auch zu einer global optimalen L ¨ osung. 12 Greedy-Algorithmen TU Bergakademie Freiberg, WS 2005/06

Upload: vuongdieu

Post on 12-Aug-2019

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 310

12 Greedy-Algorithmen

• weitere Optimierungsstrategie, verwandt mit dynamischem Program-mieren

• Idee: wann immer eine Auswahl zu treffen ist wird die lokal optimalegewahlt

• In manchen Fallen fuhrt dies auch zu einer global optimalen Losung.

12 Greedy-Algorithmen TU Bergakademie Freiberg, WS 2005/06

Page 2: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 311

12.1 Aktivit aten-Auswahl

• n zeitlich begrenzte Aktivitaten S = {a1, a2, . . . , an} gegeben

• Jede Aktivitat ai benotigt uber den Zeitraum [si, fi), 0 ≤ si < fi < ∞,(Start- bzw. Endzeit) exklusiven Zugriff auf eine begrenzte Ressource.

• Beispiele: Horsaaleinteilung, Mietwagenverleih

• Ziel: Auswahl einer moglichst großen Menge kompatibler (d.h. zeitlichnicht uberlappender) Aktivitaten.

Beispiel: (aufsteigend sortiert nach Endzeit)

i 1 2 3 4 5 6 7 8 9

si 1 2 4 1 5 8 9 11 13

fi 3 5 7 8 9 10 11 14 16

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 3: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 312

a5

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

a1 a3 a6 a8

a9a7a2

a4

Maximale kompatible Menge {a1, a3, a6, a8}nicht eindeutig: auch {a2, a5, a7, a9}

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 4: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 313

Optimale Substruktur

Definiere

Si,j = {ak ∈ S : fi ≤ sk < fk ≤ sj}= Aktivitaten, welche nach ai beginnen und vor aj enden .

Aktivitaten in Si,j sind kompatibel mit allen Aktivitaten, die

• bis fi enden oder

• nicht vor sj beginnen.

Gesamtaufgabe kann beschrieben werden mit Hilfe zweier fiktiver Akti-vitaten

a0 := [−∞, 0), an+1 := [∞, “∞+ 1”),

womit S = S0,n+1.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 5: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 314

Aktivitaten seien nach aufsteigender Endzeit sortiert:

f0 ≤ f1 ≤ f2 ≤ · · · ≤ fn < fn+1.

Es giltSi,j = ∅ falls i ≥ j. (12.1)

Beweis: Aus ak ∈ Si,j folgt fi ≤ sk < fk ≤ sj < fj .Wegen i ≥ j gilt aber fi ≥ fj , ein Widerspruch. �

Daher: betrachte nur Si,j mit 0 ≤ i < j ≤ n + 1.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 6: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 315

Enthalt eine Losung zu Si,j das Element ak, so ergeben sich 2 Teilproble-me:

• Si,k (Start nach Ende von ai, Ende vor Start von ak)

• Sk,j (Start nach Ende von ak, Ende vor Start von aj)

Losung von Si,j gegeben durch

Losung von Si,k ∪ {ak} ∪ Losung von Sk,j

Da Si,k, Sk,j disjunkt und ak in keiner der beiden Mengen enthalten gilt

|Losung von S| = |Losung von Si,k|+ 1 + |Losung von Sk,j |.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 7: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 316

Enthalt eine optimale Losung zu Si,j das Element ak, so sind die darinvorkommenden Losungen zu Si,k und Sk,j ebenfalls optimal. (Ublichercut-and-paste Beweis)

Wir nehmen an: Ai,j sei optimale Losung von Si,j , d.h. Ai,j = Ai,k ∪{ak}∪Ak,j . Dabei sei Si,j 6= ∅ und ak sei bekannt.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 8: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 317

Rekursive L osung der Aktivit atenauswahl

Sei c[i, j] := Große einer maximalen Menge kompatibler Aktivitaten in Si,j

Wegen (12.1) folgt c[i, j] = 0 falls i ≥ j.

Ist Si,j 6= ∅ und liegt ak ∈ Si,j , so gilt

c[i, j] =

{0 falls Si,j = ∅,max{c[i, k] + 1 + c[k, j] : i < k < j, ak ∈ Si,j} falls Si,j 6= ∅.

Beachte:

• Wegen Si,j = {ak ∈ S : fi ≤ sk < fk ≤ sj} folgt ak 6= ai, aj .

• ak ∈ Si,j muss zusatzlich gefordert werden, da dies nicht bereits ausi < k < j folgt.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 9: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 318

An dieser Stelle konnte man weiterverfahren mit einer Losung durch dyna-misches Programmieren. Es geht aber auch einfacher.

Satz 12.1 Sei Si,j 6= ∅ sowie am diejenige Aktivitat in Si,j mit der fruhestenEndzeit: fm = min{fk : ak ∈ Si,j}. Dann gilt

(a) am liegt auch in einer maximalen kompatiblen Teilmenge von Si,j .

(b) Si,m = ∅, d.h. nach Auswahl von am verbleibt lediglich Sm,j als einzigesnichtleeres Teilproblem.

Beweis:

(b) Aus ak ∈ Si,m folgt fi ≤ sk < fk ≤ sm < fm, insbesondere fk < fm.Damit lage ak auch in Si,j , besaße aber eine fruhere Endzeit als fm,ein Widerspruch. Es ist also Si,m = ∅.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 10: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 319

(a) Sei Ai,j eine maximale kompatible Teilmenge von Si,j .Die Elemente von Ai,j seien nach aufsteigender Endzeit sortiert.Sei ak die erste Aktivitat in dieser Reihenfolge.Ist ak = am, so ist die Behauptung bewiesen.Andernfalls setze A′

i,j := Ai,j \ {ak} ∪ {am} (ersetze ak durch am).

Behauptung: die Aktivitaten in A′i,j sind kompatibel.

Die Aktivitaten in Ai,j sind kompatibel, ak besitzt hiervon die fruhesteEndzeit, ferner gilt fm ≤ fk.Damit besitzt am keine Konflikte mit Elementen aus A′

i,j .

Da |A′i,j | = |Ai, j| und Ai,j eine maximale kompatible Menge ist, ist

dies auch A′i,j . �.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 11: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 320

Starke Vereinfachung:

ohne Satz 12.1 mit Satz 12.1

# Teilprobleme einer optimalen Losung 2 1

# Auswahlmoglichkeiten j-i-1 1

Nun ist eine top-down Strategie moglich: um Si,j zu losen

• Auswahl von am ∈ Si,j mit fruhester Endzeit, die Greedy-Auswahl,

• danach Losung von Sm,j .

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 12: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 321

Reihenfolge der Teilprobleme:

• Starte mit S0,n+1.

• Wird am1 zuerst ausgewahlt, fahre fort mit Teilproblem Sm1,n+1.

• Wird am2 als nachstes ausgewahlt, fahre fort mit Teilproblem Sm2,n+1.

• Und so fort.

Jedes Teilproblem Smi,n+1 besteht aus den Aktivitaten mit den spatestenEndzeiten.

Die Teilprobleme besitzen also wachsende Endzeiten.

Es genugt deshalb, jede Aktivitat nur einmal, in Reihenfolge wachsenderEndzeit, zu betrachten.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 13: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 322

Einfacher rekursiver Algorithmus: Aktivitaten nach aufsteigender End-zeit sortiert angenommen. (Andernfalls zusatzlich mit Zeitaufwand O(n log n)sortieren.) Liefert eine optimale Losung von Si,n+1.

REC-ACTIVITY-SELECTOR(s, f, i, n)

1 m← i + 12 while m ≤ n und sm < fi � Bestimme erste Aktivitat in Si,n+1

3 do m← m + 14 if m ≤ n

5 then return {am} ∪ REC-ACTIVITY-SELECTOR(s, f,m, n)6 else return ∅

Erster Aufruf: REC-ACTIVITY-SELECTOR(s, f, 0, n).

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 14: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 323

Idee: Die while -Schleife pruft sukzessiv die Elemente ai+1, ai+2, . . . , an,bis eine (die erste) mit ai kompatible Aktivitat am gefunden wird (dieserfordert sm ≥ fi.

• Terminiert die Schleife durch Auffinden eines solchen am (m ≤ n), sowird rekursiv Sm+1,n gelost und diese Losung, mit am vorangestellt,zuruckgegeben.

• Wird keine kompatible Aktivitat am gefunden, so wird die leere Mengezuruckgegeben.

Laufzeit: Θ(n), da jede Aktivitat genau einmal gepruft wird.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 15: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 324

Iterative Variante:

GREEDY-ACTIVITY-SELECTOR(s, f, n)

1 A← {a1}2 i← 13 for m← 2 to n

4 do if sm ≥ fi

5 then A← A ∪ {am}6 i← m � ai wurde als letztes hinzugetan7 return A

Laufzeit: Θ(n).

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 16: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 325

Greedy-Strategie

Jede Auswahl wird lokal optimal getroffen. Vorgehen bei Aktivitatenaus-wahl:

1. Bestimmung der optimalen Substruktur

2. Entwicklung einer rekursiven Losung

3. Zeige: In jedem Stadium der Rekursion ist die Greedy-Auswahl eineder optimalen Moglichkeiten. D.h. man ist mit der Greedy-Auswahlimmer auf der sicheren Seite.

4. Zeige: bis auf eine sind alle aus der Greedy-Auswahl sich ergebendenTeilprobleme leer.

5. Entwicklung eines rekursiven Greedy-Algorithmus

6. Umwandlung in einen iterativen Algorithmus.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 17: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 326

Im Allgemeinen wird dieses Vorgehen verkurzt.

Wir hatten gezeigt: treffen der Greedy-Auswahl fuhrte dazu, dass in Si,j

nur i variierte und j beim Wert n + 1 konstant blieb.

Man hatte auch von vornherein einen Greedy-Algorithmus ansteuernkonnen:

• Setze Si := {ak ∈ S : sk ≥ fi}.

• Zeige dann: die Greedy-Auswahl am – die am fruhesten endendeAktivitat in Si – kombiniert mit einer optimalen Losung von Sm fuhrt aufeine optimale Losung von Si.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 18: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 327

Typisches verkurztes Vorgehen:

1. Formulierung der Optimierungsaufgabe als eine, zu deren Losung eineAuswahl getroffen wird, wonach ein Teilproblem zu losen bleibt.

2. Zeige: es gibt stets eine optimale Losung, bei welcher die Greedy-Auswahl getroffen wird. Dies stellt sicher, dass die Greedy-Auswahl zueiner optimalen Losung fuhrt.

3. Zeige: Greedy-Auswahl verbunden mit optimaler Losung des verblei-benden Teilproblems fuhrt auf global optimale Losung.

Es gibt kein allgemeingultiges Kriterium, wann ein Greedy-Algorithmusoptimal ist, jedoch zwei wesentliche Komponenten:

• die Greedy-Auswahl-Eigenschaft sowie

• optimale Substruktur.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 19: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 328

Greedy-Auswahleigenschaft

Durch lokal optimale Auswahlen (Greedy-Auswahl) kann eine global opti-male Losung konstruiert werden. Man vergleiche

Dynamisches Programmieren:

• Auswahl bei jedem Schritt

• Auswahl setzt Kenntnis der optimalen Losungen der Teilprobleme vor-aus; daher mussen diese zuerst gelost werden.

• Bottom-up Vorgehen.

Greedy:

• Auswahl bei jedem Schritt

• Auswahl wird vor Losung der Teilprobleme getroffen.

• Top-down Vorgehen.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 20: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 329

Optimale Substruktur

Zeige, dass die Greedy-Auswahl verbunden mit der optimalen Losung desverbleibenden Teilproblems zu einer global optimalen Losung fuhrt.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 21: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 330

Beispiel: Unterschied Greedy vs. dynamisches Programmieren

0-1 Knappsack-Problem

• n Objekte

• Objekt i besitzt Wert vi EUR und Gewicht wi kg

• Ziel: Zusammenstellen einer moglichst wertvollen Ansammlung vonObjekten mit Gesamtgewicht ≤W

• Objekte konnen nur als Ganze ausgewahlt werden (nicht anteilig)

Anteiliges Knappsack-Problem

Wie 0-1 Knappsack-Problem, aber hier konnen Objekte auch anteilig aus-gewahlt werden.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 22: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 331

• Beide besitzen die optimale Substruktureigenschaft

• Das anteilige Knappsack-Problem besitzt die Greedy-Auswahleigenschaft,das 0-1-Knappsack-Problem hingegen nicht.

Zur Losung des anteiligen Problems: Objekte zunachst nach Quotient vi/wi

absteigend sortieren.

FRACTIONAL-KNAPPSACK(v, w,W )

load ← 0while load < W und i ≤ n

do if wi ≤W − loadthen Objekt i vollstandig auswahlenelse Anteil (W − load)/wi von Objekt i auswahlen

load um Gewicht der Auswahl erhoheni← i + 1

Laufzeit: O(n log n) zum Sortieren, danach O(n).

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 23: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 332

Die Greedy-Strategie funktioniert nicht fur das 0-1 Knappsack Problem.

Beispiel:

i 1 2 3

vi 60 100 120

wi 10 20 30

vi/wi 6 5 4

W = 50.

Greedy-Losung

• Wahlt zuerst Objekt 1, danach Objekt 2. Wert = 160, Gewicht = 30.20 kg ungenutzt.

Optimale Losung

• Wahle Objekte 2 und 3. Wert = 220, Gewicht = 50.

• Zulassiges Gewicht voll ausgenutzt.

12.1 Aktivitaten-Auswahl TU Bergakademie Freiberg, WS 2005/06

Page 24: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 333

12.2 Huffman-Codes

• weit verbreitete, sehr effektive Technik zur Datenkompression

• Je nach Daten Ersparnis von 20-90%

• Betrachte Daten als Folge von Zeichen

• Greedy-Algorithmus von Huffman: weist anhand einer Haufigkeitsta-belle jedem Zeichen eine optimale Binarkodierung zu.

• Beispiel: Kompression einer Datei aus 100.000 Zeichen aus dem Al-phabet {a, b, c, d, e, f}. Die Haufigkeit des Auftretens der einzelnenZeichen sei gegeben durch folgende Tabelle:

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 25: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 334

a b c d e f

Haufigkeit (in Tausend) 45 13 12 16 9 5

Kodierung fester Lange 000 001 010 011 100 101

Kodierung variabler Lange 0 101 100 111 1101 1100

Kodierung fester L ange: Fur 6 Zeichen 3 Bits erforderlich, z.B. a = 000,b = 001,. . . ,f = 101. Die Speicherung Datei erfordert auf diese Weise300.000 Bits.

Kodierung variabler L ange: Verbesserung durch Vergabe von kurzenCodes an haufig auftretende Zeichen. Bei der in der Tabelle angege-benen Kodierung variabler Lange benotig man

(45 · 1 + 13 · 3 + 12 · 3 + 16 · 3 + 9 · 4 + 5 · 4) · 1000 = 224.000 Bits,

eine Ersparnis von ca. 25 %. Spater: diese Kodierung ist optimal.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 26: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 335

12.2.1 Prafix-Kodierungen

Betrachte ausschließlich sog. Prafix-Kodierungen, bei denen kein Zeichen-code mit der Anfangsfolge (Prafix) eines anderen Zeichencodes zusam-menfallt.a

• Kodierung der Datei einfach: Aneinanderreihen der Zeichencodes. Mitder variablen Kodierung wird etwa die Datei abc kodiert als 0·101·100 =0101100.

• Dekodierung fur Prafix-Codes ebenfalls einfach: Bits lesen bis einZeichen vollstandig, dann Ersetzen durch kodiertes Zeichen. Beispiel:

00101101→ 0 · 0 · 101 · 1101→ aabe.

aMan kann zeigen: die optimale durch Zeichenkodierung erreichbare Kompression kannmit einem Prafix-Code erreicht werden. Daher stellt dies keine Einschrankung dar.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 27: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 336

Hilfreiche Darstellung des Pr afix-Kodierschemas zum Dekodieren

• Binarbaum mit den kodierten Zeichen als Blatter

• Bitfolge der Zeichenkodierung entspricht Weg von Wurzel zum Blatt mitkodiertem Zeichen: bei 0: linker Sohn, bei 1: rechter Sohn.

• Keine binaren Suchbaume (innere Knoten tragen keine Schlussel,Zeichen nicht sortiert)

• Optimale Kodierungen besitzen einen vollstandigen Binarbaum (jederKnoten, der kein Blatt ist, besitzt 2 Sohne).

• Ist T die Binarbaumdarstellung des Kodierschemas und bezeichnen C

das Alphabet, f(c) die Haufigkeit von Zeichen c ∈ C in der Datei sowiedT (c) die Tiefe des zu c gehorenden Blattes, so ist die erforderlicheAnzahl Bits B(T ) zur Kodierung der Datei gegeben durch

B(T ) =∑c∈C

f(c)dT (c).

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 28: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 337

0

100

a:45 b:13 e:9 f:5c:12 d:16

86

58 28 14

14

10

0

0 0 0 111

1 0

100

a:45

c:12 b:13 d:16

f:5 e:9

14

3025

55

10

1

10

0

0 1

1

(a) (b)

Baume zu den Kodierungsschemata fester (a) und variabler (b) Lange im Beispiel.

Die Blatter sind mit den Zeichen und deren Haufigkeiten bezeichnet. Innere Knoten

sind mit der Summe der Haufigkeiten in den Blattern ihrer Teilbaume bezeichnet.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 29: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 338

12.2.2 Konstruktion von Huffman-Codes

• Greedy-Algorithmus von David A. Huffman zur Konstruktion einesoptimalen Prafix-Codes

• Korrektheitsnachweis beruht auf Greedy-Auswahleigenschaft und opti-maler Substruktureigenschaft.

• Wir betrachten zuerst den Pseudocode

◦ C: Menge von n Zeichen, Zeichen c ∈ C besitzt Haufigkeit f(c)

◦ Binarbaumdarstellung der optimalen Kodierung wird mit Bottom-upVorgehen aufgebaut.

◦ Beginnt mit |C| Blatter und fuhrt |C| − 1 Verknupfungsoperationendurch. Ergebnis: neuer Knoten, Haufigkeit ist Summe der Haufig-keiten der Sohne.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 30: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 339

HUFFMAN(C)

1 n← |C|2 Q← C

3 for i← 1 to n− 14 do neuen Knoten z allokieren5 left [z]← x← EXTRACT-MIN(Q)6 right [z]← y ← EXTRACT-MIN(Q)7 f(z)← f(x) + f(y)8 INSERT(Q, z)9 return EXTRACT-MIN(Q)

Beachte: Im Pseudocode wird eine sog. Min-Priority-Queue verwendet,eine Datenstruktur, welche die Operationen INSERT, MINIMUM, EXTRACT-MIN und DECREASE-KEY unterstutzt. Diese kann durch einen Heap imple-mentiert werden.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 31: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 340

d:16 a:4514(b)

(d)

14

f:5 e:9 d:16 c:12 b:13 a:45

a:45

b:13

25 30

d:16

f:5 e:9

1

0 1

a:45d:16

b:13e:9f:5

25

c:12 c:12

0 1 0

0 1

10 10

14

(a)

(c)

b:13c:12

f:5 e:9

Die Schritte des Huffman-Algorithmus fur das Kodierschema variabler Lange. In

jeder Phase wird von links nach rechts der Inhalt der Min-Priority-Queue nach

aufsteigender Haufigkeit sortiert dargestellt. In jedem Schritt werden die zwei

Baume mit den niedrigsten Haufigkeiten vereinigt.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 32: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 341

0

0 1

100

a:45

c:12 d:16

1

d:16c:12

a:45

b:13

f:5 e:9

14

3025

55

1

1

0

10

(e) (f)

0

b:13

f:5 e:9

14

3025

55

1

1

0

100

0 1

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 33: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 342

Laufzeit des Huffman-Algorithmus:

• Implementierung von Q als Min-Heap.

• Initialisierung in O(n) mit BUILD-MIN-HEAP.

• for -Schleife (Zeile 3) wird n− 1 Mal ausgefuhrt, jede Heap-Operationbenotigt O(log n), also benotigt die Schleife O(n log n).

• Fazit: Huffman-Algorithmus angewandt auf Menge mit C Elementenbesitzt Laufzeit O(n log n).

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 34: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 343

12.2.3 Korrektheit des Huffman-Algorithmus

Korrektheitsbeweis beruht darauf, dass das die Aufgabe, eine optimalePrafix-Kodierung zu bestimmen, die Greedy-Auswahleigenschaft und dieoptimale Substruktureigenschaft besitzt.

Zunachst die Greedy-Auswahleigenschaft:

Lemma 12.2 Sei C ein Alphabet aus n Zeichen und seien x und y zweiZeichen aus C mit minimaler Haufigkeit. Dann gibt es eine optimale Prafix-Kodierung fur C, in welcher die Zeichenkodierungen von x und y die gleicheAnzahl Bits besitzen und sich nur im letzten Bit unterscheiden.

Fazit: der Aufbau eines optimalen Baumes kann o.B.d.A. mit dem Ver-binden zweier Zeichen minimaler Haufigkeit beginnen. Betrachtet man dieSumme der Haufigkeiten zu verbindender Knoten als Kosten, so stellt dieseAuswahl eine Greedy-Auswahl dar.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06

Page 35: 12 Greedy-Algorithmen - TU Bergakademie Freibergernst/Lehre/AD/Folien/adKapitel12.pdf · Algorithmen und Datenstrukturen 310 12 Greedy-Algorithmen • weitere Optimierungsstrategie,

Algorithmen und Datenstrukturen 344

Lemma 12.3 Sei C ein Alphabet aus n Zeichen, wobei Zeichen c ∈ C mitHaufigkeit f(c) auftritt. Seien x und y zwei Zeichen aus C mit minimalerHaufigkeit. Sei ferner C ′ das Alphabet, das durch Entfernen von x und y

aus C und Hinzunahme eines neuen Zeichens z entsteht. Die Haufigkeitenin C ′ seien wie in C definiert zusammen mit f(z) := f(x) + f(y). Seischliesslich T ′ ein beliebiger Baum, der eine optimale Prafix-Kodierungfur C ′ reprasentiert. Dann reprasentiert der Baum T , der dadurch aus T ′

entsteht, dass das zu z gehorende Blatt ersetzt wird durch einen innerenKnoten mit Sohnen x und y, eine optimale Prafix-Kodierung fur C.

Damit ist die optimale Substruktureigenschaft ebenfalls nachgewiesen. Esfolgt somit:

Satz 12.4 Algorithmus HUFFMAN konstruiert eine optimale Prafix-Kodierung.

12.2 Huffman-Codes TU Bergakademie Freiberg, WS 2005/06