Effiziente Algorithmen und Komplexitätstheorie

Ähnliche Dokumente
Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

15 Optimales Kodieren

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Proseminar WS 2002/2003

Dynamisches Huffman-Verfahren

1 Grundlagen. 1.1 Erste Grundbegriffe 1.2 Kryptographische Systeme 1.3 Informationstheoretische Grundlagen

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

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

Codierung, Codes (variabler Länge)

Algorithmen II Vorlesung am

5 Zwei spieltheoretische Aspekte

Mathematik für Information und Kommunikation

Datenkompression. Vortrag von Markus Durzinsky Student der Otto-von-Guericke-Universität Magdeburg

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Informatik II, SS 2014

Randomisierte Algorithmen

Stochastische Lernalgorithmen

Referat zum Thema Huffman-Codes

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

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

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

Induktive Beweise und rekursive Definitionen

Kryptologie und Kodierungstheorie

Übung zur Vorlesung Algorithmische Geometrie

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

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

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

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Induktive Beweise und rekursive Definitionen

Minimal spannende Bäume

Datenstrukturen & Algorithmen

Organisation. Was kommt zum Test? Buch Informatik Grundlagen bis inkl. Kapitel 7.4 Wissensfragen und Rechenbeispiele

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Grundbegriffe der Informatik

Begriffe aus der Informatik Nachrichten

Eigenschaften von Kompressionsverfahren

Randomisierte Algorithmen 2. Erste Beispiele

Kodierungsalgorithmen

Abschnitt 18: Effizientes Suchen in Mengen

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Huffman-Kodierung. Fachbereich Medieninformatik. Hochschule Harz. Huffman-Kodierung. Referat. Henner Wöhler. Abgabe:

Einführung in Kompressionstechniken

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

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Probleme über Sprachen. Teil II.

Datenstrukturen & Algorithmen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

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

Grundlagen der Theoretischen Informatik

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Algorithmen und Datenstrukturen

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

Grammatiken. Einführung

Grundlagen der Theoretischen Informatik

Kryptographie und Codierung für den Mathematikunterricht

Universität Potsdam Institut für Informatik Lehrstuhl Maschinelles Lernen. Clusteranalyse. Tobias Scheffer Thomas Vanck

Lösung zur Übung für Analysis einer Variablen WS 2016/17

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)

1 / 33. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V5 07. Mai / 33

Grundbegriffe der Informatik

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

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

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Information und Codierung

Der RSA-Algorithmus. 2. Anschließend ist n = p q und ϕ (n) = (p 1) (q 1) zu berechnen.

Redundanz. Technische Informationsquelle Entropie und Redundanz Huffman Codierung. Martin Werner WS 09/10. Martin Werner, Dezember 09 1

3. Musterlösung. Problem 1: Boruvka MST

Informationstheorie und Codierung

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

2 Informationstheorie

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

Vorlesung Datenstrukturen

4. Induktives Definieren - Themenübersicht

Strukturelle Rekursion und Induktion

Algorithmische Bioinformatik 1

ETWR Teil B. Spezielle Wahrscheinlichkeitsverteilungen (stetig)

Verlustfreie Kompression

Algorithms for Regression and Classification

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Resolutionsalgorithmus

Theoretische Informatik 1

Grundlagen der Theoretischen Informatik

Induktive Definitionen

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Lösungsvorschläge Blatt 4

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

Bayes sches Lernen: Übersicht

Kapitel 2: Informationstheorie. 3. Quellencodierung

Algorithmen und Datenstrukturen 1

Einführung in die Theoretische Informatik

Algorithmen und Datenstrukturen Suchbaum

Minimal spannende Bäume

4 Greedy-Algorithmen (gierige Algorithmen)

Transkript:

Fakultät für Informatik Lehrstuhl 2 Vorlesung Effiziente Algorithmen und Komplexitätstheorie Sommersemester 2008 Ingo Wegener; Vertretung: Carsten Witt 7. Juli 2008 Vorlesung am 14.07. (nächste Woche): Raum E04/E05 1/23

Datenkompression: Definition und Motivation Aufgabe: Verkürze Repräsentation von Daten Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten 2/23

Datenkompression: Definition und Motivation Aufgabe: Verkürze Repräsentation von Daten Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Brauchen wir heutzutage noch Datenkompression? 2/23

Datenkompression: Definition und Motivation Aufgabe: Verkürze Repräsentation von Daten Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Brauchen wir heutzutage noch Datenkompression? Anschein: Speicher wächst viel langsamer als Datenmengen Fakt: Datenkompression allgegenwärtig 2/23

Datenkompression: Definition und Motivation Aufgabe: Verkürze Repräsentation von Daten Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Brauchen wir heutzutage noch Datenkompression? Anschein: Speicher wächst viel langsamer als Datenmengen Fakt: Datenkompression allgegenwärtig Klassifikation verlustfrei (lossless) X : d(c(x)) = X z.b. bzip2, gif, zip verlustbehaftet (lossy) i. Allg. d(c(x)) X z.b. jpeg, mpeg, mp3 2/23

Datenkompression: Definition und Motivation Aufgabe: Verkürze Repräsentation von Daten Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Brauchen wir heutzutage noch Datenkompression? Anschein: Speicher wächst viel langsamer als Datenmengen Fakt: Datenkompression allgegenwärtig Klassifikation verlustfrei (lossless) X : d(c(x)) = X z.b. bzip2, gif, zip verlustbehaftet (lossy) i. Allg. d(c(x)) X z.b. jpeg, mpeg, mp3 Hier: nur verlustfreie Kompression 2/23

Güte von Kompressionen Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Konventionen: Daten X Σ für endliches Alphabet Σ Komprimierte Daten c(x) {0,1} + 3/23

Güte von Kompressionen Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Konventionen: Daten X Σ für endliches Alphabet Σ Komprimierte Daten c(x) {0,1} + Maße Kompressionsrate = c(x) X (Einheit [bpb], bits per bit ) Kompressionsfaktor = 1 Kompressionsrate 3/23

Güte von Kompressionen Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Konventionen: Daten X Σ für endliches Alphabet Σ Komprimierte Daten c(x) {0,1} + Maße Kompressionsrate = c(x) X (Einheit [bpb], bits per bit ) Kompressionsfaktor = 1 Kompressionsrate Schranken für die Maße? 3/23

Güte von Kompressionen Kompression Dekompression X Y = c(x) X = d(y ) Daten komprimierte Daten dekomprimierte Daten Konventionen: Daten X Σ für endliches Alphabet Σ Komprimierte Daten c(x) {0,1} + Maße Kompressionsrate = c(x) X (Einheit [bpb], bits per bit ) Kompressionsfaktor = 1 Kompressionsrate Schranken für die Maße? Im Allgemeinen nicht: c(x) = 1 für beliebig lange X möglich Aber: für jedes verlustfreie Verfahren gibt es auch X mit c(x) X, da c injektiv und c(x) {0,1} +. 3/23

Präfixkodes: Repräsentation komprimierter Daten Ansatz hier: Kodiere Texte X Σ buchstabenweise Zunächst c : Σ {0,1} +, also Code für jeden Buchstaben 4/23

Präfixkodes: Repräsentation komprimierter Daten Ansatz hier: Kodiere Texte X Σ buchstabenweise Zunächst c : Σ {0,1} +, also Code für jeden Buchstaben Dann setze c für Texte X = x 1 x 2... x l fort: c(x 1 x 2...x l ) = c(x 1 )c(x 2 )... c(x l ) ohne Trennzeichen Nötig: eindeutige Dekodierbarkeit 4/23

Präfixkodes: Repräsentation komprimierter Daten Ansatz hier: Kodiere Texte X Σ buchstabenweise Zunächst c : Σ {0,1} +, also Code für jeden Buchstaben Dann setze c für Texte X = x 1 x 2... x l fort: c(x 1 x 2...x l ) = c(x 1 )c(x 2 )... c(x l ) ohne Trennzeichen Nötig: eindeutige Dekodierbarkeit Lösung: Präfixkodes Definition Für x {0,1} sei PRE(x) := {x {0,1} X X } die Menge aller Präfixe von X. Eine Kodierung c : Σ {0,1} + heißt Präfixkode, wenn Y X : c(x) / PRE(c(Y )) gilt. 4/23

Beschreibung von Präfixkodes Eindeutige Darstellung von Präfixkodes: Binärbaum mit Σ Blättern Σ = {a,b,c,d} s Σ c(s) a 0 b 101 c 11 d 100 a d b c 5/23

Beschreibung von Präfixkodes Eindeutige Darstellung von Präfixkodes: Binärbaum mit Σ Blättern Σ = {a,b,c,d} s Σ c(s) a 0 b 101 c 11 d 100 Wann existieren Präfixkodes überhaupt? a d b c 5/23

Beschreibung von Präfixkodes Eindeutige Darstellung von Präfixkodes: Binärbaum mit Σ Blättern Σ = {a,b,c,d} s Σ c(s) a 0 b 101 c 11 d 100 Wann existieren Präfixkodes überhaupt? a d b c Theorem (Ungleichung von Kraft/McMillan) Ein Präfixkode c : {s 1,s 2,...,s n } {0,1} + mit c(s 1 ) = l 1, c(s 2 ) = l 2,..., c(s n ) = l n existiert genau dann, wenn n i=1 2 l i 1 gilt. 5/23

Beweis der Ungleichung von Kraft/McMillan ( ) Sei Präfixkode c : Σ {0,1} + mit l i := c(s i ) gegeben. 6/23

Beweis der Ungleichung von Kraft/McMillan ( ) Sei Präfixkode c : Σ {0,1} + mit l i := c(s i ) gegeben. Sei l := max{l 1,...,l n }. Vervollständige Binärbaum für c a c d b 6/23

Beweis der Ungleichung von Kraft/McMillan ( ) Sei Präfixkode c : Σ {0,1} + mit l i := c(s i ) gegeben. Sei l := max{l 1,...,l n }. Vervollständige Binärbaum für c a Binärbaum mit Höhe l und 2 l Blättern d b c Darin betrachte Teilbäume mit Wurzeln s 1,...,s n, beobachte: Teilbaum mit Wurzel s i hat 2 l l i Blätter. 6/23

Beweis der Ungleichung von Kraft/McMillan ( ) Sei Präfixkode c : Σ {0,1} + mit l i := c(s i ) gegeben. Sei l := max{l 1,...,l n }. Vervollständige Binärbaum für c a Binärbaum mit Höhe l und 2 l Blättern d b c Darin Also: betrachte Teilbäume mit Wurzeln s 1,...,s n, beobachte: Teilbaum mit Wurzel s i hat 2 l l i Blätter. n i=1 2l l i = 2 l n i=1 2 l i = 1. 6/23

Beweis der Ungleichung von Kraft/McMillan ( ) Gegeben: l 1,...,l n mit S := n i=1 2 l i 1 Ziel: Präfixkode 7/23

Beweis der Ungleichung von Kraft/McMillan ( ) Gegeben: l 1,...,l n mit S := n i=1 2 l i 1 Ziel: Präfixkode O. B.d.A.: l 1 l 2 l n =: l. 7/23

Beweis der Ungleichung von Kraft/McMillan ( ) Gegeben: l 1,...,l n mit S := n i=1 2 l i 1 Ziel: Präfixkode O. B.d.A.: l 1 l 2 l n =: l. Induktion über l l = 1: Dann n 2 und 0 bzw. 0,1 sind passende Präfixkodes. 7/23

Beweis der Ungleichung von Kraft/McMillan ( ) Gegeben: l 1,...,l n mit S := n i=1 2 l i 1 Ziel: Präfixkode O. B.d.A.: l 1 l 2 l n =: l. Induktion über l l = 1: Dann n 2 und 0 bzw. 0,1 sind passende Präfixkodes. l > 1: Fallunterscheidung nach S S 1/2: Entweder l 1 = 1, dann aber l = 1 und Präfixkode trivial. Oder l 1 2, dann benutze n i=1 1) = 2S 1, 2 (li wende IV auf l 1 1, l 2 1,...,l n 1 an und hänge vor die erhaltenen Kodes je eine 0. Präfixkode mit gewünschten Längen. 7/23

Beweis der Ungleichung von Kraft/McMillan ( ) Gegeben: l 1,...,l n mit S := n i=1 2 l i 1 Ziel: Präfixkode O. B.d.A.: l 1 l 2 l n =: l. Induktion über l l = 1: Dann n 2 und 0 bzw. 0,1 sind passende Präfixkodes. l > 1: Fallunterscheidung nach S S 1/2: Entweder l 1 = 1, dann aber l = 1 und Präfixkode trivial. Oder l 1 2, dann benutze n i=1 1) = 2S 1, 2 (li wende IV auf l 1 1, l 2 1,...,l n 1 an und hänge vor die erhaltenen Kodes je eine 0. Präfixkode mit gewünschten Längen. S > 1/2: Beobachtung: 2 l1 2 l2 2 ln, Definiere m := min{k k i=1 1/2} 2 li Beobachtung: m i=1 2 li = 1/2, da m 1 i=1 1/2 2 2 li lm IV anwenden auf {l 1,..., l m } und {l m+1,..., l n }, gib erhaltenen Präfixkodes neue Präfixe (0 bzw. 1). 7/23

Informationstheorie Hintergrund: probabilistisches Modell Quelle erzeugt unabh. Ereignisse, hier Buchstaben s Σ = {s 1,...,s n } mit Auftrittswahrscheinlichkeiten Prob(s) für s Σ. 8/23

Informationstheorie Hintergrund: probabilistisches Modell Quelle erzeugt unabh. Ereignisse, hier Buchstaben s Σ = {s 1,...,s n } mit Auftrittswahrscheinlichkeiten Prob(s) für s Σ. Selbstinformation für Ereignis s ist i(s) = log 1 Prob(s), mindestens 1 für Σ 2. 8/23

Informationstheorie Hintergrund: probabilistisches Modell Quelle erzeugt unabh. Ereignisse, hier Buchstaben s Σ = {s 1,...,s n } mit Auftrittswahrscheinlichkeiten Prob(s) für s Σ. Selbstinformation für Ereignis s ist i(s) = log 1 Prob(s), mindestens 1 für Σ 2. Entropie H(Σ) = s Σ Prob(s) i(s) = s ΣProb(s)log(Prob(s)) als Erwartungswert der Selbstinformation 8/23

Informationstheorie Hintergrund: probabilistisches Modell Quelle erzeugt unabh. Ereignisse, hier Buchstaben s Σ = {s 1,...,s n } mit Auftrittswahrscheinlichkeiten Prob(s) für s Σ. Selbstinformation für Ereignis s ist i(s) = log 1 Prob(s), mindestens 1 für Σ 2. Entropie H(Σ) = s Σ Prob(s) i(s) = s ΣProb(s)log(Prob(s)) als Erwartungswert der Selbstinformation Satz: durchschnittliche Kodierungslänge Entropie (Beweis später) 8/23

Informationstheorie Hintergrund: probabilistisches Modell Quelle erzeugt unabh. Ereignisse, hier Buchstaben s Σ = {s 1,...,s n } mit Auftrittswahrscheinlichkeiten Prob(s) für s Σ. Selbstinformation für Ereignis s ist i(s) = log 1 Prob(s), mindestens 1 für Σ 2. Entropie H(Σ) = s Σ Prob(s) i(s) = s ΣProb(s)log(Prob(s)) als Erwartungswert der Selbstinformation Satz: durchschnittliche Kodierungslänge Entropie (Beweis später) Problem: im Allgemeinen Entropie unbekannt probabilistisches Modell aufstellen oder schätzen 8/23

Erzeugung von Präfixkodes aus probabilistischen Modellen Einige Eigenschaften Präfixkode gegeben: Kodierung und Dekodierung in Linearzeit gegenüber fester Kodierung: Gewinn durch kurze Kodierung häufiger Zeichen bei rein zufälligen Texten (Gleichverteilung über Σ) sinnlos 9/23

Erzeugung von Präfixkodes aus probabilistischen Modellen Einige Eigenschaften Präfixkode gegeben: Kodierung und Dekodierung in Linearzeit gegenüber fester Kodierung: Gewinn durch kurze Kodierung häufiger Zeichen bei rein zufälligen Texten (Gleichverteilung über Σ) sinnlos Annahmen: Zeichen s i Σ unabhängig, Prob(s i ) bekannt Erwartete Länge eines Kodeworts c: L c := n i=1 Prob(s i) c(s i ) Damit erwartete Kodierungslänge eines Textes X: X L c 9/23

Erzeugung von Präfixkodes aus probabilistischen Modellen Einige Eigenschaften Präfixkode gegeben: Kodierung und Dekodierung in Linearzeit gegenüber fester Kodierung: Gewinn durch kurze Kodierung häufiger Zeichen bei rein zufälligen Texten (Gleichverteilung über Σ) sinnlos Annahmen: Zeichen s i Σ unabhängig, Prob(s i ) bekannt Erwartete Länge eines Kodeworts c: L c := n i=1 Prob(s i) c(s i ) Damit erwartete Kodierungslänge eines Textes X: X L c Gesucht: optimaler Präfixkode c, d.h. mit minimalem L c 9/23

Erzeugung von Präfixkodes aus probabilistischen Modellen Einige Eigenschaften Präfixkode gegeben: Kodierung und Dekodierung in Linearzeit gegenüber fester Kodierung: Gewinn durch kurze Kodierung häufiger Zeichen bei rein zufälligen Texten (Gleichverteilung über Σ) sinnlos Annahmen: Zeichen s i Σ unabhängig, Prob(s i ) bekannt Erwartete Länge eines Kodeworts c: L c := n i=1 Prob(s i) c(s i ) Damit erwartete Kodierungslänge eines Textes X: X L c Gesucht: optimaler Präfixkode c, d.h. mit minimalem L c Im Folgenden: drei Ansätze für kurze Präfixkodes 9/23

Shannon-Algorithmus Notation: p i := Prob(s i ), P i := i 1 j=1 p j O. B.d.A.: p 1 p 2 p n 10/23

Shannon-Algorithmus Notation: p i := Prob(s i ), P i := i 1 j=1 p j O. B.d.A.: p 1 p 2 p n Shannon-Algorithmus (1948) 1. Für i = 1,...,n 2. l i := log p i 3. c(s i ) := b 1 b 2...b li nach Binärdarstellung für P i = 0,b 1 b 2 b 3... 10/23

Shannon-Algorithmus Notation: p i := Prob(s i ), P i := i 1 j=1 p j O. B.d.A.: p 1 p 2 p n Shannon-Algorithmus (1948) 1. Für i = 1,...,n 2. l i := log p i 3. c(s i ) := b 1 b 2...b li nach Binärdarstellung für P i = 0,b 1 b 2 b 3... Beispiel: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) s i p i l i P i P i binär c(s i ) a 0,4 2 0 0,0000... 00 b 0,25 2 0,4 0,0110... 01 c 0,15 3 0,65 0,1010... 101 d 0,1 4 0,8 0,1100... 1100 e 0,1 4 0,9 0,1110... 1110 10/23

Shannon-Algorithmus Notation: p i := Prob(s i ), P i := i 1 j=1 p j O. B.d.A.: p 1 p 2 p n Shannon-Algorithmus (1948) 1. Für i = 1,...,n 2. l i := log p i 3. c(s i ) := b 1 b 2...b li nach Binärdarstellung für P i = 0,b 1 b 2 b 3... Beispiel: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) s i p i l i P i P i binär c(s i ) a 0,4 2 0 0,0000... 00 b 0,25 2 0,4 0,0110... 01 c 0,15 3 0,65 0,1010... 101 d 0,1 4 0,8 0,1100... 1100 e 0,1 4 0,9 0,1110... 1110 Erwartete Kodelänge = 0,4 2 + 0,25 2 + 0,15 3 + 0,1 4 + 0,1 4 = 2,55 korrekt? 10/23

Shannon-Algorithmus: Korrektheit Theorem Der Shannon-Algorithmus erzeugt einen Präfixkode. 11/23

Shannon-Algorithmus: Korrektheit Theorem Der Shannon-Algorithmus erzeugt einen Präfixkode. Beweis Algo. setzt l i := log p i, also l i log(1/p i ). 11/23

Shannon-Algorithmus: Korrektheit Theorem Der Shannon-Algorithmus erzeugt einen Präfixkode. Beweis Algo. setzt l i := log p i, also l i log(1/p i ). Daher: j > i P j P i = j 1 k=i p k p i 2 l i. 11/23

Shannon-Algorithmus: Korrektheit Theorem Der Shannon-Algorithmus erzeugt einen Präfixkode. Beweis Algo. setzt l i := log p i, also l i log(1/p i ). Daher: j > i P j P i = j 1 k=i p k p i 2 l i. Wegen p 1 p n ist l 1 l n. Annahme: kein Präfixkode, dann i < j mit c(s i ) c(s j ). Sei c(s i ) = a 1...a li und c(s j ) = b 1...b lj. 11/23

Shannon-Algorithmus: Korrektheit Theorem Der Shannon-Algorithmus erzeugt einen Präfixkode. Beweis Algo. setzt l i := log p i, also l i log(1/p i ). Daher: j > i P j P i = j 1 k=i p k p i 2 l i. Wegen p 1 p n ist l 1 l n. Annahme: kein Präfixkode, dann i < j mit c(s i ) c(s j ). Sei c(s i ) = a 1...a li und c(s j ) = b 1...b lj. Es folgt P j P i = = = ( a1 ( b1 2 1 + + b l i 2 l i ) +... 2 1 + + a l i 2 l + b l i+1 i 2 l +... i+1 ( ) bli +1 2 l i+1 +... ( a1 ) ( ali +1 2 l i+1 +... ) 2 1 + + a l i 2 l i ( a1 2 1 + + a l i 2 l i < 1 2 l i ) +... ) +... 11/23

Shannon-Algorithmus: Güte Erinnerung: minimale erwartete Kodelänge gesucht, Entropie untere Schranke 12/23

Shannon-Algorithmus: Güte Erinnerung: Theorem minimale erwartete Kodelänge gesucht, Entropie untere Schranke Der Shannon-Algorithmus berechnet aus einer Quelle Σ einen Kode c mit L Shannon c H(Σ) + 1. 12/23

Shannon-Algorithmus: Güte Erinnerung: Theorem minimale erwartete Kodelänge gesucht, Entropie untere Schranke Der Shannon-Algorithmus berechnet aus einer Quelle Σ einen Kode c mit L Shannon c H(Σ) + 1. Beweis Erinnerung: Kodelänge c(s i ) = log Prob(s i ). 12/23

Shannon-Algorithmus: Güte Erinnerung: minimale erwartete Kodelänge gesucht, Entropie untere Schranke Theorem Der Shannon-Algorithmus berechnet aus einer Quelle Σ einen Kode c mit L Shannon c H(Σ) + 1. Beweis Erinnerung: Kodelänge c(s i ) = log Prob(s i ). Somit n L c = (Prob(s i ) log(prob(s i )) ) i=1 n (Prob(s i )( log(prob(s i )) + 1)) = H(Σ) + 1. i=1 12/23

Shannon-Algorithmus: Güte Erinnerung: minimale erwartete Kodelänge gesucht, Entropie untere Schranke Theorem Der Shannon-Algorithmus berechnet aus einer Quelle Σ einen Kode c mit L Shannon c H(Σ) + 1. Beweis Erinnerung: Kodelänge c(s i ) = log Prob(s i ). Somit n L c = (Prob(s i ) log(prob(s i )) ) Aber i=1 n (Prob(s i )( log(prob(s i )) + 1)) = H(Σ) + 1. i=1 werden sehen: Shannon-Algo. nicht optimal. 12/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 1 Falls Σ = 1, erzeuge Baum mit einem Knoten und entsprechender Beschriftung. STOP. 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 1 Falls Σ = 1, erzeuge Baum mit einem Knoten und entsprechender Beschriftung. STOP. 2 Teile Σ in Σ 1 und Σ 2 mit s Σ 1 Prob(s) s Σ 2 Prob(s). 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 1 Falls Σ = 1, erzeuge Baum mit einem Knoten und entsprechender Beschriftung. STOP. 2 Teile Σ in Σ 1 und Σ 2 mit s Σ 1 Prob(s) s Σ 2 Prob(s). 3 Erzeuge Baum mit unbeschrifteter Wurzel und Shannon-Fano(Σ 1 ) als linkem sowie Shannon-Fano(Σ 2 ) als rechtem Teilbaum. 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 1 Falls Σ = 1, erzeuge Baum mit einem Knoten und entsprechender Beschriftung. STOP. 2 Teile Σ in Σ 1 und Σ 2 mit s Σ 1 Prob(s) s Σ 2 Prob(s). 3 Erzeuge Baum mit unbeschrifteter Wurzel und Shannon-Fano(Σ 1 ) als linkem sowie Shannon-Fano(Σ 2 ) als rechtem Teilbaum. Beobachtung: erzeugt Präfixkode 13/23

Shannon-Fano-Algorithmus Rekursiv Präfixkodebaum erzeugen Eingabe wieder: Σ mit zugehöriger Wahrscheinlichkeitsverteilung 1 Falls Σ = 1, erzeuge Baum mit einem Knoten und entsprechender Beschriftung. STOP. 2 Teile Σ in Σ 1 und Σ 2 mit s Σ 1 Prob(s) s Σ 2 Prob(s). 3 Erzeuge Baum mit unbeschrifteter Wurzel und Shannon-Fano(Σ 1 ) als linkem sowie Shannon-Fano(Σ 2 ) als rechtem Teilbaum. Beobachtung: erzeugt Präfixkode Probleme: algorithmisch schwierig (Partitionierung), mehrdeutig 13/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} 14/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} Σ 2 1 = {a}, Σ2 2 = {d} 14/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} Σ 2 1 = {a}, Σ2 2 = {d} Σ 3 1 = {c,e}, Σ3 1 = {b} 14/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} Σ 2 1 = {a}, Σ2 2 = {d} Σ 3 1 = {c,e}, Σ3 1 = {b} Σ 4 1 = {c}, Σ4 1 = {e} a d c e b 14/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} Σ 2 1 = {a}, Σ2 2 = {d} Σ 3 1 = {c,e}, Σ3 1 = {b} Σ 4 1 = {c}, Σ4 1 = {e} a d c e b Erwartete Kodelänge = 0,4 2 + 0,1 2 + 0,15 3 + 0,1 3 + 0,25 2 = 2,25 14/23

Shannon-Fano-Algorithmus: Beispiel Wie oben: Σ = {a, b, c, d, e}, Wkten. (0,4; 0,25; 0,15; 0,1; 0,1) Σ 1 1 = {a,d}, Σ1 2 = {b,c,e} Σ 2 1 = {a}, Σ2 2 = {d} Σ 3 1 = {c,e}, Σ3 1 = {b} Σ 4 1 = {c}, Σ4 1 = {e} a d c e b Erwartete Kodelänge = 0,4 2 + 0,1 2 + 0,15 3 + 0,1 3 + 0,25 2 = 2,25 Werden sehen: auch nicht optimal 14/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 4 Erzeuge Baum T mit unmarkierter Wurzel, linkem Teilbaum T 1, rechtem Teilbaum T 2 und Gewicht w 1 + w 2. 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 4 Erzeuge Baum T mit unmarkierter Wurzel, linkem Teilbaum T 1, rechtem Teilbaum T 2 und Gewicht w 1 + w 2. 5 Entferne T 1 und T 2. 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 4 Erzeuge Baum T mit unmarkierter Wurzel, linkem Teilbaum T 1, rechtem Teilbaum T 2 und Gewicht w 1 + w 2. 5 Entferne T 1 und T 2. 6 t := t 1. 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 4 Erzeuge Baum T mit unmarkierter Wurzel, linkem Teilbaum T 1, rechtem Teilbaum T 2 und Gewicht w 1 + w 2. 5 Entferne T 1 und T 2. 6 t := t 1. Beobachtungen: erzeugt Präfixkode, Laufzeit O(n log n) möglich 15/23

Huffman-Algorithmus Huffman (1952): Iterativ Präfixkodebaum erzeugen Vorgehen: bottom-up mithilfe von Gewichtswerten 1 Erzeuge Wald aus t := n Bäumen, die je nur aus der Wurzel mit Markierung s i bestehen und Gewicht Prob(s i ) haben. 2 Solange t > 1 3 Wähle Bäume T 1 und T 2 mit min. Gewichten w 1 und w 2. 4 Erzeuge Baum T mit unmarkierter Wurzel, linkem Teilbaum T 1, rechtem Teilbaum T 2 und Gewicht w 1 + w 2. 5 Entferne T 1 und T 2. 6 t := t 1. Beobachtungen: erzeugt Präfixkode, Laufzeit O(n log n) möglich Anwendungen: Übertragung von Faxen (Gruppen 3 und 4) 15/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e 16/23

Huffman-Algorithmus: Beispiel Wieder: Σ = {a,b,c,d,e}, Wkten. (0,4;0,25;0,15;0,1;0,1) 1,0 0,4 a 0,6 0,25 b 0,35 0,15 c 0,2 0,1 d 0,1 e Erwartete Kodelänge = 0,4 1 + 0,25 2 + 0,15 3 + 0,1 4 + 0,1 4 = 2,15 optimal? 16/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 1. Beobachtung: Jeder innere Knoten in T hat zwei Kinder (sonst Widerspruch zur Optimalität). 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 1. Beobachtung: Jeder innere Knoten in T hat zwei Kinder (sonst Widerspruch zur Optimalität). 2. Beobachtung: Seien s i und s j die Zeichen mit den geringsten Wahrscheinlichkeiten. Dann haben s i und s j in T maximale Tiefe (sonst Widerspruch zur Optimalität). 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 1. Beobachtung: Jeder innere Knoten in T hat zwei Kinder (sonst Widerspruch zur Optimalität). 2. Beobachtung: Seien s i und s j die Zeichen mit den geringsten Wahrscheinlichkeiten. Dann haben s i und s j in T maximale Tiefe (sonst Widerspruch zur Optimalität). Also: s i und s j in T wie im Huffman-Baum 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 1. Beobachtung: Jeder innere Knoten in T hat zwei Kinder (sonst Widerspruch zur Optimalität). 2. Beobachtung: Seien s i und s j die Zeichen mit den geringsten Wahrscheinlichkeiten. Dann haben s i und s j in T maximale Tiefe (sonst Widerspruch zur Optimalität). Also: s i und s j in T wie im Huffman-Baum Ersetze s i und s j durch neuen Buchstaben s mit Prob(s) = Prob(s i ) + Prob(s j ). 17/23

Optimalität der Huffman-Kodierung Theorem Die Huffman-Kodierung hat optimale erwartete Kodelänge. Beweis per Induktion über Σ. Induktionsanfang für Σ 2 klar. Sei nun Σ > 2 und T ein Baum, der einen optimalen Präfixkode für Σ darstellt. 1. Beobachtung: Jeder innere Knoten in T hat zwei Kinder (sonst Widerspruch zur Optimalität). 2. Beobachtung: Seien s i und s j die Zeichen mit den geringsten Wahrscheinlichkeiten. Dann haben s i und s j in T maximale Tiefe (sonst Widerspruch zur Optimalität). Also: s i und s j in T wie im Huffman-Baum Ersetze s i und s j durch neuen Buchstaben s mit Prob(s) = Prob(s i ) + Prob(s j ). Indukt.-Vor.: Rest-Huffman-Baum für neues Σ optimal Induktionsschritt. 17/23

Huffman-Kodierung und Entropie (1/2) Wissen: erwartete Kodelänge L Huffman c von Huffman-Kode optimal Vergleich mit Entropie (theoretischem Optimum) gewünscht 18/23

Huffman-Kodierung und Entropie (1/2) Wissen: erwartete Kodelänge L Huffman c von Huffman-Kode optimal Vergleich mit Entropie (theoretischem Optimum) gewünscht Theorem H(Σ) L Huffman c H(Σ) + 1. 18/23

Huffman-Kodierung und Entropie (1/2) Wissen: erwartete Kodelänge L Huffman c von Huffman-Kode optimal Vergleich mit Entropie (theoretischem Optimum) gewünscht Theorem H(Σ) L Huffman c H(Σ) + 1. Beweis Zweite Ungleichung folgt wegen Optimalität von L Huffman c aus L Huffman c L Shannon c H(Σ) + 1. 18/23

Huffman-Kodierung und Entropie (1/2) Wissen: erwartete Kodelänge L Huffman c von Huffman-Kode optimal Vergleich mit Entropie (theoretischem Optimum) gewünscht Theorem H(Σ) L Huffman c H(Σ) + 1. Beweis Zweite Ungleichung folgt wegen Optimalität von L Huffman c aus L Huffman c } {{ } H(Σ) L Shannon c H(Σ) + 1. Erste Ungleichung: Betrachte ( ) ( ) Prob(s) c(s) s ΣProb(s)log(Prob(s)) s Σ } {{ } L Huffman c 18/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ } {{ } H(Σ) s Σ } {{ } L Huffman c 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( log ( ) 1 Prob(s) s Σ }{{} L Huffman c ) c(s) 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) = E(log(X)) mit Zufallsv. X = 2 c(s) /Prob(s). 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) = E(log(X)) mit Zufallsv. X = 2 c(s) /Prob(s). Jensensche Ungleichung: f konkav: E(f (X)) f (E(X)). 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) = E(log(X)) mit Zufallsv. X = 2 c(s) /Prob(s). Jensensche Ungleichung: f konkav: E(f (X)) f (E(X)). ( ) log Prob(s) 2 c(s) Prob(s) s Σ 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) = E(log(X)) mit Zufallsv. X = 2 c(s) /Prob(s). Jensensche Ungleichung: f konkav: E(f (X)) f (E(X)). ( ) ( ) log Prob(s) 2 c(s) = log 2 c(s) Prob(s) s Σ s Σ 19/23

Huffman-Kodierung und Entropie (2/2) ( ) ( ) Prob(s)log(Prob(s)) Prob(s) c(s) s Σ }{{} H(Σ) = s Σ Prob(s) ( ( log = ( Prob(s) log s Σ s Σ }{{} L Huffman c ) ) 1 c(s) Prob(s) ( )) 1 Prob(s) 2 c(s) = E(log(X)) mit Zufallsv. X = 2 c(s) /Prob(s). Jensensche Ungleichung: f konkav: E(f (X)) f (E(X)). ( ) ( ) log Prob(s) 2 c(s) = log 2 c(s) log(1) = 0 Prob(s) s Σ s Σ wegen der Ungleichung von Kraft/McMillan. 19/23

Huffman-Kodierung: Diskussion Frage: Stört +1 in L Huffman c H(Σ) + 1? Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 20/23

Huffman-Kodierung: Diskussion Frage: Stört +1 in L Huffman c H(Σ) + 1? Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Klar: Huffman-Kode c(a) = 0, c(b) = 1 (oder umgekehrt) erwartete Länge L c = 1 0,99 + 1 0,01 = 1 Entropie = 0,99 log(1/0,99) + 0,01 log(1/0,01) 0,081 Konsequenzen? 20/23

Huffman-Kodierung: Diskussion Frage: Stört +1 in L Huffman c H(Σ) + 1? Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Klar: Huffman-Kode c(a) = 0, c(b) = 1 (oder umgekehrt) erwartete Länge L c = 1 0,99 + 1 0,01 = 1 Entropie = 0,99 log(1/0,99) + 0,01 log(1/0,01) 0,081 Konsequenzen? Definition: Redundanz = erwartete Länge Entropie Hier: Redundanz 0, 919 Anders gesagt: Kompression mehr als 1134% länger als optimal 20/23

Huffman-Kodierung: Diskussion Frage: Stört +1 in L Huffman c H(Σ) + 1? Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Klar: Huffman-Kode c(a) = 0, c(b) = 1 (oder umgekehrt) erwartete Länge L c = 1 0,99 + 1 0,01 = 1 Entropie = 0,99 log(1/0,99) + 0,01 log(1/0,01) 0,081 Konsequenzen? Definition: Redundanz = erwartete Länge Entropie Hier: Redundanz 0, 919 Anders gesagt: Kompression mehr als 1134% länger als optimal Problem: a nicht kürzer als 1 Bit kodierbar unabhängig von Prob(a) 20/23

Erweiterte Huffman-Kodierung Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 2 Buchstaben zu einem Block 21/23

Erweiterte Huffman-Kodierung Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 2 Buchstaben zu einem Block Also: Σ 2 = {aa,ab,ba,bb} mit Prob(aa) = 0,9801, Prob(ab) = Prob(ba) = 0,0099, Prob(bb) = 0,0001 21/23

Erweiterte Huffman-Kodierung Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 2 Buchstaben zu einem Block Also: Σ 2 = {aa,ab,ba,bb} mit Prob(aa) = 0,9801, Prob(ab) = Prob(ba) = 0,0099, Prob(bb) = 0,0001 Huffman-Kode: c(aa) = 0, c(ab) = 10, c(ba) = 110, c(bb) = 111. 21/23

Erweiterte Huffman-Kodierung Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 2 Buchstaben zu einem Block Also: Σ 2 = {aa,ab,ba,bb} mit Prob(aa) = 0,9801, Prob(ab) = Prob(ba) = 0,0099, Prob(bb) = 0,0001 Huffman-Kode: c(aa) = 0, c(ab) = 10, c(ba) = 110, c(bb) = 111. Erwartete Länge = 0,9801 1 + 0,0099 2 + 0,0099 3 + 0,0001 3 = 1,0299 Entropie H(Σ 2 ) = 0,9801 log(1/0,9801) + 2 0,0099 log(1/0,0099) + 0,0001 log(1/0,0001) = 0,161... 21/23

Erweiterte Huffman-Kodierung Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 2 Buchstaben zu einem Block Also: Σ 2 = {aa,ab,ba,bb} mit Prob(aa) = 0,9801, Prob(ab) = Prob(ba) = 0,0099, Prob(bb) = 0,0001 Huffman-Kode: c(aa) = 0, c(ab) = 10, c(ba) = 110, c(bb) = 111. Erwartete Länge = 0,9801 1 + 0,0099 2 + 0,0099 3 + 0,0001 3 = 1,0299 Entropie H(Σ 2 ) = 0,9801 log(1/0,9801) + 2 0,0099 log(1/0,0099) + 0,0001 log(1/0,0001) = 0,161... Also: Redundanz 0,869, Kompression nur noch 537% zu lang 21/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block 22/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block Also: Σ 3 = {aaa,aab,aba,baa,abb,bab,bba,bbb} 22/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block Also: Σ 3 = {aaa,aab,aba,baa,abb,bab,bba,bbb} Huffman-Kode:c(aaa) = 0, c(aab) = 100, c(aba) = 101, c(baa) = 110, c(abb) = 11100, c(bab) = 11101, c(bba) = 11110, c(bbb) = 11111 22/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block Also: Σ 3 = {aaa,aab,aba,baa,abb,bab,bba,bbb} Huffman-Kode:c(aaa) = 0, c(aab) = 100, c(aba) = 101, c(baa) = 110, c(abb) = 11100, c(bab) = 11101, c(bba) = 11110, c(bbb) = 11111 Erwartete Länge = 1,059998 Entropie H(Σ 3 ) 0,242 22/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block Also: Σ 3 = {aaa,aab,aba,baa,abb,bab,bba,bbb} Huffman-Kode:c(aaa) = 0, c(aab) = 100, c(aba) = 101, c(baa) = 110, c(abb) = 11100, c(bab) = 11101, c(bba) = 11110, c(bbb) = 11111 Erwartete Länge = 1,059998 Entropie H(Σ 3 ) 0,242 Also: Redundanz 0,818, Kompression nur noch 338% zu lang 22/23

Erweiterte Huffman-Kodierung: weiteres Beispiel Beispiel: Σ = {a, b}, Prob(a) = 0,99, Prob(b) = 0,01 Idee: Zusammenfassung von je 3 Buchstaben zu einem Block Also: Σ 3 = {aaa,aab,aba,baa,abb,bab,bba,bbb} Huffman-Kode:c(aaa) = 0, c(aab) = 100, c(aba) = 101, c(baa) = 110, c(abb) = 11100, c(bab) = 11101, c(bba) = 11110, c(bbb) = 11111 Erwartete Länge = 1,059998 Entropie H(Σ 3 ) 0,242 Also: Redundanz 0,818, Kompression nur noch 338% zu lang Vergleich der 3 Varianten: k H(Σ k ) L c (Σ k ) L c (Σ k )/k L c (Σ k )/k H(Σ k ) L c (Σ k )/k H(Σ) 1 0,081 1,000 1,000 0,919 0,919 2 0,161 1,030 0,515 0,354 0,434 3 0,242 1,060 0,353 0,111 0,272 22/23

Erweiterte Huffman-Kodierung: Analyse Beobachtung: L c (Σ k )/k = bei Blocklänge k erwartete Kodierungslänge eines Zeichens der erweiterten Huffman-Kodierung 23/23

Erweiterte Huffman-Kodierung: Analyse Beobachtung: L c (Σ k )/k = bei Blocklänge k erwartete Kodierungslänge eines Zeichens der erweiterten Huffman-Kodierung Theorem L c (Σ k )/k H(Σ) + 1/k. 23/23