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