Erinnerung: das Knapsack-Problem

Ähnliche Dokumente
Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen

Gierige Algorithmen Interval Scheduling

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

7. Sortieren Lernziele. 7. Sortieren

Dynamisches Huffman-Verfahren

Referat zum Thema Huffman-Codes

Datenstrukturen & Algorithmen

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

15 Optimales Kodieren

Algorithmen und Datenstrukturen 2

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

ADS: Algorithmen und Datenstrukturen 2

Probleme aus NP und die polynomielle Reduktion

Informatik II, SS 2014

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113

Codierung, Codes (variabler Länge)

Informatik-Seminar Thema 6: Bäume

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

2.7 Der Shannon-Fano-Elias Code

Grundlagen: Algorithmen und Datenstrukturen

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

Seminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Programmiertechnik II

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

Eigenschaften von Kompressionsverfahren

Algorithmen und Datenstrukturen 2

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Textkomprimierung. Stringologie. Codes. Textkomprimierung. Alle Komprimierung beruht auf Wiederholungen im Text. Textkomprimierung

15. Elementare Graphalgorithmen

Suchen und Sortieren

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Suchen und Sortieren Sortieren. Heaps

Das Heiratsproblem. Definition Matching

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

11.1 Grundlagen - Denitionen

Einwegfunktionen. Problemseminar. Komplexitätstheorie und Kryptographie. Martin Huschenbett. 30. Oktober 2008

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Randomisierte Algorithmen 2. Erste Beispiele

Satz 18 (Satz von der totalen Wahrscheinlichkeit)

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Resolutionsalgorithmus

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Erzeugendensystem und Basis

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

4 Greedy-Algorithmen (gierige Algorithmen)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Isomorphie von Bäumen

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

Algorithmen & Komplexität

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Theorie der Informatik

Algorithmen II Vorlesung am

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Wiederholung zu Flüssen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Höhe eines B + -Baums

Formale Methoden 2. Gaetano Geck Lehrstuhl I Logik in der Informatik WS 2015/2016

Vorlesung Datenstrukturen

Satz 16 (Multiplikationssatz)

Informatik II, SS 2014

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Randomisierte Algorithmen

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

Quicksort ist ein Divide-and-Conquer-Verfahren.

Abschnitt 18: Effizientes Suchen in Mengen

Informatik II, SS 2014

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Algorithmen und Datenstrukturen

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Informatik B Sommersemester Musterlösung zur Klausur vom

Polygontriangulierung

Spieltheorie. Nash-Gleichgewichts-Berechnung. Bernhard Nebel und Robert Mattmüller. Arbeitsgruppe Grundlagen der Künstlichen Intelligenz 14.

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Das Postsche Korrespondenzproblem

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung 2 KÜRZESTE WEGE

Klausur Algorithmen und Datenstrukturen

Mathematik für Information und Kommunikation

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Grundbegriffe der Informatik

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Klausur Theoretische Informatik I WS 2004/2005

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

Transkript:

Erinnerung: das Knapsack-Problem Das 0-1-Knapsack-Problem: Wähle aus n egenständen, wobei der i-te egenstand den Wert v i und das ewicht w i besitzt Maximiere den esamtwert bei vorgegebenem Höchstgewicht W - w i und W sind anzzahlen - "0-1": jeder egenstand muß komplett genommen oder dagelassen werden Abwandlung: fraktionales Knapsack-Problem (fractional KP) Man kann Anteile von egenständen wählen Z.B.: oldbarren beim 0-1-Problem und oldstaub beim fraktionalen Problem. Zachmann Informatik 2 SS 10 reedy-algorithmen 11 Das fraktionale Rucksack-Problem egeben: n egenstände, i-ter egenstand hat ewicht w i und Wert v i, ewichtsschranke W esucht:. Zachmann Informatik 2 SS 10 reedy-algorithmen 12 1

Der Algorithmus # Input: Array enthält Instanzen der Klasse Item # mit [i].w = ewicht und [i].v = Wert def fract_knapsack(, w_max ): sortiere absteigend nach ([i].v / [i].w) w = 0 # = bislang "belegtes" esamtgewicht for i in range( 0, len() ): if [i].w <= w_max - w: q[i] = 1 w += [i].w else: q[i] = (w_max w) / [i].w break # w_max ist ausgeschoepft return q Aufwand: O n + O n log n Sortieren. Zachmann Informatik 2 SS 10 reedy-algorithmen 13 Korrektheit Hier nur die Beweisidee: Der reedy-algorithmus erzeugt Lösungen der Form (1,, 1, q i, 0,, 0) Ann.: es existiert eine bessere Lösung (q' 1,, q' m ); diese hat die Form (1,, 1, q' j,, q' k, 0,, 0) Zeige, daß man aus dieser Lösung eine andere Lösung (q'' 1,, q'' m ) konstruieren kann, die dasselbe ewicht hat, aber größeren Wert, und mehr 1-en oder mehr 0-en. Zachmann Informatik 2 SS 10 reedy-algorithmen 14 2

Achtung: Der reedy-algorithmus funktioniert nicht für das 0-1-Rucksack-Problem egenbeispiel: W = 50 egenstand ewicht Wert v i / w i 1 10 60 6 2 20 100 5 3 30 120 4 reedy 1 1 + 1 2 Optimal 1 2 + 1 3. Zachmann Informatik 2 SS 10 reedy-algorithmen 15 Elemente der reedy-strategie Die reedy-hoice-eigenschaft: global optimale Lösung kann durch lokal optimale (greedy) Auswahl erreichet werden Die optimale (reedy-)unterstruktur: Eine optimale Lösung eines Problems enthält eine optimale Lösung eines Unterproblems, und diese Teillösung besteht aus 1 Element weniger als die esamtlösung M.a.W.: es ist möglich zu zeigen: wenn eine optimale Lösung A Element s i enthält, dann ist A' = A \ {s i } eine optimale Lösung eines kleineren Problems (ohne s i und evtl. ohne einige weitere Elemente) - Bsp. ASP: A \ {k} ist optimale Lösung für S'. Zachmann Informatik 2 SS 10 reedy-algorithmen 16 3

Optimale (reedy-)unterstruktur (Fortsetzung): Man muß nicht alle möglichen Unterprobleme durchprobieren (wie bei Dyn.Progr.) es genügt, das "nächstbeste" Element in die Lösung aufzunehmen, wenn man nur das richtige lokale(!) Kriterium hat - Bsp. ASP: wähle "vorderstes" kompatibles f i Möglicherweise ist eine Vorbehandlung der Eingabe nötig, um die lokale Auswahlfunktion effizient zu machen - Bsp. ASP: sortiere Aktivitäten nach Endzeit f i. Zachmann Informatik 2 SS 10 reedy-algorithmen 17 Allgemeine abstrakte Formulierung des reedy-algos Die Auswahl-Funktion basiert für gewöhnlich auf der Zielfunktion, sie können identisch sein, oft gibt es mehrere plausible Fkt.en # = Menge aller Kandidaten # select = Auswahlfunktion S = [] # = Lösung = Teilmenge von S while not solution(s) and!= []: x = Element aus, das select(x) maximiert = \ x if feasible(s,x): # is x compatible with S? S += x if solution(s): return S else: return keine Lösung Beispiel ASP: Zielfunktion = Anzahl Aktivitäten (Max gesucht) Auswahl-Funktion = kleinstes f i S'. Zachmann Informatik 2 SS 10 reedy-algorithmen 18 4

Scheduling in (Betriebs-) Systemen Ein einzelner Dienstleister (ein Prozessor, ein Kassierer in einer Bank, usw.) hat n Kunden zu bedienen Die Zeit, die für jeden Kunden benötigt wird, ist vorab bekannt: Kunde i benötigt die Zeit t i, 1 i n Ziel: esamtverweildauer aller Kunden im System minimieren. Zachmann Informatik 2 SS 10 reedy-algorithmen 19 Beispiel Es gibt 3 Kunden mit t 1 = 5, t 2 = 10, t 3 = 3 Reihenfolge T 1 2 3 5 + (5 + 10) + (5 + 10 + 3) = 38 1 3 2 5 + (5 + 3) + (5 + 3 + 10) = 31 2 1 3 10 + (10 + 5) + (10 + 5 + 3) = 43 2 3 1 10 + (10 + 3) + (10 + 3 + 5) = 41 3 1 2 3 + (3 + 5) + (3 + 5 + 10) = 29 optimal 3 2 1 3 + (3 + 10) + (3 + 10 + 5) = 34. Zachmann Informatik 2 SS 10 reedy-algorithmen 20 5

Algorithmenentwurf Betrachte einen Algorithmus, der den optimalen Schedule Schritt für Schritt erstellt Angenommen, nach der Bedienung der Kunden i 1,, i m ist Kunde j an der Reihe; die Zunahme von T auf dieser Stufe ist Um diese Zunahme zu minimieren, muß nur t j minimiert werden Das legt einen einfachen reedy-algorithmus nahe: füge bei jedem Schritt denjenigen Kunden, der die geringste Zeit benötigt, dem Schedule hinzu ( "shortest job first") Behauptung: Dieser Algorithmus ist immer optimal. Zachmann Informatik 2 SS 10 reedy-algorithmen 21 Optimalitätsbeweis Sei I = (i 1,, i n ) eine Permutation von {1, 2,, n} Werden die Kunden in der Reigenfolge I bedient, dann ist die esamtverweildauer für alle Kunden zusammen. Zachmann Informatik 2 SS 10 reedy-algorithmen 22 6

Jetzt nehmen wir an, daß in I zwei Zahlen a, b gefunden werden können, mit a < b und t ia > t ib Durch Vertauschung dieser beiden Kunden ergibt sich eine neue Bedienungsreihenfolge I', die besser ist, weil. Zachmann Informatik 2 SS 10 reedy-algorithmen 23 Reihenfolge 1 a b n bedienter Kunde i 1 i a i b i n Bedienzeit t i1 t ia t ib t in nach Austausch und von t ia und t ib Bedienzeit t i1 t ib t ia t in bedienter Kunde i 1 i b i a i n. Zachmann Informatik 2 SS 10 reedy-algorithmen 24 7

Das SMS-Aufkommen der letzten Jahre 1.5. 10 12 SMS (text messages) im Jahr 2009 allein in den USA Annualized Total Wireless Revenues = $ 152.6 Milliarden [USA, 2009] 23. 10 9 text messages in one week in hina around (hinese) New Year 2010 9.6. 10 9 text messages in UK im Dez. 09. Zachmann Informatik 2 SS 10 reedy-algorithmen 25 Fazit: eine gute Kodierung ist sehr wichtig "ut" = Kodierung, die Bandbreite spart. Zachmann Informatik 2 SS 10 reedy-algorithmen 26 8

Kodierung und Kompression Kodierung = Konvertierung der Darstellung von Information in eine andere Darstellung Beispiel: Schriftzeichen sind ein ode, ASII ein anderer ode Eine (von vielen) Aufgaben der Kodierung: platzsparende Speicherung von Information (Kompression) Fixed-length code = konstante Zahl von Bits pro Zeichen (z.b. ASII) Idee der Huffman-Kodierung: Kodiere einzelne Zeichen durch ode-wörter mit variabler Länge (variable-length code) Häufig auftretende Eingabewörter werden mit einem kurzen ode dargestellt Seltene Eingabewörter bekommen ein längeres ode-wort. Zachmann Informatik 2 SS 10 reedy-algorithmen 27 Beispiel Morsecode Morsecode kodiert Buchstaben in Abhängigkeit der Häufigkeit A B D E F H I J K L M N O P Q R S T U V W X Y Z Alphabet = drei Zeichen:,, (Pause) HALLO Die Pause ist ein wichtiges Zeichen: EEEEETETEEETEETTT ISTRERAM HRBXM IIAAIAIO usw. Frage: gibt es odes ohne Pause-Zeichen (= Leerzeichen), die trotzdem eindeutig decodiert werden können? (und kurz sind!). Zachmann Informatik 2 SS 10 reedy-algorithmen 28 9

Eindeutige odes Definition der Fano-Bedingung: Eine Kodierung besitzt die Fano-Eigenschaft kein ode-wort ist Präfix eines anderen ode-wortes Solche odes heißen prefix codes Idee: betrachte Eingabewörter als Blätter eines Baumes Ein ode-wort entspricht dem Pfad von der Wurzel zum Blatt Verzweigung zum linken Sohn 0 Verzweigung zum rechten Sohn 1 Erfüllt offensichtlich die Fano-Bedingung Länge eines ode-wortes = Tiefe des entsprechenden Blattes Ziel ist also: häufige Zeichen möglichst weit oben im Baum ansiedeln. Zachmann Informatik 2 SS 10 reedy-algorithmen 29 Beispiel: Σ = {A, B,, D, E}, Text = AABAADAAEABAD 0 A B 10 110 D E 1110 1111 001000110111000111101001101110 30 bits A B 00 01 10 D 110 E 111 000001000010110000011100010010110 33 bits. Zachmann Informatik 2 SS 10 reedy-algorithmen 30 10

Bemerkung: jeder beliebige Baum mit M Blättern kann benutzt werden, um jeden beliebigen String mit M verschiedenen Zeichen zu kodieren: Die Darstellung als Binär-Baum mit einer Annotation der Zweige mit "0" bzw. "1" garantiert, daß kein ode-wort Präfix eines anderen ist Somit läßt sich die Zeichenfolge unter Benutzung des Baumes auf eindeutige Weise decodieren Der Algorithmus: bei der Wurzel beginnend bewegt man sich entsprechend den Bits der Zeichenfolge im Baum abwärts; jedesmal, wenn ein Blatt angetroffen wird, gebe man das zu diesem Knoten gehörige Zeichen aus und beginne erneut bei der Wurzel. Zachmann Informatik 2 SS 10 reedy-algorithmen 31 Herleitung der Huffman-Kodierung Lemma: Ein optimaler Baum zur Kodierung ist ein voller Baum, d.h., jeder innere Knoten hat genau 2 Kinder Beweis durch Widerspruch (Übungsaufgabe) Sei Σ das Alphabet, dann hat der Baum Σ viele Blätter (klar) und Σ -1 innere Knoten (s. Kapitel über Bäume) egeben: String S = s 1 s n über Σ. Sei H s (c) = absolute Häufigkeit des Zeichens c im String S Sei d T (c) = Tiefe von c im Baum T = Länge des odewortes von c Anzahl Bits zur Kodierung von S mittels ode T ist B T (S) = H S (c)d T (c) c Σ. Zachmann Informatik 2 SS 10 reedy-algorithmen 32 11

Im folgenden: arbeite mit der mittleren odewort-länge, gemessen über alle möglichen (sinnvollen!) Texte der Sprache (z.b. Deutsch) B(T )= Anders geschrieben: 1 Länge aller Texte B T (alle Texte) B(T )= c Σ h S (c)d T (c) wobei h s (c) = relative Häufigkeit des Zeichens c in der betrachteten Sprache S Ziel: Baum T bestimmen, so daß B(T) = min. Zachmann Informatik 2 SS 10 reedy-algorithmen 33 Lemma: Seien x, y Σ die Zeichen mit minimaler Häufigkeit in S. Dann existiert ein optimaler Kodierungs-Baum für Σ, in dem x und y Brüder sind und auf dem untersten Level. Beweis durch Widerspruch: Idee: ausgehend von irgend einem optimalen Baum, konstruiere neuen Baum, der auch optimal ist und die Bedingungen erfüllt T Ann.: T ist optimaler Baum, aber x, y sind nicht auf max. Level es ex. 2 Blätter a, b, die Brüder sind, y mit d T (a) =d T (b) d T (x),d T (y) b a x. Zachmann Informatik 2 SS 10 reedy-algorithmen 34 12

Vertausche Blätter x und a ergibt einen Baum T', der besser ist: B(T ) B(T ) = h(c)d T (c) h(c)d T (c) c Σ c Σ y b T' x a = h(x)d T (x)+h(a)d T (a) h(x)d T (x) h(a)d T (a) = h(x)d T (x)+h(a)d T (a) h(x)d T (a) h(a)d T (x) = h(a) h(x) d T (a) d T (x) 0 T'' Analog: y und b vertauschen ergibt T'' mit a B(T ) B(T ) b y x. Zachmann Informatik 2 SS 10 reedy-algorithmen 35 Lemma: Seien x, y Σ Zeichen mit minimaler Häufigkeit. Setze Σ' := Σ \ {x, y} {z}. (z ist ein neues "erfundenes" Zeichen.) Definiere h auf Σ' wie auf Σ und setze h(z) := h(x) + h(y). Sei T' ein optimaler Baum (bzgl. odelänge) über Σ'. Dann erhält man einen optimalen Baum T für Σ aus T', indem man das Blatt z in T' ersetzt durch einen inneren Knoten mit den beiden Kindern x und y. T' z x T y. Zachmann Informatik 2 SS 10 reedy-algorithmen 36 13

Beweis: Zunächst B(T) mittels B(T') ausdrücken: T' z T x y h(x)d T (x)+h(y)d T (y) = h(x)+h(y) d T (z)+1 B(T )=B(T )+h(x)+h(y) = h(z)d T (z)+h(x)+h(y) Ann.: T ist nicht optimal es gibt (optimales) T'' mit B(T'') < B(T) - T'' optimal x, y sind Brüder auf unterstem Level in T'' (gemäß erstem Lemma) - Erzeuge Baum T''' aus T'', in dem x, y und deren gemeinsamer Vater ersetzt werden durch ein neues Blatt z, mit h(z) = h(x) + h(y) - B(T )=B(T ) h(x) h(y) < B(T ) h(x) h(y) =B(T ) - Also wäre schon T' nicht optimal gewesen Widerspruch!. Zachmann Informatik 2 SS 10 reedy-algorithmen 37 Der Huffman-ode Idee: erzeuge einen optimalen ode-baum mit zwei Schritten 1. Sortiere die Zeichen nach ihrer relativen Häufigkeit 2. Erzeuge den Baum bottom-up durch wiederholtes Verschmelzen der beiden seltensten Zeichen Beispiel: Σ = {A, B,, D, E} 1. Ermittlung der Häufigkeiten und Sortierung Zeichen h A 8/15 B 2/15 2/15 D 2/15 E 1/15. Zachmann Informatik 2 SS 10 reedy-algorithmen 38 14

2. Aufbau des Baums (rel. Häufigkeiten sind mit 15 erweitert) W X A: 8 B: 2 : 2 D: 2 E: 1 Y Z A: 8 Z: 3 B: 2 : 2 A B D E 0 100 101 110 111 A: 8 Y: 4 Z: 3 A: 8 X: 7 W: 15. Zachmann Informatik 2 SS 10 reedy-algorithmen 39 Der Algorithmus zur Erzeugung des odes # = Alphabet, jedes c hat c.freq # q = P-Queue, sortiert nach c.freq füge alle c in q ein while q enthält noch mehr als 1 Zeichen: x = extract_min( q ) y = extract_min( q ) erstelle neuen Knoten z mit Kindern x und y z.freq = x.freq + y.freq q.insert( z ) return extract_min(q) # = Wurzel des Baumes (Anmerkung: dies ist ein reedy-algorithmus) http://graphics.ethz.ch/teaching/former/- infotheory0506/downloads/- Applet_work_fullscreen.html. Zachmann Informatik 2 SS 10 reedy-algorithmen 40 15

esamt-algorithmus zum Kodieren eines Textes 1. Aufbau des ode-baums (muß man nur 1x machen) Häufigkeit beim Durchlaufen des Text-Korpus ermitteln Heap für die Knoten, geordnet nach Häufigkeit ode-baum konstruieren (greedy) 2. Erzeugen der ode-tabelle (dito) Traversierung des Baumes 3. Kodieren des Textes Look-up der odes pro Zeichen in der ode-tabelle 4. Optional: Erzeuge für jeden Text eine eigene ode-tabelle (Schritt 1 und 2) Übertrage die ode-tabelle mit dem Text Lohnt sich nur, falls Länge des Textes << Länge der ode-tabelle. Zachmann Informatik 2 SS 10 reedy-algorithmen 41 Dekodierung mit Huffman-odes Aufbau des ode-baums Ergibt binären Baum (linkes Kind = "0", rechtes Kind = "1") Dekodieren der Bitfolge (= kodierter Text) Beginne an der Wurzel des ode-baums Steige gemäß der gelesenen Bits im Baum ab ib bei Erreichen eines Blattes das zugehörige Zeichen aus und beginne von vorne. Zachmann Informatik 2 SS 10 reedy-algorithmen 43 16

Beispiel: Kodierung ganzer Wörter 1,00 1 0 0,587 0,413 0 1 0 1 0,317 0,270 0,183 0,230 0 1 0 1 THE 0 1 0,147 0,170 0,088 0,095 0,090 0,131 0 1 OF A 0 1 TO AND odierungseinheit W'keit des Auftretens ode- Wert ode- Länge the 0,270 01 2 of 0,170 001 3 and 0,137 111 3 to 0,099 110 3 a 0,088 100 3 in 0,074 0001 4 that 0,052 1011 4 is 0,043 1010 4 it 0,040 00001 5 on 0,033 00000 5 0,073 0,074 0 1 IN 0,043 0,052 IS THAT 0,033 0,040 ON IT. Zachmann Informatik 2 SS 10 reedy-algorithmen 45 Effiziente Übertragung der ode-tabelle Beobachtungen: enaue Lage eines Zeichens im Baum ist egal! Wichtig ist nur die Tiefe! (und, natürlich, eine konsistente Beschriftung der Kanten) Umarrangieren liefert Baum, in dem Blätter von links nach rechts tiefer werden odes der Zeichen ändern sich, nicht aber die Optimalität Darstellung des Baumes: T ib Anzahl Zeichen mit bestimmter Länge an, gefolgt von diesen Zeichen, aufsteigend nach Länge A Beispiel: B D E - 1 Zeichen der Länge 1, 0 der Länge 2, 4 der Länge 3-01, A, 00,, 04, B,, D, E Damit lässt sich der ursprüngliche Baum wieder genau rekonstruieren. Zachmann Informatik 2 SS 10 reedy-algorithmen 46 17

Eigenschaften In gewissem Sinn(!) optimaler, d.h. minimaler, ode Voraussetzung u.a.: Vorkommen der Zeichen ist unabhängig voneinander; die Zeichen werden immer einzeln kodiert Keine Kompression für zufällige Daten Alle Zeichen habe annähernd gleiche Häufigkeit Erfordert i.a. zweimaliges Durchlaufen des Textes Ermöglicht kein Stream Processing Das Wörterbuch muß i.a. zusätzlich gespeichert werden Für große Dateien vernachlässigbar Nicht aber für kleine. Zachmann Informatik 2 SS 10 reedy-algorithmen 47 Anwendungsbeispiele der Huffman-Kodierung MP3- Kompression: JPE-Kompression:. Zachmann Informatik 2 SS 10 reedy-algorithmen 50 18

Zusammenfassung reedy-algorithmen Allgemeine Vorgehensweise: Treffe in jedem Schritt eine lokale(!) Entscheidung, die ein kleineres Teilproblem übrig lässt Korrektheitsbeweis: Zeige, daß eine optimale Lösung des entstehenden Teilproblems zusammen mit der getroffenen Entscheidung zu optimaler Lösung des esamtproblems führt Das lässt sich meist durch Widerspruch zeigen: - Angenommen, es gibt optimale Lösung S', die besser ist als reedy-lösung S - Zeige: dann kann S' noch verbessert oder in reedy-lösung umgewandelt werden. Zachmann Informatik 2 SS 10 reedy-algorithmen 51 reedy vs. Dynamische Programmierung Ähnlich: optimale Unterstruktur Verschieden: Bei der dynamischen Programmierung erhält man oft mehrere Unterprobleme, bei reedy-algorithmen (in der Regel) nur eines Bei dynamischer Programmierung hängt die Entscheidung von der Lösung der Unterprobleme ab, bei reedy-algorithmen nicht. Zachmann Informatik 2 SS 10 reedy-algorithmen 52 19