130 likes | 239 Views
Huffmans Kompressionsverfahren Proseminar bei PD. Dr. Bernd Klauer SS 2004. Huffmans Kompressionsverfahren Proseminar bei PD. Dr.Bernd Klauer SS 2004 Haibo Zhou. 2. Gestalten der Ausarbeitung 3. Gestalten der Vortrags. 1. Materialienbeschaffung.
E N D
Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Huffmans Kompressionsverfahren Proseminar bei PD. Dr.Bernd Klauer SS 2004 Haibo Zhou
2. Gestalten der Ausarbeitung 3. Gestalten der Vortrags 1. Materialienbeschaffung Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004
Einige wichtige Begriffe: Der Kompressor oder Encoder Der Dekompressor oder Decoder Die adaptive Methode semi-adaptive Symmetrische Kompression Wahrscheinlichkeitsmodell Huffmans Kompressionsverfahren Proseminar bei PD. Dr. Bernd KlauerSS 2004 Vorstellung der Datenkompression
Grafische Repräsentation des Huffman-Codes: der Huffman-Baum Beispiel: Symbole A, B, C, D, E, F, G mit die Wahrscheinlichkeiten des Erscheinens jedes Symbols in dem Text: 0.25, 0.21, 0.18, 0.14, 0.09, 0.07 respektive 0.06. Wie bauen wir einen Huffman-Baum mit obiger Symbole? Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Huffman`s Kompressionsverfahren
Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Der Huffman-Baum grafisch dargestellt:
Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Codewörter - einfach ablesen aus dem Huffman-Baum • Man startet mit einem leeren String • Bei jedem Knoten kann man entscheiden, ob man nach links oder rechts weitergeht. Steigt man in den linken Teilbaum ab, so fügt man dem String hinten eine "0" an. Steigt man in den rechten Teilbaum ab, so fügt man dem String hinten eine "1" an • ist man in dem Blatt angelangt, so nimmt man den String als Codewort für das entsprechende Symbol
Er startet mit einer Liste von n Blättern. Jedes Blatt repräsentiert ein Symbol. Dann entfernt er die zwei Blätter mit den kleinsten Wahrscheinlichkeiten aus der Liste. Diese beiden Blätter fasst er zu einem Knoten zusammen. Der Knoten wird in die Liste eingefügt. Rekursiv bei 2 weiter bis die Liste nur noch einen Knoten. Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Codierung
Man startet bei der Wurzel Ist das erste Zeichen im Binärstring eine "0", steigt man in den linken Teilbaum ab, sonst in den rechten. Dieses Vorgehen wiederholt man, bis man in einem Blatt ankommt. Definition: Präfixfrei: kein Codewort ist der Anfang eines anderen Codewortes. Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Effizientere Decodierung
Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Was wäre ein optimaler Code? Ein optimaler Code bedeutet, dass der Code die mittlere (durchschnittliche) Codewortlänge minimiert. mittlere Codewortlänge L
Sein die Symbole s1, s2, s3,...,sn absteigend sortiert mit p1 >= p2 >= p3 >= ... >= pn.Das heißt, es soll gelten: l1 <= l2 <= l3 <= ... <= ln. Nun, es ist anhand der Formel zur Berechnung von L relativ leicht einzusehen, dass die mittlere Codewortlänge L nur dann minimal sein kann, wenn eben die Codewortlängen aufsteigend sortiert sind. Daher ist der Huffman-Code optimal! Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Der Huffman-Code ist ein optimaler Code!
Schritt: Lege eine Tabelle mit allen im Originaltext vorhandenen Symbolen und deren relativen Häufigkeiten an. Schritt: Konstruiere den Huffman-Baum und erzeuge daraus eine Code-Tabelle. Schritt: Durchlaufe den Text und ersetzte jedes Symbol mit dem entsprechenden Code. Das Resultat ist ein großer binärer String. Schritt: Damit dieser String platzsparend gespeichert werden kann, zerlegen wir ihn. Die meisten Computer arbeiten heute mit Ganzzahlen (Integers), die 32 Bit lang sind. Daher zerlegen wir den String in Blöcke der Länge 32. Schritt: Jeder dieser Blöcke kann nun einfach in einen Integer umgewandelt werden. Diese speichern wir. Zusätzlich speichern wir für die Decodierung den Huffman-Baum ab. Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Zusammenfassung--Komprimierung
Schritt: Lade den Huffman-Baum. Schritt: Lies die Integers und interpretiere sie wiederum als einen großen binären String. Starte bei der Wurzel im Huffman-Baum. Ist das erste Zeichen im Binärstring eine "0", steige in den linken Teilbaum ab, sonst in den rechten. Wiederhole, bis in einem Blatt angekommen. Das gefundene Symbol wird ausgegeben. Wiederhole dieses Prozedere, bis der ganze Binärstring abgearbeitet ist. Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Zusammenfassung--Dekomprimieren
Huffmans KompressionsverfahrenProseminar bei PD. Dr. Bernd KlauerSS 2004 Vielen Dank! Haibo Zhou Juli 2004