Der Huffman Algorithmus



Ähnliche Dokumente
A1.7: Entropie natürlicher Texte

Theoretische Grundlagen der Informatik WS 09/10

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

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Codierungstheorie Rudolf Scharlau, SoSe

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

15 Optimales Kodieren

A2.3: Zur LZ78 Komprimierung

Informationsblatt Induktionsbeweis

Mathematik für Information und Kommunikation

Übung 13: Quellencodierung

Theoretische Informatik SS 04 Übung 1

Hilfe zur Urlaubsplanung und Zeiterfassung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Was ist Sozial-Raum-Orientierung?

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Primzahlen und RSA-Verschlüsselung

Bilder im BMP Format (1)

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 )

WS 2009/10. Diskrete Strukturen

Binärdarstellung von Fliesskommazahlen

Professionelle Seminare im Bereich MS-Office

1 Mathematische Grundlagen

Wie Sie mit Mastern arbeiten

10.1 Auflösung, Drucken und Scannen

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Repetitionsaufgaben Wurzelgleichungen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Single Parity check Codes (1)

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

impact ordering Info Produktkonfigurator

Grundlagen der Theoretischen Informatik, SoSe 2008

Der Zwei-Quadrate-Satz von Fermat

Grundlagen der Technischen Informatik. 2. Übung

Info zum Zusammenhang von Auflösung und Genauigkeit

Leichte-Sprache-Bilder

1 topologisches Sortieren

Was meinen die Leute eigentlich mit: Grexit?

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

7 Rechnen mit Polynomen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

INTERNET UND MMS MIT DEM QTEK2020 MARCO 28. MÄRZ 04

Alle gehören dazu. Vorwort

Grundbegriffe der Informatik

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Einführung in. Logische Schaltungen

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

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

A2.3: Sinusförmige Kennlinie

Fotos verkleinern mit Paint

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Die Online-Bestandserhebung im LSB Niedersachsen

Anleitung über den Umgang mit Schildern

Technische Informatik Basispraktikum Sommersemester 2001

Programmierung Weichenmodul S/D Tafel 1

Allgemeine Beschreibung von Blockcodes

Statuten in leichter Sprache

Kapitel 3. Codierung von Text (ASCII-Code, Unicode)

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

3 Quellencodierung. 3.1 Einleitung

YouTube: Video-Untertitel übersetzen

Tevalo Handbuch v 1.1 vom

II. Daten sichern und wiederherstellen 1. Daten sichern

Die Wirtschaftskrise aus Sicht der Kinder

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Zwischenablage (Bilder, Texte,...)

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

SANDBOXIE konfigurieren

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Outlook-Daten komplett sichern

4. Woche Decodierung; Maximale, Perfekte und Optimale Codes. 4. Woche: Decodierung; Maximale, Perfekte und Optimale Codes 69/ 140

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Approximation durch Taylorpolynome

Festigkeit von FDM-3D-Druckteilen

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Lizenzen auschecken. Was ist zu tun?

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Fragen und Antworten zum Thema. Lieferanspruch

Transkript:

Der Huffman Algorithmus Für das Folgende setzen wir voraus, dass die Quellensymbole q ν einem Alphabet {q μ } = {A, B, C,...} mit dem Symbolumfang M entstammen und statistisch voneinander unabhängig seien. Beispielsweise gelte für den Symbolumfang M = 8: David A. Huffman hat im Jahr 1952 also kurz nach Shannons bahnbrechenden Veröffentlichungen einen Algorithmus zur Konstruktion von optimalen präfixfreien Codes angegeben. Wir beschränken uns hier wieder auf Binärcodes. Das heißt: Für die Codesymbole gelte stets c ν {0, 1}. Der Huffman Algorithmus soll hier ohne Herleitung und Beweis rezeptartig angegeben werden: 1. Man ordne die Symbole nach fallenden Auftrittswahrscheinlichkeiten. 2. Man fasse die zwei unwahrscheinlichsten Symbole zu einem neuen Symbol zusammen. 3. Man wiederhole Schritt 1 und 2, bis nur mehr zwei (zusammengefasste) Symbole übrig bleiben. 4. Anschließend wird die wahrscheinlichere Symbolmenge mit 1 und die unwahrscheinlichere mit 0 binär codiert. 5. Schließlich ergänzt man schrittweise (von unten nach oben) den Binärcode des aufgespaltenen Teilcodes jeweils mit 1 bzw. 0. Beispiel: Ohne Einschränkung der Allgemeingültigkeit setzen wir voraus, dass die M = 6 Symbole A,..., F bereits entsprechend ihren Wahrscheinlichkeiten geordnet sind: Durch paarweises Zusammenfassen und anschießendem Sortieren erhält man in fünf Schritten die folgenden Symbolkombinationen (resultierende Wahrscheinlichkeiten in Klammern): 1. A (0.30), B (0.24), C (0.20), EF (0.14), D (0.12), 2. A (0.30), EFD (0.26), B (0.24), C (0.20), 3. BC (0.44), A (0.30), EFD (0.26), 4. AEFD (0.56), BC (0.44), 5. Root AEFDBC (1.00). Rückwärts (gemäß den Schritten 5 bis 1) erfolgt dann die Zuordnung zu Binärsymbolen. Ein x weist darauf hin, dass in den nächsten Schritten noch Bits hinzugefügt werden müssen: 5. AEFD 1x, BC 0x, 4. A 11, EFD 10x, 3. B 01, C 00, 2. EF 101x, D 100, 1. E 1011, F 1010. Die Unterstreichungen markieren die endgültige Binärcodierung. Lehrstuhl fuer Nachrichtentechnik (LNT) 1 / 7 Technische Universitaet Muenchen

Zum Begriff Entropiecodierung Wir gehen weiterhin von den Wahrscheinlichkeiten und Zuordnungen des letzten Beispiels aus: Von den sechs Quellensymbolen werden also drei mit je zwei Bit, eines mit drei Bit und zwei Symbole (E und F) mit vier Bit codiert. Die mittlere Codewortlänge ergibt sich damit zu Aus dem Vergleich mit der Quellenentropie H = 2.365 bit/quellensymbol erkennt man die Effizienz der Huffman Codierung. Merke: Es gibt keinen präfixfreien ( sofort decodierbaren) Code, der allein unter Ausnutzung der Auftrittswahrscheinlichkeiten zu einer kleineren mittleren Codewortlänge führt als der Huffman Code. In diesem Sinne ist der Huffman Code optimal. Wären die Symbolwahrscheinlichkeiten so würde für die Entropie und für die mittlere Codewortlänge gleichermaßen gelten: Hinweis: Aus Platzgründen ist hier der Logarithmus dualis log 2 mit ld bezeichnet. Aus dieser Eigenschaft erklärt sich der Begriff Entropiecodierung. Man versucht bei dieser Form von Quellencodierung, die Länge L μ der Binärfolge (bestehend aus Nullen und Einsen) für das Symbol q μ gemäß der Entropieberechnung wie folgt an dessen Auftrittswahrscheinlichkeit p μ anzupassen: Natürlich gelingt das nicht immer, sondern nur dann, wenn alle Auftrittswahrscheinlichkeiten p μ in der Form 2 k (k = 1, 2, 3,...) dargestellt werden können. In diesem Sonderfall stimmt die mittlere Codewortlänge L M exakt mit der Quellenentropie H überein (siehe zweites Zahlenbeispiel). Nach dem Quellencodierungstheorem gibt es keinen einzigen (decodierbaren) Code, der im Mittel mit weniger Binärzeichen pro Quellensymbol auskommt. Lehrstuhl fuer Nachrichtentechnik (LNT) 2 / 7 Technische Universitaet Muenchen

Darstellung des Huffman Codes als Baumdiagramm (1) Häufig wird für die Konstruktion des Huffman Codes eine Baumstruktur verwendet.für das bisher betrachtete Beispiel zeigt diese die folgende Grafik: Man erkennt: Bei jedem Schritt des Huffman Algorithmus werden die beiden Zweige mit den jeweils kleinsten Wahrscheinlichkeiten zusammengefasst. Der Knoten im Schritt 1 fasst die zwei Symbole E und F mit kleinster Wahrscheinlichkeit zusammen. Er ist mit p E + p F = 0.14 beschriftet. Der vom Symbol mit der kleineren Wahrscheinlichkeit (hier F) zum Summenknoten verlaufende Zweig ist blau eingezeichnet, der andere rot. Nach fünf Schritten ist man bei der Baumwurzel ( Root ) mit der Gesamtwahrscheinlichkeit 1 angelangt. Verfolgt man nun den Verlauf von der Wurzel (in obiger Grafik mit gelber Füllung) zu den einzelnen Symbolen zurück, so kann man aus den Farben der einzelnen Zweige die Symbolzuordnung ablesen. Mit den Zuordnungen rot 1 und blau 0 ergibt sich beispielsweise von der Wurzel zu Symbol A: rot, rot 11, B: blau, rot 01, C: blau, blau 00, D: rot, blau, blau 100, E: rot, blau, rot, rot 1011, F: rot, blau, rot, blau 1010. Auch die Zuordnung rot 0 und blau 1 würde zu einem optimalen präfixfreien Code führen. Lehrstuhl fuer Nachrichtentechnik (LNT) 3 / 7 Technische Universitaet Muenchen

Darstellung des Huffman Codes als Baumdiagramm (2) Die folgende Grafik zeigt die Huffman Codierung von 49 Quellensymbolen q ν {A, B, C, D, E, F} mit der auf der letzten Seite hergeleiteten Zuordnung. Die binäre Codesymbolfolge weist die mittlere Codewortlänge L M = 125/49 = 2.551 auf. Die Farben dienen ausschließlich zur besseren Orientierung. Aufgrund der sehr kurzen Quellensymbolfolge (N = 49) weichen die Auftrittshäufigkeiten h A,..., h F der simulierten Folgen signifikant von den vorgegebenen Wahrscheinlichkeiten p A,..., p F ab: Damit ergibt sich ein etwas größerer Entropiewert: Würde man den Huffman Code mit diesen neuen Wahrscheinlichkeiten h A,..., h F bilden, so ergäben sich folgende Zuordnungen: Nun würden nur die Symbole A und C mit zwei Bit dargestellt, die anderen vier Symbole durch jeweils drei Bit. Die Codesymbolfolge hätte dann eine Länge von (16 + 9) 2 + (7 + 7 + 5 + 5) 3 = 122 Bit, wäre also um drei Bit kürzer als nach der bisherigen Codierung L M = 2.49 bit/quellensymbol. Dieses Beispiel lässt sich wie folgt interpretieren: Die Huffman Codierung lebt von der (genauen) Kenntnis der Symbolwahrscheinlichkeiten. Sind diese sowohl dem Sender als auch dem Empfänger bekannt, so ist die mittlere Codewortlänge L M oft nur unwesentlich größer als die Quellenentropie H. Insbesondere bei relativ kurzen Dateien kann es zu Abweichungen zwischen den (erwarteten) Symbolwahrscheinlichkeiten p μ und den (tatsächlichen) Symbolhäufigkeiten h μ kommen. Besser wäre es, für jede Datei (basierend auf den h μ ) einen eigenen Huffman Code zu generieren. In diesem Fall muss aber dem Decoder auch der spezifische Huffman Code mitgeteilt werden, was zu einem gewissen Overhead führt, der nur bei längeren Dateien vernachlässigt werden kann. Bei kleinen Dateien lohnt sich dieser Aufwand nicht. Lehrstuhl fuer Nachrichtentechnik (LNT) 4 / 7 Technische Universitaet Muenchen

Einfluss von Übertragungsfehlern auf die Decodierung (1) Der Huffman Code ist aufgrund der Eigenschaft präfixfrei verlustlos. Das bedeutet: Aus der binären Codesymbolfolge lässt sich die Quellensymbolfolge vollständig rekonstruieren. Kommt es aber bei der Übertragung zu einem Bitfehler (aus einer 0 wird eine 1 bzw. aus einer 1 eine 0), so stimmt natürlich auch die Sinkensymbolfolge áυ ν ñ nicht mehr mit der Quellensymbolfolge áq ν ñ überein. Die nachfolgenden Beispiele zeigen, dass ein einziger Übertragungsfehler manchmal eine Vielzahl von Fehlern hinsichtlich des Ursprungstextes zur Folge haben kann. Beispiel 1: Wir betrachten die gleiche Quellensymbolfolge und den gleichen Huffman Code wie auf der vorherigen Seite. Die obere Grafik zeigt, dass bei fehlerfreier Übertragung aus der Binärfolge 111011... wieder die Folge AEBFCC... rekonstruiert werden kann. Wird aber das 6. Bit verfälscht (von 1 auf 0, rote Markierung in der mittlere Grafik), so wird aus dem Quellensymbol q 2 = E das Sinkensymbol υ 2 = F. Eine Verfälschung von Bit 13 (von 0 auf 1, rote Markierung in der unteren Grafik) führt dagegen zu einer Verfälschung von vier Quellensymbolen: CCEC DBBD. Auf der nächsten Seite folgt ein weiteres Beispiel zum Einfluss von Übertragungsfehlern bei Huffman. Lehrstuhl fuer Nachrichtentechnik (LNT) 5 / 7 Technische Universitaet Muenchen

Einfluss von Übertragungsfehlern auf die Decodierung (2) Beispiel 2: Eine zweite Nachrichtenquelle ebenfalls mit Symbolumfang M = 6 ist durch folgende Symbolwahrscheinlichkeiten gekennzeichnet: Hier führt der Huffman Algorithmus zu folgender Zuordnung: Die in der Grafik angegebene Quellensymbolfolge ADABD... wird somit durch die Codesymbolfolge 0'100'0'111'100'... dargestellt. Die Hochkommata dienen hierbei nur der Orientierung. Bei der Übertragung wird nun das erste Bit verfälscht: Anstelle von 01000111100... empfängt man 11000111100... Aus den beiden ersten Quellensymbolen AD 0100 wird so das Sinkensymbol F 1100. Die weiteren Symbole werden dann wieder richtig detektiert, aber nun nicht mehr beginnend bei ν = 3, sondern bei ν = 2. Je nach Anwendung sind die Auswirkungen unterschiedlich: Handelt es sich bei der Quelle um einen natürlichen Text und bei der Sinke um einen Menschen, so bleibt der Großteil des Textes für den Leser verständlich. Ist die Sinke jedoch ein Automat, der sukzessive alle υ ν mit den entsprechenden q ν vergleicht, so ergibt sich eine Verfälschungshäufigkeit von deutlich über 50%. Nur die blauen Symbole der Sinkensymbolfolge áυ ν ñ stimmen dann mit den entsprechenden Quellensymbolen überein. Lehrstuhl fuer Nachrichtentechnik (LNT) 6 / 7 Technische Universitaet Muenchen

Anwendung der Huffman Codierung auf k Tupel Der Huffman Algorithmus liefert in seiner Grundform immer dann unbefriedigende Ergebnisse, wenn eine Binärquelle (M = 2) vorliegt, zum Beispiel mit dem Symbolvorrat {X, Y}, es statistische Bindungen zwischen den Symbolen der Eingangsfolge gibt, die Wahrscheinlichkeit des häufigsten Symbols deutlich größer ist als 50%. Abhilfe schafft man in allen diesen Anwendungsfällen, in dem man mehrere Symbole zusammenfasst und den Huffman Algorithmus auf einen neuen Symbolvorrat {A, B, C, D,... } anwendet. Bildet man k Tupel, so steigt der Symbolumfang von M auf M = M k. Wir wollen im folgenden Beispiel die Vorgehensweise anhand einer Binärquelle ( M = 2) verdeutlichen. Weitere Beispiele finden Sie in Aufgabe A2.7, Aufgabe Z2.7 und Aufgabe A2.8. Beispiel: Wir gehen hier von einer gedächtnislosen Binärquelle (M = 2) mit den Symbolen {X, Y} aus: Die Symbolwahrscheinlichkeiten seien p X = 0.8 und p Y = 0.2. Damit ergibt sich die Quellenentropie zu H = 0.722 bit/quellensymbol. Wir betrachten die Symbolfolge XXXYXXXXXXXXYYXXXXXYYXXYXYXXYX... Der Huffman Algorithmus kann auf diese Quelle direkt nicht angewendet werden, das heißt, man benötigt ohne weitere Maßnahme für jedes binäre Quellensymbol auch ein Bit. Aber: Fasst man jeweils zwei Binärsymbole zu einem Zweiertupel (k = 2) zusammen entsprechend XX A, XY B, YX C, YY D, so kann man den Huffman Algorithmus auf die resultierende Folge ABAACADAABCBBAC... mit M = 4 anwenden. Wegen erhält man A 1, B 00, C 011, D 010 sowie Ebenso kann man Dreiertupel (k = 3) bilden. Mit den Kombinationen XXX A, XXY B, XYX C, XYY D, YXX E, YXY F, YYX G, YYY H kommt man für die oben angegebene Eingangsfolge zur äquivalenten Folge AEBAGADBCC... (basierend auf dem neuen Symbolumfang M = 8) und zu folgenden Wahrscheinlichkeiten: Die Huffman Codierung lautet somit: A 1, B 011, C 010, D 00011, E 001, F 00010, G 00001, H 00000. Damit erhält man für die mittlere Codewortlänge: Bereits mit k = 3 wird demnach in diesem Beispiel die Quellenentropie H = 0.722 fast erreicht. Lehrstuhl fuer Nachrichtentechnik (LNT) 7 / 7 Technische Universitaet Muenchen