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

(nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Jun 19, 2019

Download

Documents

vandang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Effiziente Algorithmen

Greedy-Algorithmen

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

Mai 2012

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 1

Page 2: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

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

∗ greedy (engl.): gierig.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 2

Page 3: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

3.1 Zwei BeispieleBeispiel 1: Horsaalbelegung

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

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

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

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

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

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 3

Page 4: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

T0

T1

Eingabe: Aktionen mit Beginn und Ende

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 4

Page 5: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

T0T

1

Zulassige Losung mit 4 Aktionen. Optimal?

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 5

Page 6: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

T0T

1

Zulassige Losung mit 5 Aktionen. Optimal?

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 6

Page 7: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Ansatze, die nicht funktionieren:

Zuerst kurze Ereignisse planen

T0T

1

Immer ein Ereignis mit moglichst fruher Anfangszeit wahlen

T0T

1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 7

Page 8: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

f1 ≤ f2 ≤ · · · ≤ fn.

1T

0T

1

2

3

4

5

6

7

8

9

10

11

12

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 8

Page 9: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

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

1T

0T

Ausgabe von GS: Zulassige Losung.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 9

Page 10: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

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

[si , fi ), i ∈ A disjunkt(1) Sortiere Intervalle gemaß f1, . . . , fn aufsteigend;(2) A← {1};(3) flast ← f1;(4) for i from 2 to n do(5) if si ≥ flast then (∗ [si, fi) wahlbar ∗)(6) A← A ∪ {i};(7) flast ← fi;(8) return A

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 10

Page 11: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.1.1

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

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

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

Der Fall n = 1 ist trivial.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 11

Page 12: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Sei nun n > 1.

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

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

1T

0T

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 12

Page 13: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

1T

0T

Setze B ′ := (B − {min(B)}) ∪ {1}.Intervalle aufsteigend sortiert ⇒ f1 ≤ fmin(B).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 13

Page 14: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

2. Beobachtung:

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

(∗) [f1,T1), {[si , fi) | si ≥ f1}

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

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

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 14

Page 15: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

3. Beobachtung:

Algorithmus GS auf Eingabe {[si , fi ) | 1 ≤ i ≤ n} hat ab Iteration i = 2genau dasselbe Verhalten wie wenn man GS auf [f1,T1),{[si , fi ) | si ≥ f1} starten wurde.Nach I.V. liefert also dieser Teil des Algorithmus eine optimale Losung mitr − 1 Ereignissen fur (∗).

Also liefert Greedy Scheduling insgesamt eine optimale Losung der Großer . �

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 15

Page 16: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beispiel 2: Fraktionales (”

teilbares“) Rucksackproblem

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

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

Gesucht: Vektor (λ1, . . . , λn) ∈ [0, 1]n, so dass

λ1a1 + . . .+ λnan ≤ b (”

zulassig“)

undλ1c1 + . . .+ λncn maximal.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 16

Page 17: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beim”

0-1-Rucksackproblem“ werden nur 0-1-Vektoren mit λi ∈ {0, 1}zugelassen.

Mitteilung (im Vorgriff auf BuK, 5. Sem.): Die {0, 1}-Version ist NP-vollstandig,besitzt also wahrscheinlich keinen effizienten Algorithmus.

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

Kern der Losungsidee: Berechne”

Nutzendichte“

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

und sortiere die Objekte gemaß di fallend.

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

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 17

Page 18: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ba

321 aaa n

c c

c

1 2 3

n

c

Input, sortiert nach Nutzendichte di = ci/ai .

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

Breite ist ai.

Flache ist ci.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 18

Page 19: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

(10) then λi ← 1; r← r− ai;(11) else λi ← r/ai;(12) r← 0;

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 19

Page 20: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ba

321 aaa n

c c

c

1 2 3

n

c

Vom Greedy-Algorithmus gelieferte Losung.Gesamtnutzen: grun.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 20

Page 21: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

b321 aaaan

c c

c

1 2 3

n

c

Zulassige Losung, nicht optimal. Gesamtnutzen: blau.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 20

Page 22: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

b321 aaaan

c c

c

1 2 3

n

c

b2 aa na 3a 1

2 3

n

c c c

c

1

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

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 21

Page 23: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.1.2

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

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

O.B.d.A.:∑

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

Sei (λ1, . . . , λn) ∈ [0, 1]n die Ausgabe des Algorithmus.

Laufzeit: klar.

Korrektheit: Zulassigkeit klar. Zu zeigen: Optimalitat.

Sei (λ′1, . . . , λ′n) ∈ [0, 1]n eine optimale Losung.

Offensichtlich:∑

i λ′iai = b (sonst verbesserbar).

Durch Induktion uber n zeigen wir:∑

i λici =∑

i λ′ici .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 22

Page 24: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

Ind.-Schritt: n > 1.

1. Fall: a1 ≥ b.

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

λ1c1 = bd1 = (∑

i λ′iai )d1 ≥

∑i λ′iaidi =

∑i λ′ici .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 23

Page 25: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

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

Behauptung: Wir konnen o.B.d.A. λ′1 = 1 annehmen.

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

Denn: Wenn λ′1 < 1, kann man wegen∑

1≤i≤n λ′iai = b

Werte λ′′1 = 1, 0 ≤ λ′′2 ≤ λ′2, . . . , 0 ≤ λ′′n ≤ λ′n finden, so dass

(1− λ′1)a1 =∑

2≤i≤n(λ′i − λ′′i )ai . (∗)

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

Dann ist (λ′′1, . . . , λ′′n) zulassig und∑

i

λ′′i ci =∑i

λ′ici +(

(1− λ′1)a1d1 −∑

2≤i≤n(λ′i − λ′′i )aidi

).

Aus (∗) und d1 ≥ di folgt, dass die letzte Klammer nichtnegativ ist, also∑i λ′′i ci ≥

∑i λ′ici gilt. (Sogar Gleichheit.)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 24

Page 26: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Wissen nun: 1 = λ1 = λ′1.

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

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

Klar: (λ′2, . . . , λ′n) muss fur x− optimal sein.

(Wenn (λ′′2 , . . . , λ′′n ) besser ware, dann ware (1, λ′′2 , . . . , λ

′′n ) eine bessere Losung

fur x als (1, λ′2, . . . , λ′n). Das kann nicht sein.)

Nach I.V. gilt∑

2≤i≤n λici =∑

2≤i≤n λ′ici .

Also haben auch die Losungen (1, λ′2, . . . , λ′n) und (1, λ2, . . . , λn) fur x

denselben Nutzenwert. �

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 25

Page 27: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

An den Beispielen zu beobachtende Charakteristika der Greedy-Methode:

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

2

”Prinzip der optimalen Substruktur“: Entfernt man aus einer

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

3 Der Korrektheitsbeweis wird mit vollstandiger Induktion gefuhrt.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 26

Page 28: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

3.2 Huffman-Codes

Gegeben: Alphabet Σ und”Wahrscheinlichkeiten“

p(a) ∈ [0, 1] fur jeden Buchstaben a ∈ Σ. Also:∑a∈Σ

p(a) = 1.

Beispiel:

a A B C D E F G H I Kp(a) 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09

Herkunft der Wahrscheinlichkeiten:(1) Buchstabenhaufigkeit in naturlicher Sprache oder(2) empirische relative Haufigkeiten in einemgegebenen Text w = a1 . . . an:Anteil des Buchstabens a an w ist (p(a) · 100)%.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 27

Page 29: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Gesucht: ein”

guter“ binarer Prafixcode fur (Σ, p).

Definition 3.2.1

Prafixcode:Jedem a ∈ Σ ist binarer

”Code“ c(a) ∈ {0, 1}+ zugeordnet,

mit Eigenschaft Prafixfreiheit:Fur a, b ∈ Σ, a 6= b ist c(a) kein Prafix von c(b).

Beispiel:

A B C D E F G H I K

1100 0110 000 111 10 0011 010 0010 0111 1101

Codierung von Wortern (Zeichenreihen):

c(a1 . . . an) = c(a1) · · · c(an) ∈ {0, 1}∗.Zur Codierung benutzt man (konzeptuell) direkt die Tabelle.

Beispiel: c(F E I G E ) = 0011 10 0111 010 10.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 28

Page 30: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Kompakte Reprasentation des Codes als Binarbaum:

A K

D

B

G

I

C

H F

0

0

0

0

0

0 0

0

0

1

1

1

11

1

1

1

1

E

Blatter sind mit Buchstaben markiert; Weg von der Wurzel zum Blatt gibtdas Codewort wieder (links: 0, rechts: 1).

Decodierung: Laufe Weg im Baum, vom Codewort gesteuert, bis zumBlatt. Wiederhole mit dem Restwort, bis nichts mehr ubrig ist. –Prafixeigenschaft ⇒ keine Zwischenraume notig.

Beispiel: 001111000000010 liefert”FACH“.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 29

Page 31: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

1. Idee: Mache alle Codeworter c(a) gleich lang;am besten ist dann eine Lange von dlog2 |Σ|e Bits.

⇒ c(a1 . . . an) hat Lange dlog2 |Σ|e · n.

(Beispiele: 52 Groß- und Kleinbuchstaben plus Leerzeichen und Satzzeichen:log 64 = 6 Bits pro Codewort. ASCII-Code: 8 Bits pro Codewort.)

2. Idee: Einsparmoglichkeit: Haufige Buchstaben mit kurzeren Codescodieren als seltenere Buchstaben.

Ein erster Ansatz zur Datenkompression(platzsparendes Speichern, zeitsparendes Ubermitteln)!

Hier:”

verlustfreie Kompression“ – die Information ist unverandertvorhanden.

Gegensatz: MP3: Informationsverlust bei der Kompression.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 30

Page 32: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

A B C D E F G H I Kp(a) 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09c1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001c2 1100 0110 000 111 10 0011 010 0010 0111 1101

Wir codieren eine Datei T mit 100000 Buchstaben aus Σ, wobei dierelative Haufigkeit von a ∈ Σ durch p(a) gegeben ist.

Mit c1 (fixe Codewortlange): 400000 Bits.Mit c2 (variable Codewortlange):(4 · (0, 15 + 0,08 + 0,08 + 0,09 + 0,06 + 0,09) + 3 · (0,07 + 0,10 + 0,07) +2 · 0,21) · 100000 = 334000 Bits.

Bei langen Dateien und wenn die Ubertragung teuer oder langsam ist, lohnt es

sich, die Buchstaben abzuzahlen, die relativen Haufigkeiten p(a) zu bestimmen

und einen guten Code mit unterschiedlichen Codewortlangen zu suchen.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 31

Page 33: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Definition 3.2.2

Ein Codierungsbaum fur Σ ist ein Binarbaum T , in dem

die Kante in einem inneren Knoten zum linken bzw. rechten Kind(implizit) mit 0 bzw. 1 markiert ist;jedem Buchstaben a ∈ Σ ein Blatt (externer Knoten) von T exklusivzugeordnet ist.

cT (a) ist die Kanteninschrift auf dem Weg von der Wurzel zum Blatt mitInschrift a.Die Kosten von T unter p sind definiert als:

B(T,p) =∑a∈Σ

p(a) · dT (a),

wobei dT (a) die Tiefe des a-Blatts in T ist.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 32

Page 34: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beispiel: Wenn T unser Beispielbaum ist und p die Beispielverteilung vonoben, dann ist B(T , p) = 3,34.

A K

D

B

G

I

C

H F

0

0

0

0

0

0 0

0

0

1

1

1

11

1

1

1

1

E

Leicht zu sehen: B(T , p) = |cT (a1 . . . an)|/n, wenn die relative Haufigkeit von a inw = a1 . . . an durch p(a) gegeben ist,

oder B(T , p) = die erwartete Bitzahl pro Buchstabe, wenn dieBuchstabenwahrscheinlichkeiten durch p(a), a ∈ Σ, gegeben sind.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 33

Page 35: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Definition 3.2.3

Ein Codierungsbaum T fur Σ heißt optimal oderredundanzminimal fur p, wenn B(T , p) ≤ B(T ′, p)fur alle Codierungsbaume T ′ fur Σ.

Aufgabe: Zu gegebenem p : Σ→ [0, 1] finde einen optimalen Baum T .

Existiert immer ein optimaler Baum?

(Zu Σ gibt es unendlich viele Codierungsbaume!)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 34

Page 36: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Lemma 3.2.4

Wenn T Codierungsbaum und p Verteilung fur Σ ist, dann gibt es einenCodierungsbaum T ′ mit B(T ′, p) ≤ B(T , p), so dass in T ′ jeder innereKnoten zwei Kinder hat.

Beweisidee:

T: T’:w

x v

u

w

x u

1

0

1

Umbau:

fehltTx

Tu

Tx TuÜberspringe v

Resultat: T ′ fur Σ mit denselben markierten Blattern wie T , undB(T ′, p) ≤ B(T , p).

Folgerung: Man kann sich bei der Suche nach optimalen Baumen auf solchebeschranken, in denen jeder innere Knoten zwei Kinder hat.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 35

Page 37: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Weil es fur festes Σ nur endlich viele Σ-Codierungsbaume T gibt, in denenjeder innere Knoten zwei Kinder hat, gibt es fur (Σ, p) optimaleCodierungsbaume.

Optimale Baume sind i. A. nicht eindeutig.

Aufgabe: Gegeben (Σ, p), finde einen optimalen Baum.

Methode:”

Greedy“.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 36

Page 38: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Lemma 3.2.5

Es seien a, a′ zwei Buchstaben mit p(a), p(a′) ≤ p(b) fur alleb ∈ Σ− {a, a′}. (a, a′ sind zwei

”seltenste“ Buchstaben.)

Dann gibt es einen optimalen Baum, in dem die a- und a′-Blatter Kinderdesselben inneren Knotens sind.

Beweis:

Starte mit beliebigem optimalen Baum T .

O.B.d.A. (Le. 3.2.4): Alle inneren Knoten haben zwei Kinder.

a und a′ sitzen in Blattern von T , Tiefen dT (a) und dT (a′).

O.B.d.A.: (∗) dT (a) ≥ dT (a′) (sonst umbenennen).

Der a-Knoten hat einen Geschwisterknoten v(innerer Knoten oder Blatt).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 37

Page 39: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

a’

T :v

T:

a v

1. Fall: Der a′-Knoten liegt im Unterbaum Tv mit Wurzel v .Wegen (∗) muss er gleich v sein, und a-Knoten und a′-Knoten sindGeschwisterknoten in T .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 38

Page 40: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

vT :

T:

a

a’

v

2. Fall: Der a′-Knoten liegt nicht in Tv .Weil Tv mindestens ein Blatt hat und p(b) ≥ p(a′) fur alle b ∈ Σ− {a, a′}gilt, haben wir ∑

b in Tv

p(b) ≥ p(a′).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 39

Page 41: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

T :v

T :v

T’:T:

a

a’

a a’v

v

Vertauschen von Blatt a′ und Tv liefert Baum T ′, in dem a und a′

Geschwister sind, mit:

B(T ′, p)− B(T , p) = (dT (a)− dT (a′)) · (p(a′)−∑

b in Tv

p(b)) ≤ 0.

Das heißt: auch T ′ ist ein optimaler Baum fur (Σ, p). �

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 40

Page 42: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Damit ist der erste Schritt zur Realisierung eines Greedy-Ansatzes getan!

Man beginnt den Algorithmus mit

”Mache die beiden seltensten Buchstaben zu Geschwistern“.

Dann ist man sicher, dass dies stets zu einer optimalen Losung ausgebautwerden kann.

Diese optimale Losung findet man rekursiv (konzeptuell) bzw. dann in derRealisierung iterativ.

Algorithmus stammt von D. A. Huffman (1925–1999), am. Informatiker.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 41

Page 43: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Huffman-Algorithmus (rekursiv):

Wir bauen”

bottom-up“ einen Baum auf.

Wenn |Σ| = 1: fertig, man benotigt nur einen Knoten, der auch Blatt ist.Optimalitat: Klar.

Sonst werden zwei”seltenste“ Buchstaben a, a′ aus Σ zu benachbarten

Blattern gemacht.

0 1

a a’

ppa a’

b

p pa a’+

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 42

Page 44: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Die Wurzel des so erzeugten Mini-Baums wird als ein”Kunstbuchstabe“ b

aufgefasst mit p(b) = p(a) + p(a′).

Neues Alphabet: Σ′ := (Σ− {a, a′}) ∪ {b}; neue Verteilung:

p′(d) :=

{p(d) falls d 6= bp(a) + p(a′) falls d = b

Nun bauen wir durch rekursive Verwendung des Algorithmus einen BaumT ′ fur Σ′ und p′.

In T ′ fugen wir an der Stelle des b-Knotens den a, a′-Baum ein.

Ergebnis: Ein Codierungsbaum T fur Σ,mit B(T , p) = B(T ′, p) + (p(a) + p(a′)). (Checken!)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 43

Page 45: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Lemma 3.2.6

T ist optimaler Baum fur (Σ, p).

Beweis: Durch Induktion uber die rekursiven Aufrufe.

Nach Lemma 3.2.5. gibt es einen optimalen Baum T1 fur (Σ, p), in dema- und a′-Knoten Geschwister sind.

Aus T1 bilden wir T ′1 durch Ersetzen des a, a′-Teilbaums durch denKunstknoten b. Dann ist T ′1 Codierungsbaum fur Σ′.

Nach I.V. fur den rekursiven Aufruf ist T ′ optimal fur (Σ′, p′), alsoB(T ′, p′) ≤ B(T ′1, p

′). Daher:

B(T , p) = B(T ′, p′) + p(a) + p(a′)≤B(T ′1, p′) + p(a) + p(a′) = B(T1, p).

Weil T1 optimaler Baum fur (Σ, p) ist:B(T , p) = B(T1, p), und auch T ist optimal. �

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 44

Page 46: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Noch nachzutragen:

Implementierungsdetails.

Laufzeitanalyse.

Vergleich von B(T , p) fur optimale Baume mit der Entropie H((pa)a∈Σ).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 45

Page 47: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Man konnte nach dem angegebenen Muster eine rekursive Prozedurprogrammieren.

PQ: Datenstruktur Priority Queue,Eintrage: Buchstaben und Kunstbuchstaben;Schlussel: die Gewichte p(b), b (Kunst-)Buchstabe.

Operationen: PQ.insert: Einfugen eines neuen Eintrags;PQ.extractMin: Entnehmen des Eintrags mit kleinstem Schlussel.

Beide Operationen benotigen logarithmische Zeit (siehe 3.3).

Anfangs in PQ: Buchstaben a ∈ Σ mit Gewichten p(a) als Schlussel.Ermitteln und Entfernen der beiden

”leichtesten“ Buchstaben a, a′ durch

zwei Aufrufe PQ.extractMin;Einfugen des neuen Kunstbuchstabens b durch PQ.insert(b).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 46

Page 48: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Iterative Implementierung wird effizienter.

Eine spezielle Reprasentation des Baums (nur Vorganger-Zeiger, die durch Indizesdargestellt werden) ermoglicht es, ganz ohne Zeiger auszukommen.

Datenstruktur:Arrays p, pred, mark mit Indizes 1..2m − 1, m = |Σ|.Dabei reprasentieren

die Positionen 1, . . . ,m die Buchstaben a1, . . . , am in Σ, also dieBlatter des Baumes,die Positionen m + 1, . . . , 2m − 1 die m − 1

”Kunstbuchstaben“, also

die inneren Knoten des Baums.

Fur den Algorithmus tut man so, als ob 1, . . . ,m die Buchstaben und m +1, . . . , 2m − 1 die

”Kunstbuchstaben“ waren.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 47

Page 49: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

p[1..2m − 1] ist ein Array, das in den Positionen 1, . . . ,m die Gewichtep1, . . . , pm enthalt.

Positionen p[m + 1..2m − 1]: Gewichte der m − 1”Kunstbuchstaben“.

Das Array pred[1..2m − 1] speichert die Vorganger der Knoten imBaum(Knoten 2m − 1 ist die Wurzel und hat keinen Vorganger).

In Bitarray mark[1..2m − 1] fuhrt man mit, ob ein Knoten linkes (”0“)

oder rechtes (”1“) Kind ist.

PQ: Priority Queue, Eintrage: a ∈ {1, . . . , 2m − 1};Schlussel: die Gewichte p[a].

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 48

Page 50: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Algorithmus Huffman(p[1..m])Eingabe: Gewichtsvektor p[1..m]

Ausgabe: Implizite Darstellung eines Huffman-Baums(1) for a from 1 to m do(2) PQ.insert(a); (∗ Buchstabe a hat Prioritat p[a] ∗)(3) for b from m + 1 to 2m − 1 do(4) a ← PQ.extractMin;(5) aa ← PQ.extractMin;(6) pred[a] ← b;(7) mark[a] ← 0;(8) pred[aa] ← b;(9) mark[aa] ← 1;(10) p[b] ← p[a] + p[aa];(11) PQ.insert(b);(12) Ausgabe: pred[1..2m − 1] und mark[1..2m − 1].

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 49

Page 51: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Aus pred[1..2m − 1] und mark[1..2m − 1] baut man denHuffman-Baum wie folgt:

Allokiere ein Array leaf[1..m] mit Blattknoten-Objektenund ein Array inner[m + 1..2m − 1] mit Objekten fur innere Knoten.

(1) for i from 1 to m do(2) leaf[i].letter ← Buchstabe ai.(3) if mark[i] = 0(4) then inner[pred[i]].left ← leaf[i]

(5) else inner[pred[i]].right ← leaf[i]

(6) for i from m + 1 to 2m − 2 do(7) if mark[i] = 0(8) then inner[pred[i]].left ← inner[i]

(9) else inner[pred[i]].right ← inner[i]

(10) return inner[2m − 1] (∗ Wurzelknoten ∗)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 50

Page 52: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred

mark

i 11 12 13 14 15 16 17 18 19

pipred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 53: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 11 11mark 0 1

i 11 12 13 14 15 16 17 18 19

pi 0,13pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 54: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 11 11mark 0 1

i 11 12 13 14 15 16 17 18 19

pi 0,13pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 55: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 12 12 11 11mark 0 1 0 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 56: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 12 12 11 11mark 0 1 0 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 57: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 13 12 12 11 11 13mark 0 0 1 0 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 58: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 13 12 12 11 11 13mark 0 0 1 0 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 59: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 13 12 14 12 11 14 11 13mark 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 60: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 13 12 14 12 11 14 11 13mark 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19pred

mark

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 61: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 12 11 14 11 13mark 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28pred 15mark 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 62: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 12 11 14 11 13mark 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28pred 15mark 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 63: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 12 11 14 11 13mark 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32pred 15 16 16mark 1 0 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 64: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 12 11 14 11 13mark 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32pred 15 16 16mark 1 0 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 65: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40pred 15 16 16 17mark 1 0 1 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 66: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40pred 15 16 16 17mark 1 0 1 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 67: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40 0,60pred 15 16 16 17 18 18mark 1 0 1 1 0 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 68: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40 0,60pred 15 16 16 17 18 18mark 1 0 1 1 0 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 69: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40 0,60 1,00pred 15 16 16 17 18 18 19 19mark 1 0 1 1 0 1 0 1

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 70: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

ai A B C D E F G H I Ki 1 2 3 4 5 6 7 8 9 10

pi 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09pred 15 13 12 14 17 12 11 14 11 13mark 0 0 0 0 0 1 0 1 1 1

i 11 12 13 14 15 16 17 18 19

pi 0,13 0,15 0,17 0,19 0,28 0,32 0,40 0,60 1,00pred 15 16 16 17 18 18 19 19 –mark 1 0 1 1 0 1 0 1 –

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 51

Page 71: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Resultierender optimaler Codierungsbaum T :

1 1 1

1

1

1

11

1

0

19

17 18

14 15 16

11 12 13

5

4 8 1

7 9 3 6 2 10

0

0 0

0

0 0

0

0

E

D A

G I F B KC

H

A B C D E F G H I Kp(a) 0,15 0,08 0,07 0,10 0,21 0,08 0,07 0,09 0,06 0,09c3 100 1110 1100 010 00 1101 1010 011 1011 1111

B(T , p) = 0,21 · 2 + (0,1 + 0,09 + 0,15) · 3 + 0,45 · 4 = 3,24.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 52

Page 72: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.2.7

Der Algorithmus Huffman ist korrekt und hat Laufzeit O(m logm), wennm die Anzahl der Buchstaben des Alphabets Σ bezeichnet.

Beweis: Laufzeit: Aufbau der Priority Queue dauert O(m logm); mit Trickskonnte man auch mit Zeit O(m) auskommen.

Die Schleife wird (m − 1)-mal durchlaufen. In jedem Durchlauf gibt esmaximal 3 PQ-Operationen, mit Kosten O(logm).

Korrektheit: Folgt aus der Korrektheit der rekursiven Version.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 53

Page 73: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Kann man B(T , p) fur einen optimalen Baum einfach aus denHaufigkeiten p(a1), . . . , p(am) berechnen, ohne T zu konstruieren?

Antwort: Ja, zumindest naherungsweise.

Definition

Sind p1, . . . , pm ≥ 0 mit∑m

i=1 pi = 1, setzt man

H(p1, . . . ,pm) :=m∑i=1

pi · log(1/pi ).

H(p1, . . . , pm) heißt die Entropie der Verteilung p1, . . . , pm.

(Wenn pi = 0 ist, setzt man pi log(1/pi ) = 0, was vernunftig ist, weillimx↘0 x · log(1/x) = 0.)

Bsp.: H( 12 ,

14 ,

14 ) = 1

2 · 1 + 2 · 14 · 2 = 3

2 .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 54

Page 74: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Interessant: Zusammenhang zwischen Entropie H(p1, . . . , pm) und dererwarteten Bitlange eines Textes, in dem m = |Σ| Buchstaben mitWahrscheinlichkeiten p1, . . . , pm auftreten.

Klassisches Resultat:

Lemma 3.2.8 (Lemma von Gibb)

Sind q1, . . . , qm > 0 mit∑m

i=1 qi ≤ 1 =∑m

i=1 pi , so gilt

m∑i=1

pi log(1/qi ) ≥m∑i=1

pi log(1/pi ) = H(p1, . . . , pm).

(Voraussetzung kann zu pi > 0⇒ qi > 0 abgeschwacht werden.)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 55

Page 75: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beweis:

Weil log2 x = ln x/ ln 2 ist, darf man mit dem naturlichen Logarithmusrechnen.

m∑i=1

pi ln

(1

pi

)−

m∑i=1

pi ln

(1

qi

)

=m∑i=1

pi ln

(qipi

)(∗)≤

m∑i=1

pi

(qipi− 1

)

=m∑i=1

(qi − pi ) =m∑i=1

qi −m∑i=1

pi ≤ 0.

(∗): Es gilt ln(x) ≤ x − 1, fur alle x ∈ R. (Summanden fur i mit pi = qi = 0

lasst man einfach weg.)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 56

Page 76: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.2.9 (Ungleichung von Kraft/McMillan)

Es seien m ≥ 1, l1, . . . , lm ∈ N. Dann gilt: Es gibt einen Prafixcode mitCodewortlangen l1, . . . , lm genau dann wenn

m∑i=1

2−li ≤ 1.

”⇒“: Nach den Bemerkungen am Anfang von Abschnitt 3.2 kann man

statt”Existenz eines Prafixcodes“ auch

”Existenz eines Binarbaums mit

Blattern auf Tiefe l1, . . . , lm“ sagen.

http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2011/

algorithmen-und-datenstrukturen/

AuD-Vorlesung 2011, 3. Kapitel, Lemma 3.3.4, Folie 44.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 57

Page 77: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

”⇐“: Nun seien l1, . . . , lm ≥ 0 gegeben, mit

∑mi=1 2−li ≤ 1. Wir benutzen

Induktion uber m ≥ 1(aquivalent: einen rekursiven Algorithmus),um die behauptete Existenz eines passenden prafixfreien Codes zu zeigen.

m = 1: Wahle ein beliebiges Codewort x1 aus {0, 1}l1 .(Achtung: Wenn l1 = 0, ist x1 = ε, das leere Wort. Dies entspricht einemCodierungsbaum, der nur aus der Wurzel besteht.)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 58

Page 78: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Nun sei m ≥ 2. Wir ordnen (o.B.d.A.) die l1, . . . , lm so an, dassl1 ≥ l2 ≥ · · · ≥ lm gilt. Nach Vor.:

∑mi=2 2l1−li < 2l1 ;

die Summe ist durch 2l1−l2 teilbar.

Also:∑m

i=2 2l1−li ≤ 2l1 − 2l1−l2 .

Daraus: 2 · 2l1−l2 +∑m

i=3 2l1−li ≤ 2l1 , d. h.

2−(l2−1) +∑m

i=3 2−li ≤ 1.

Setze l ′1 := l2 − 1 und finde (nach Induktionsvoraussetzung bzw. rekursiv)einen Prafixcode {x ′1, x3, x4, . . . , xm} fur l ′1, l3, . . . , lm. Nun bilde x2 := x ′11und x1 := x ′10 . . . 0 (mit l1 − l2 + 1 angehangten Nullen). Es ist leicht zusehen, dass auch {x1, . . . , xm} prafixfrei ist.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 59

Page 79: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beispiel:

(l1, . . . , l6) = (1, 4, 5, 3, 6, 3); sortiert: (6, 5, 4, 3, 3, 1).

Dies fuhrt zu rekursiven Aufrufen fur:

1) (4, 4, 3, 3, 1)

2) (3, 3, 3, 1)

3) (2, 3, 1), sortiert: (3, 2, 1)

4) (1, 1)

5) (0).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 60

Page 80: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Die Prafixcodes fur diese Aufrufe:

5) {ε}4) {0, 1}3) {000, 01, 1}, also {01, 000, 1}2) {010, 011, 000, 1}1) {0100, 0101, 011, 000, 1}

Gesamtlosung: {010000, 01001, 0101, 011, 000, 1}

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 61

Page 81: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.2.10 (Huffman versus Entropie)

Ist p : Σ→ [0, 1] mit∑

a∈Σ p(a) = 1 gegeben, so gilt fur einen optimalenCodierungsbaum T zu (Σ, p):

H(p1, . . . , pm) ≤ B(T , p) ≤ H(p1, . . . , pm) + 1.

(Informal: Setze pi = p(ai ), fur Σ = {a1, . . . , am}.Die erwartete Zahl von Bits, die man braucht, um einen Text t1 . . . tN uberΣ zu codieren, liegt zwischen N · H(p1, . . . , pm) undN · (H(p1, . . . , pm) + 1).)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 62

Page 82: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beweis: 1. Ungleichung: Es seien l1, . . . , lm die Tiefen der Blatter in T zuden Buchstaben a1, . . . , am. Dann gilt

∑mi=1 2−li ≤ 1 nach Satz 3.2.9.

Damit konnen wir Lemma 3.2.8 mit qi = 2−li anwenden und erhalten

B(T , p) =m∑i=1

pi · li =m∑i=1

pi · log(1/2−li ) ≥ H(p1, . . . , pm).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 63

Page 83: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Fur die 2. Ungleichung genugt es zu zeigen, dass ein Codierungsbaum T ′

fur a1, . . . , am existiert, in dem B(T ′, p) ≤ H(p1, . . . , pm) + 1 gilt.

(Der optimale Baum T erfullt ja B(T , p) ≤ B(T ′, p).)

Wir setzen li := dlog(1/pi )e, fur 1 ≤ i ≤ m, und beobachten:

m∑i=1

2−li =m∑i=1

2−dlog(1/pi )e ≤m∑i=1

2− log(1/pi )

=m∑i=1

pi = 1.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 64

Page 84: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Nach Satz 3.2.9 existiert also ein Prafixcode mit Codewortlangen(l1, . . . , lm); im entsprechenden Codierungsbaum T ′ ordnen wir dem Blattauf Tiefe li den Buchstaben ai zu. Dann ist

B(T ′, p) =m∑i=1

pi · li ≤m∑i=1

pi · (log(1/pi ) + 1)

= H(p1, . . . , pm) +m∑i=1

pi

= H(p1, . . . , pm) + 1.

Bemerkung: Es gibt bessere Kodierungsverfahren als das von Huffman(z.B.

”arithmetische Kodierung“; diese vermeiden den Verlust von bis zu

einem Bit pro Buchstabe), aber Huffman-Kodierung ist ein guter Anfang. . .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 65

Page 85: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

3.3 (Hilfs-)Datenstruktur Priority Queues(oder: Vorrangswarteschlangen)

Datensatze mit Schlussel aus sortiertem Universum (U, <) werdeneingefugt und entnommen.

Beim Entnehmen wird immer der Eintrag mit dem kleinsten Schlusselgewahlt. Schlussel =

”Prioritaten“.

Beim Huffman-Algorithmus: Datensatze sind(Kunst-)Buchstaben, Prioritaten/Schlussel sind die Gewichte.

Vorlesung”Algorithmen und Datenstrukturen“:

Spezifikation und Realisierung mit Binarheaps.

http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2011/

algorithmen-und-datenstrukturen/, Kapitel 6.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 66

Page 86: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Operationen:

empty – leere PQ anlegen.

isempty – PQ auf Leerheit prufen.

insert – neues Element einfugen.

extractMin – ein Element mit kleinster Prioritat loschen.

decreaseKey – die Prioritat eines Elements in der PQ senken.

Wir nutzen zur Implementierung von Prioritatswarteschlangen Binarheaps.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 67

Page 87: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Ein linksvollstandiger Binarbaum:

Alle Levels j = 0, 1, . . . voll (jeweils 2j Knoten) bis auf das tiefste.Das tiefste Level l hat von links her gesehen eine ununterbrochene Folgevon Knoten.Konnen gut als Arrays dargestellt werden!

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 68

Page 88: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Nummerierung von Knoten in unendlichem, vollstandigen Binarbaum inLevelorder:

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2

1

54

8 9 10 11

3

6

12 13

7

14 15

474632 63

0

0

0

0

00 0

0

0

0

0

0

00 0

1

1

1

1

11

11

1

1

11

0 1

1

10

1

Zeiger zum linken bzw. rechten Kind mit 0 bzw. 1 markiert.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 69

Page 89: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Knoten 1 ist die Wurzel;Knoten 2i ist linkes Kind von i ;Knoten 2i + 1 ist rechtes Kind von i ;Knoten i ≥ 2 hat Vater bi/2c.Damit: Array-Darstellung fur linksvollstandige Binarbaume:Speichere Eintrage in Knoten 1, . . . , n in Array A[1 . . n].Spart den Platz fur die Zeiger!

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 70

Page 90: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Definition 3.3.1

Sei (U, <) Totalordnung.Ein (Teil-)Array A[1 . . k] ist ein Heap, falls fur 1 ≤ i ≤ k gilt:2i ≤ k ⇒ A[i].key ≤ A[2i].key und2i + 1 ≤ k ⇒ A[i].key ≤ A[2i + 1].key.

Aufgrund besserer Darstellbarkeit betrachten wir im weiteren Verlauf dieBaumdarstellung.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 71

Page 91: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

B

FE

H FE

P N

G

N

NB: T heapgeordnet ⇒ in Knoten v steht der minimale Eintrag desTeilbaums Tv mit Wurzel v .

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 72

Page 92: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beispiel: U = {A, B, C, . . . ,Z} mit der Standardordnung.

Im Beispiel: Daten weggelassen.

Ein Min-Heap und der zugeordnete Baum (k = 10):

121198 107654321

* *1

2 3

4 5 7

8 9 10

G F

H I

B

E F

G

E H

B E F G E H F H I G

6

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 73

Page 93: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Implementierung einer Priority Queue: Neben Array A[1 . .m]:

Pegel k: Aktuelle Zahl k von Eintragen.

(Uberlaufprobleme werden ausgeklammert. Verdoppelungsstrategie, falls notig.)

empty(m):Lege Array A[1 . .m] an;(∗ Jeder Eintrag ist ein Paar (key, data). ∗)k ← 0.

(∗ Zeitaufwand: O(1) oder O(m) ∗)

isempty():return(k = 0);

(∗ Zeitaufwand: O(1) ∗)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 74

Page 94: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

extractMin: Implementierung von extractMin(P):

Ein Eintrag mit minimalem Schlussel steht in der Wurzel, d. h. inArrayposition 1.

Entnehme A[1] (hier”B“) und gib es aus.

121198 107654321

* *1

2 3

4 5 7

8 9 10

G F

H I

B

E F

G

E H

B E F G E H F H I G

6

”Loch“ im Binarbaum. –

”stopfen“ mit dem letzten Eintrag.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 75

Page 95: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

extractMin: Implementierung von extractMin(P):

Ein Eintrag mit minimalem Schlussel steht in der Wurzel, d. h. inArrayposition 1.

Entnehme A[1] (hier”B“) und gib es aus.

1198 10765 124321

**

*

1

2

4 5 6 7

8 9 10

G F

H I

E F

E H

E F G E H F H I

3

G

G *

”Loch“ im Binarbaum. –

”stopfen“ mit dem letzten Eintrag.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 75

Page 96: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heaps reparieren

*

<

<

8 9 11

*

6 10

*

543 71 122

E

E

E

E

G

G

FG

98

H

764

32

H

1

I

F

F

H F H IG

5

Vergleich der beiden Kinder des aktuellen Knotens.Vergleich des

”kleineren“ Kinds mit dem aktuellen Knoten.

Vertauschen des”kleineren“ Kinds (E) mit dem aktuellen Knoten (G).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 76

Page 97: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heaps reparierenErgibt Abwarts-Fast-Heap, aktueller Knoten ein Level tiefer.

*

>

>

8 9 11

*

6 10

*

543 71 122

E

E

G

G

E

E

FG

98

H

764

32

H

1

I

F

F

H F H IG

5

Vergleich der beiden Kinder des aktuellen Knotens.Vergleich des

”kleineren“ Kinds mit dem aktuellen Knoten.

Vertauschen des”kleineren“ Kinds (E) mit dem aktuellen Knoten (G).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 76

Page 98: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heaps reparierenErgibt Abwarts-Fast-Heap, aktueller Knoten ein Level tiefer.

*

8 9 11

*

6 10

*

543 71 122

E

E G

G

E

E

FG

98

H

764

32

H

1

I

F

F

H F H IG

5

Aktueller Knoten hat keine Kinder.Kein Fehler mehr: Reparatur beendet.Andere Moglichkeit fur Ende: Eintrag im aktuellen Knoten ist nicht großerals der im

”kleineren Kind“.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 76

Page 99: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Erinnerung: Wenn A ein Abwarts-Fast-Heap bzgl. Stelle k ist, dann gibt eseinen Schlussel z ≤ A[k].key, so dass ein Heap entsteht, wenn manA[k].key durch z ersetzt.

Lemma 3.3.2

Sei A ein Abwarts-Fast-Heap bzgl. Stelle k .

1 Falls A[k] maximal so groß wie jeder seiner Kindschlussel ist (soferndiese existieren), dann ist A ein Heap.

2 Sei A[m] das kleinste Kind von A[k] und A[k] > A[m]. NachVertauschen von A[k] und A[m] ist A ein Abwarts-Fast-Heap bzgl.Stelle m.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 77

Page 100: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Beweis von Lemma 3.3.2. Fur die nachstehenden Uberlegungen istfolgendes Bild nutzlich, welches die Beziehungen zwischen den Prioritatenverdeutlicht, die aus der Eigenschaft

”Abwarts-Fast-Heap an Stelle k“

folgen:

y

x

c1 c2

y ≤ z

z ≤ x

c1 ≥ z c2 ≥ z

bk/2c

k

O.B.d.A. nehmen wir an, dass m = 2k . Das linke Kind (c1) ist also daskleinere Kind. (Sonst: Umbenennen!)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 77

Page 101: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

1. Fall: Es gilt c1 ≥ x und c2 ≥ x . Des Weiteren gilt (immer) y ≤ x . WennA mit A[k]← z ein Heap ist, dann auch mit A[k] = x .

2. Fall: Wir vertauschen in 2 Schritten:

1 Setze A[k]← c1. Da y ≤ z und z ≤ c1, ist also y ≤ c1. Damit ist A,unter der Voraussetzung dass A ein Abwarts-Fast-Heap bzgl. Stelle kist, ein Heap.

2 Setze A[m]← x . Damit wird A ein Abwarts-Fast-Heap bezuglichStelle m.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 77

Page 102: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

bubbleDown(1, k) (∗ Heap-Reparatur in A[1 . . k] ∗)(∗ Muss wissen: A[1 . . k] ist Abwarts-Fast-Heap bzgl. Position 1 ∗)

(1) j ← 1; m ← 2; done ← false;(2) while not done and m + 1 ≤ k do

(∗ Abwarts-Fast-Heap bzgl. Position j, A[j] hat 2 Kinder ∗)(3) if A[m+1].key < A[m].key

(4) then (∗ A[m]:”kleineres“ Kind ∗)

(5) m ← m + 1;(6) if A[m].key < A[j].key

(7) then vertausche A[m] mit A[j]; j ← m; m ← 2 ∗ j;(8) (∗ nun wieder: Abwarts-Fast-Heap bzgl. j ∗)(9) else (∗ fertig, kein Fehler mehr ∗)(10) done ← true;(11) if not done then(12) if m ≤ k then (∗ Abwarts-Fast-Heap bzgl. j, ein Kind in A[m] ∗)(13) if A[m].key < A[j].key

(14) then vertausche A[m] mit A[j];

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 78

Page 103: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Korrektheit: Folgt unmittelbar aus den Uberlegungen aus Lemma 3.3.2.

Kosten:

Im Binarbaum gibt es maximal dlog(k + 1)e Levels; fur jedes Levelmaximal einen Schleifendurchlauf.

Also Kosten: O(log k).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 79

Page 104: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

extractMin(∗ Entnehmen eines minimalen Eintrags aus Priority-Queue ∗)(∗ Ausgangspunkt: Pegel k, A[1 . . k] ist Heap, k ≥ 1 ∗)

(1) x← A[1].key; d← A[1].data;(2) A[1]← A[k];(3) k--;(4) if k > 1 then bubbleDown(1, k);(5) return (x, d);

Korrektheit: klar wegen Korrektheit von bubbleDown(1, k).

Zeitaufwand: O(log(k)).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 80

Page 105: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Implementierung von insert(x , d):

Voraussetzung: A[1..k] ist Heap; 1 ≤ i ≤ k < m.

k++;A[k]← (x , d).

An der Stelle k ist nun eventuell die Heapeigenschaft gestort(x zu klein).

Wir nennen A[1..k] einen Aufwarts-Fast-Heap bzgl. k .

Heißt: Es gibt einen Schlussel z ≥ A[k].key, so dass ein Heap entsteht,wenn man A[k].key durch z ersetzt.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 81

Page 106: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heap:

* *Q

Q

L

L

H

H

F

F

K

K

J

JG

GF

F

E

E

C

C

2 121198 10765431

1098

654

32

1

7

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 107: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Einfugen von”D“ an Stelle k = 11.

11

*

D

DQ

Q

L

L

H

H

F

F

K

K

J

JG

GF

F

E

E

C

C

2 121198 10765431

1098

654

32

1

7

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 108: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

*D

D

Q

Q

L

L

H

H

F

F

K

KJ

JG

G

F

F

E

E

C

C

98 10 11 12654321 7

98 10

54

32

1

76

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 109: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

J

J

D

D *Q

Q

L

L

H

H

F

F

K

KG

GF

F

E

E

C

C

2 3 121198 1076541

1098

754

32

1

6

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 83

Page 110: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

J

J

D

D *Q

Q

L

L

H

H

F

F

K

KG

GF

F

E

E

C

C

32 4 121198 107651

1098

754

32

1

6

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 111: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

E

E

D

D

J

J *Q

Q

L

L

H

H

F

F

K

K

G

G

F

F

C

C

98 10 11 12654321 7

98 10

654

32

1

7

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 112: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

E

E

D

D

J

J *Q

Q

L

L

H

H

F

F

K

K

G

G

F

F

C

C

98 10 11 12654321 7

98 10

54

32

1

76

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 113: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Heapreparatur mittels bubbleUp.

11

E

E

D

D

J

J *Q

Q

L

L

H

H

F

F

K

K

G

G

F

F

C

C

98 10 11 12654321 7

98 10

54

32

1

76

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 82

Page 114: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Lemma 3.3.3

Sei A ein Aufwarts-Fast-Heap bzgl. j .

1. Falls j = 1 oder A[j] ≥ A[bj/2c] dann ist A ein Heap.

2. Sei j > 1 und A[j] < A[bj/2c]. Nach Vertauschen von A[j] undA[bj/2c] ist A ein Aufwarts-Fast-Heap bzgl. Stelle bj/2c.

Beweis:

1. Erinnerung: Wenn A Aufwarts-Fast-Heap an Stelle j ist, dann existiertSchlussel z ≥ A[j].key, so dass ein Heap entsteht, wenn manA[j].key durch z ersetzt.

Es folgt, dass Schlussel A[j].key maximal so groß ist wie dieKindschlussel. (Diese sind mindestens so groß wie z .) NachVoraussetzung ist er nicht kleiner als Vaterschlussel (falls existent),also ist A ein Heap.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 83

Page 115: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

2. Wir betrachten das folgende Bild.

y

x

c1 c2

y ≤ z

x < y ≤ z

c1 ≥ z c2 ≥ z

bj/2c

j

Wir vertauschen in 2 Schritten:1 Uberschreibe A[j] mit y . Dies liefert nach Voraussetzung einen Heap.2 Uberschreibe A[bj/2c] mit x . Nun ist A ein Aufwarts-Fast-Heap bzgl.

Stelle bj/2c.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 84

Page 116: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Prozedur bubbleUp(i) (∗ Heapreparatur ab A[i] nach oben,Aufruf nur wenn A ein Aufwarts-Fast-Heap bzgl. Stelle i ist. ∗)

(1) j ← i ;(2) h ← j div 2;(3) while h ≥ 1 and A[h].key < A[j].key do(4) vertausche A[j] mit A[h];(5) j ← h;(6) h ← j div 2.

Klar: Wenn A Aufwarts-Fast-Heap bzgl. Stelle i ist, so ist A nach Aufrufvon bubbleUp(i) ein Heap. (Folgt unmittelbar aus den Uberlegungen vonLemma 3.3.3.)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 85

Page 117: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

11

E

E

D

D

J

J *Q

Q

L

L

H

H

F

F

K

K

G

G

F

F

C

C

98 10 11 12654321 7

98

7

10

54

32

1

6

Anschaulich: Auf dem Weg von A[i] zur Wurzel werden alle Elemente,deren Schlussel großer als x (= der neue Eintrag in A[i]) ist, um einePosition (auf dem Weg) nach unten gezogen.

Eintrag A[i] landet in der freigewordenen Position.

Man kann dies auch effizienter (wie in StraigtInsertionSort) programmieren.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 86

Page 118: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Prozedur insert(x , d)(∗ Einfugen eines neuen Eintrags in Priority-Queue ∗)(∗ Ausgangspunkt: Pegel k, A[1 . . k] ist Heap, k < m ∗)

(1) if k = m then”Uberlauf-Fehler“;

(2) k++;(3) A[k]← (x , d);(4) bubbleUp(k).

Korrektheit: klar wegen Korrektheit von bubbleUp(k).

Zeitaufwand: O(log(k)).

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 87

Page 119: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Wir konnen bubbleUp(i) sogar fur eine etwas allgemeinere Operationverwenden (Korrektheitsbeweis gilt weiter):Wir ersetzen einen beliebigen Schlussel im Heap (Position i) durch einenkleineren. (Dadurch ist A ein Aufwarts-Fast-Heap bzgl. Stelle i .)

Wie zuvor: Mit bubbleUp(i) kann die Heapeigenschaft wieder hergestelltwerden.

Prozedur decreaseKey(x , i)(∗ (Erniedrigen des Schlussels an Arrayposition i auf x) ∗)

(1) if A[i].key < x then Fehlerbehandlung;(2) A[i].key ← x ;(3) bubbleUp(i).

(∗ Zeitaufwand: O(log(i)) ∗)

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 88

Page 120: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Satz 3.3.4

Der Datentyp “Priority Queue” kann mit Hilfe eines Heaps implementiertwerden.Dabei erfordern empty und isempty (und das Ermitteln des kleinstenEintrags) konstante Zeitund insert, extractMin und decreaseKey benotigen jeweils Zeit O(log n).

Dabei ist n jeweils der aktuelle Pegelstand, also die Anzahl der Eintrage inder Priority Queue.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 89

Page 121: (nach Folien von Prof. Martin Dietzfelbinger) · Greedy -Algorithmen sind anwendbar bei Konstruktionsaufgaben zum Finden einer optimalen Struktur. Sie nden eine L osung, die sie schrittweise

Technisches Problem:

Wie soll man der Datenstruktur”mitteilen“, welches Objekt gemeint

ist, wenn decreaseKey auf einen Eintrag angewendet werden soll?

Bei (binarem) Heap: Positionen der Eintrage im Array andern sich dieganze Zeit, durch die durch insert und extractMin verursachtenVerschiebungen im Array.

Technisch unsauber (widerspricht dem Prinzip der Kapselung einerDatenstruktur):dem Benutzer stets mitteilen, an welcher Stelle im Array ein Eintrag sitzt.

Wir werden einen Losungsansatz in einer Ubungsaufgabe besprechen.

FG KTuEA, TU Ilmenau Effiziente Algorithmen – Sommersemester 2012 90