Huffman Entropie-Codierung Codierung mit variabler Länge Statistisches Verfahren: Prinzip: Häufig vorkommende Zeichen durch kurze Bitfolgen darstellen
Präfix-Codes Telefon-Nummern und Vorwahlen sind Präfix-Codes 0261 Koblenz/Rhein Es gibt keine Vorwahlen 02610..., 02611.., 02612,.. Große Orte haben kurze Vorwahlen, kleine längere 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Koblenz/Rhein
Präfix-Codes Telefon-Nummern und Vorwahlen sind Präfix-Codes 110 Notruf Es gibt keine Rufnummern 110... 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Fano-Bedingung: Wenn kein Codewort Präfix eines anderen Codewortes ist,dann ist jede codierte Zeichenfolge decodierbar. Polizei
Binäre Präfixcodes Zeichenfolge 1 abacabaca besteht aus 1 1 1 5 a 1 1 abacabaca Codes 1 besteht aus 1 1 1 1 5 a 1 2 b 00 2 c 01 00 01 00 01 Konkatenation der Kantenmarkierungen von der Wurzel bis in die Blätter liefert Präfixcodes ! Oder so ... Codierung für abacabaca 1001011001011 Ist das die kürzeste Präfixfolge ?
Huffman-Algorithmus Input: Zeichenfolge aus einem Alphabet Output: Binärer Baum, Knotenmarkierung=Häufigkeiten, Kantenmarkierungen 0,1 Start: Zähle die Häufigkeit jedes Zeichens im Text, erzeuge für jedes Zeichen einen Knoten markiert mit der Häufigkeit Wiederhole, bis es keinen Knoten gibt, zu dem keine Kante führt: Wähle 2 Knoten, zu denen keine Kante hinführt, mit kleinster Häufigkeit. Erzeuge neuen Knoten mit der Summe der Häufigkeiten der gewählten Knoten. Ziehe zwei Kanten von dem neuen Knoten zu den gewählten. Markiere die zwei von einem Knoten ausgehenden Kanten unterschiedlich mit 0 und 1.
Huffman-Code „Meerrettich“ 1 1 1 1 2 2 3 M i c h r t e 1. Zeichen nach Häufigkeit aufsteigend sortieren Knoten mit der Summe der Häufigkeiten markieren 2 2 4 2. Knoten mit geringster Häufigkeit erhalten gemeinsame Wurzel 7 4 11
Huffman-Code „Meerrettich“ 1 1 1 1 2 2 3 M i c h r t e 1 1 1 2 2 4 1 1 7 4 Kanten markieren 1 11
Huffman-Code „Meerrettich“ 1 1 1 1 2 2 3 M i c h r t e e 00 1 1 1 t 2 2 4 r 1 1 7 h 4 c 1 i 11 M
Huffman-Code „Meerrettich“ 1 1 1 1 2 2 3 M i c h r t e e 00 1 1 1 t 010 2 2 4 r 011 1 1 7 h 100 4 c 101 1 i 110 11 M 111
Meerrettich 111 00 00 011 011 00 010 010 110 101 100
Vorlesung „Medientechnik WS 1999/2000“ Dr. Manfred Jackel Studiengang Computervisualistik Institut für Informatik Universität Koblenz-Landau Rheinau 1 56075 Koblenz © Manfred Jackel E-Mail: jkl@uni-koblenz.de WWW: www.uni-koblenz.de/~jkl mtech.uni-koblenz.de Literatur zu diesem Kapitel: Sedgewick: Algorithmen Hyperlinks zu diesem Kapitel Grafik-Quellen