Präfixcodes und der Huffman Algorithmus



Ähnliche Dokumente
Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* aller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt:

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

15 Optimales Kodieren

UNIVERSITÄT KARLSRUHE Institut für Analysis HDoz. Dr. P. C. Kunstmann Dipl.-Math. M. Uhl. Sommersemester 2009

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

Definition Suffixbaum

Aufgaben zur Vorlesung Analysis II Prof. Dr. Holger Dette SS 2012 Lösungen zu Blatt 6

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

Domäne und Bereich. Relationen zwischen Mengen/auf einer Menge. Anmerkungen zur Terminologie. r Relationen auf/in einer Menge.

Funktionen und Mächtigkeiten

Mathematik. Name, Vorname:

Codierungstheorie Rudolf Scharlau, SoSe

Primzahlen und RSA-Verschlüsselung

Streuungsmaße. Grundbegriffe

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Sprachen. Grammatiken (Einführung)

Hausaufgabe 2 (Induktionsbeweis):

Dein Trainingsplan. sportmannschaft. ... und was sonst noch wichtig ist. Deine Zähne sind wie deine. und du bist der Trainer!

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 )

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

2.11 Kontextfreie Grammatiken und Parsebäume

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

Mathematik schriftlich

Einführung in die Algebra

3 Quellencodierung. 3.1 Einleitung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Mathe Warm-Up, Teil 1 1 2

Theoretische Grundlagen der Informatik WS 09/10

1 Kurvendiskussion /40

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Codierung, Codes (variabler Länge)

Abitur - Leistungskurs Mathematik. Sachsen-Anhalt 1999

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

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

Programmiersprachen und Übersetzer

Schriftliche Prüfungsarbeit zum mittleren Schulabschluss 2007 im Fach Mathematik

LUDWIG-MAXIMILIANS-UNIVERSITÄT MÜNCHEN. 7. Übung/Lösung Mathematik für Studierende der Biologie

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

Teilfachprüfung Mathematik Studiengang: Wirtschaft Neue Diplomprüfungsordnung (NPO)

Wirtschaftsmathematik für International Management (BA) und Betriebswirtschaft (BA)

Kapiteltests zum Leitprogramm Binäre Suchbäume

Mathematik für Information und Kommunikation

Boole'sche Algebra. Inhaltsübersicht. Binäre Funktionen, Boole'sche Algebren, Schaltalgebra. Verknüpfungen der mathematischen Logik

Lineare Gleichungssysteme

3 Wiederholung des Bruchrechnens

1 Mathematische Grundlagen

SPSS Clementine. Auswertung von offenen Fragen mit TextMining für Clementine. Beispiel: Haustiere

Beispiel Zusammengesetzte Zufallsvariablen

Thema 13 Integrale, die von einem Parameter abhängen, Integrale von Funktionen auf Teilmengen von R n

Satz 6.5 (Mittelwertsatz der Integralrechnung) Sei f : [a, b] R stetig. Dann gibt es ein ξ [a, b], so dass. b a. f dx = (b a)f(ξ) f dx (b a)m.

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

Großübung zu Kräften, Momenten, Äquivalenz und Gleichgewicht

Grundlagen der Theoretischen Informatik, SoSe 2008

1 topologisches Sortieren

Die Regelungen zu den Einsendeaufgaben (Einsendeschluss, Klausurzulassung) finden Sie in den Studien- und Prüfungsinformationen Heft Nr. 1.

Lineare Gleichungssysteme

Der Zwei-Quadrate-Satz von Fermat

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

7-1 Elementare Zahlentheorie. 1 a ist quadratischer Rest modulo p, 1 falls gilt a ist quadratischer Nichtrest modulo p, 0 p a. mod p, so ist.

Run Length Coding und Variable Length Coding

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

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

Grundlagen der Technischen Informatik. 2. Übung

Grundbegriffe der Informatik

Einfache kryptographische Verfahren

Einführung in Mathcad H.

Einführung in die Kodierungstheorie

WS 2009/10. Diskrete Strukturen

Theoretische Grundlagen der Informatik

Pause im Alltag - Babysitterbörse der Caritas macht-s möglich

3.2 Spiegelungen an zwei Spiegeln

1. Voraussetzung. 2. Web-Account anlegen. 3. Einloggen. 4. Kunden-Portal verwenden 5. Sub-Accounts 5.1Sub-Account anlegen. 5.2 Sub-Account bearbeiten

7 Rechnen mit Polynomen

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Aufgaben zur Flächenberechnung mit der Integralrechung

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

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Sport Club (SC) Swiss Re München e.v.

1KOhm + - y = x LED leuchtet wenn Schalter x gedrückt ist

Binärdarstellung von Fliesskommazahlen

Repetitionsaufgaben Wurzelgleichungen

Kurzanleitung MAN E-Learning (WBT)

Technische Informatik - Eine Einführung

Theoretische Informatik SS 04 Übung 1

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

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

Was man mit dem Computer alles machen kann

Übungen für Woche 10

Limit Texas Hold em. Meine persönlichen Erfahrungen

Anmerkungen zur Übergangsprüfung

a' c' Aufgabe: Spiegelung an den Dreiecksseiten und Anti-Steinersche Punkte Darij Grinberg

Reinigung 146. Reinigen des Hindernissensors. Reinigung der Projektoroberfläche. Reinigen des Projektionsfensters. Warnung. Warnung.

Data Mining: Einige Grundlagen aus der Stochastik

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

! " # $ " % & Nicki Wruck worldwidewruck

123 Familienausgleichskasse

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

Divergenz 1-E1. Ma 2 Lubov Vassilevskaya

Einführung in. Logische Schaltungen

Kompetitive Analysen von Online-Algorithmen

Transkript:

Präfixcodes und der Huffmn Algorithmus Präfixcodes und Codebäume Im Folgenden werden wir Codes untersuchen, die in der Regel keine Blockcodes sind. In diesem Fll können Codewörter verschiedene Länge hben und deshlb gehen wir von der Vektorschreibweise b und betrchten Codewörter ls Strings vribler Länge. Definition Sei ϕ : A Q + eine Codierung einer endlichen Menge A durch nichtleere Wörter (Strings) über einem Alphbet Q und C = Im(ϕ) der zugehörige Code. Mn bechte, dss die Abbildung ϕ dzu injektiv sein muss. Die Codierung ϕ knn wie folgt zu einer Abbildung ϕ : A Σ erweitert werden, mit der mn lle Wörter über A, lso lle Nchrichten über diesem Alphbet verschlüsseln knn: wobei die Konktention bezeichnet. ϕ (... n ) = ϕ( ) ϕ( )... ϕ( n ) Der Code C ist ein Präfixcode, wenn kein Codewort us C Präfix (lso Anfngsstück) eines nderen Codewortes us C ist. Der Code C ist eindeutig dekodierbr, wenn sich us jeder kodierten Nchricht diese Nchricht eindeutig rekonstruieren lässt, mit nderen Worten, wenn uch ϕ eine injektive Abbildung ist. Beobchtung: Jeder Präfixcode ist eindeutig decodierbr und jeder Blockcode ist uch ein Präfixcode und dmit eindeutig dekodierbr. Zuerst mcht mn sich klr, dss mn jeden Präfixcode durch einen sogennnten Bum repräsentieren knn. Ein Bum ist eine spezielle Struktur, mit der wir uns in Zukunft noch häufig beschäftigen werden. Definition: Ein Bum besteht us einer Menge V von Knoten mit einer speziellen Eltern-Kind-Reltion, welche die folgenden Eigenschften ht: Es gibt einen usgezeichneten Knoten r, den mn die Wurzel des Bums nennt und der keinen Elternknoten besitzt. Jeder Knoten ußer der Wurzel ht einen eindeutig bestimmten Elternknoten. Jeder Knoten v ist Nchfhre der Wurzel r, (d.h. v ist selbst die Wurzel oder ein Kind, Enkel, Urenkel, usw. von r). Ein Knoten, der keine Kinder ht, wir ls ein Bltt des Bums bezeichnet. Knoten, die mindestens ein Kind hben, nennt mn innere Knoten des Bums. Bäume werden häufig grphisch drgestellt, wobei die Wurzel den höchsten (bzw. niedrigsten) Punkt bildet und lle Kinder uf einem Niveu unter (bzw. über) ihre Elternknoten gezeichnet und mit dem Elternknoten durch eine Knte verbunden werden.

Für den Bum eines Präfixcodes verwendet mn einen speziellen Typ, in dem jeder innere Knoten v höchstens Q Kinder ht, die Knten von v zu den Kindern mit verschiedenen Symbolen us Q mrkiert sind und lle Wege, die von der Wurzel strten und ein Codewort us C ls Mrkierung hben, zu einem Bltt führen. Diese Blätter können zusätzlich durch ds codierte Symbol us A mrkiert werden. Die folgende Abbildung zeigt zwei Beispiele der Bumdrstellung eines Präfixcodes. Auf der linken Seite ist Q = {, } und in diesem Fll spricht mn von einem Binärcode und einem Binärbum. Wie mn leicht us der Abbildung erkennen knn, besteht die codierte Menge A us den Symbolen, und 3 und der Code C besteht us den Codewörtern, und. Der Bum uf der rechten Seite repräsentiert eine Codierung der Menge A = {,, 3, 4, 5 } über dem Alphbet Q = {,, } durch den Code C = {,,,, }. Wurzel r: Q = {,} Wurzel r: Q={,,} 3 3 5 4 Ht mn die Bumdrstellung eines Präfixcodes gegeben, dnn knn mn für jedes Codewort c C durch Strt im Wurzelknoten und Verfolgung des Weges, dessen Kntenmrkierungen durch die Buchstbenfolge von c vorgegeben ist, zum Bltt von c gelngen und dort ds codierte Symbol uslesen. Diesen Prozess knn mn uch beim Lesen der kodierten Nchricht usführen, wobei mn immer dnn, wenn mn bei einem Bltt ngekommen ist und dmit ein Symbol decodiert ht, wieder zurück zur Wurzel springen muss. Mn bechte, dss es uch eindeutig decodierbre Codes gibt, die keine Präfixcodes sind, z.b. C = {, }. Verfolgt mn ds Ziel, die Codierung einer Nchricht möglichst kurz zu hlten, muss mn versuchen, die einzelnen Codewörter kurz zu hlten, insbesondere die von häufig vorkommenden Symbolen. Andererseits knn mn bei festgelegtem Q nicht lle Codewörter beliebig kurz hlten. Der folgende Stz gibt Auskunft drüber, welche Schrnken mn generell erreichen knn.

Stz von Krft, Mc Milln () Sei C = {c,...,c u } ein eindeutig dekodierbrer Code und seien n,...,n u die zugehörigen Codewortlängen über Q, wobei Q = q. Dnn gilt: u q n k k= () Wenn positive gnze Zhlen n,..., n u die Ungleichung us () erfüllen, so gibt es uch einen Präfixcode C = {c,...c u } über einem Alphbet Q der Größe q mit den Codewortlängen n,...,n u. Beweis: Wir zeigen nur (). Sei Q = {,,...,, q } und o.b.d.a. n n... n u. Als erstes setzen wir c =... bestehend us n Nullen. Seien c,...,c i mit i < u schon beknnt dnn zeigen wir jetzt, wie mn induktiv c i+ bestimmt. Wir wählen c i+ ls lexikogrfisch kleinstes Wort der Länge n i+, ds c,...,c i nicht ls Präfix enthält. Gibt es dies überhupt? J, die c j, j < i+ verbieten zwr für die Whl von c i+ einige Wörter der Länge n i+, ber nicht lle. Jedes der c j verbietet q n i+ n j Wörter der Länge n i+, insgesmt sind lso verboten i q n i+ n j = q n i+ j= i j= q n j Wörter, ber diese Zhl ist wegen () echt kleiner ls q n i+, der Anzhl ller Wörter dieser Länge. Mithin existiert ds so definierte c i+. Beispiel: Sei q = und die gewünschten Codewortlängen seien n =, n = n 3 = n 4 = 3, n 5 = n 6 = 4. Wir hben 6 k= n k = und folglich gibt es einen dzu pssenden des Präfixcode. Die n Hnd des Beweises erzeugten Codewörter sind,,,,,. Der Huffmn Algorithmus In den folgenden Überlegungen wird die Ttsche eine entscheidende Rolle spielen, dss in typischen Nchrichten die verwendeten Zeichen us A nicht gleichhäufig uftreten. Mehr noch, wir wollen dvon usgehen, dss mn bereits eine Whrscheinlichkeitsverteilung für die reltive Häufigkeit des Auftretens der Symbole x us A kennt. Wir wollen diese reltive Häufigkeit mit Pr(x) bezeichnen. Um in diesem Zusmmenhng von einer Whrscheinlichkeitsverteilung zu sprechen, muss Pr(x) für jedes x A ein Wert zwischen und sein und drüber hinus muss die Gleichung x A Pr(r) = erfüllt sein. Ziel ist die Konstruktion eines Präfixcodes C, für den der Erwrtungswert

der Codewortlänge x A Pr(x) n(x) miniml ist, wobei n(x) die Länge des Codeworts ϕ(x) C bezeichnet. Ein solcher Code minimiert dnn ntürlich uch die erwrtete Gesmtlänge einer codierten Nchricht. Dieses Ziel erreicht mn mit dem sogennnten Huffmn Codes, einer vielbenutzten Technik zur Dtenkompression, der eine optimle Effizienz ht. Wir werden hier nur den Fll der Binärcodes, d.h. Q = {, } betrchten. Beispiel: Wir illustrieren diese Begriffsbildung noch einml n der Drstellung von zwei Binärcodes mittels binärer Bäume. Gegeben sei A = {, b, c, d, e, f} mit den reltiven Häufigkeiten der Symbole. Wir vergleichen die Codierung von A mit einen Bockcode mit einer nderen Codierung (die sich - wie wir sehen werden - us dem Huffmn-Algorithmus ergibt). Zeichen b c d e f rel. Häufigkeit in % 45 3 6 9 5 Blockcode opt. Präfixcode Als Binärbäume sehen die Codes dnn wie folgt us. In den Knoten sind zusätzlich die Gesmthäufigkeiten der drunter liegenden Blätter notiert. 86 4 58 8 4 : 45 b:3 c: d: 6 e: 9 f : 5 45 55 5 3 c: b: 3 4 d: 6 f : 5 e : 9 Blockkode optimler Huffmnkode Für den Blockcode ist offensichtlich der Erwrtungswert für die Länge eines Codeworts genu 3. Dgegen ergibt sich für den zweiten Code ein wesentlich besserer Wert, nämlich 45 + 3 3 + 3 + 3 6 + 4 9 + 4 5 =, 4 D es für den Algorithmus egl ist, ob wir mit reltiven Häufigkeiten (lso mit Whrscheinlichkeiten) oder mit bsoluten Häufigkeiten rbeiten, wird b jetzt mit f(x) eine Verteilungsfunktion bezeichnen, die für eine dieser zwei Möglichkeiten steht.

Die Grundidee für den Huffmn Code ist einfch: Seltene Zeichen in der Nchricht bekommen lnge Codewörter, häufiger uftretende Zeichen bekommen kurze Codewörter. Wenn x und y die seltensten Zeichen sind mit Häufigkeiten f(x) und f(y), so stelle mn sich vor, beide durch ein neues Zeichen z zu ersetzen, ds die Häufigkeit f(z) = f(x) + f(y) ht. Wenn mn dnn rekursiv ein Codewort für z berechnet ht, entstehen jene für x und y einfch durch Anhängen einer bzw.. Zur Relisierung des Huffmn-Algorithmus verwendet mn eine sogennnte Prioritätswrteschlnge. Ds ist eine Dtenstruktur, in der jeder Eintrg mit einem zusätzlichen Prioritätswert versehen ist. Dzu gibt es eine Funktion ExtrctMin, mit der mn den Eintrg mit dem kleinsten Prioritätswert entfernen knn. Der Algorithmus erzeugt die Bumdrstellung einer optimlen Codierung. Am Anfng ht mn für jedes Symbol x A einen (entrteten) Bum T(x), der nur us einer Wurzel besteht, die gleichzeitig ds einzige Bltt ist und x ls Mrkierung trägt. Der Prioritätswert dieses Bums ist p(t(x)) = f(x). Hier ist der Algorithmus im Pseudocode. Huffmn(A,f) : f Verteilungsfunktion uf A Q = empty PriorityQueue for ll x in A CreteTree T(x) Insert T(x) in Q with priority p(t(x))=f(x) repet A - times T=ExtrctMin(Q) T=ExtrctMin(Q) CreteTree T with new root r leftchild(r) = r(t) rightchild(r) = r(t) insert T in Q with priority p(t) = p(t) + p(t) T = ExtrctMin(Q) return T Der vom Algorithmus erzeugte Bum ist der Codebum eines optimlen Präfixcodes, wenn mn lle Knten zu linken Kinder mit einer und lle Knten zu rechten Kindern mit einer mrkiert. Die beiden folgenden Lemmt beweisen die Optimlität des Huffmn Codes. Lemm : Seien x, y A die Symbole mit den kleinsten Häufigkeiten f(x) f(y) f(u) für beliebige u A. Dnn gibt es einen optimlen Präfixcode für A, in dem die Codewörter für x und y die gleiche Länge hben und sich nur im letzten Bit unterscheiden. Beweis: Ein Präfixcode zur Codierung einer Symbolmenge A mit Verteilung f ist optiml, wenn für seinen Codebum T der Ausdruck B(T) := A f()d T() min-

imiert wird, wobei d T () die Tiefe des mit mrkierten Blttes in T bezeichnen soll. Sei nun T Codebum eines optimlen Präfixcodes und seien u, v die Symbole in zwei Zwillingsblättern mximler Tiefe, wobei f(u) f(v) gelten soll. Wir betrchten die Bäume T und T, die us T durch einfche Austuschopertionen entstehen von x gegen u und im zweiten Schritt von y gegen v, wie im Bild ngedeutet. x u u y y v u v x v x y T T T Wir wissen f(x) f(u), f(y) f(v) und d T (x) d T (u), d T (y) d T (v). Drus folgt B(T) B(T ) = A f()d T() A f()d T () = (f(u) f(x))(d T (u) d T (x)). Somit ist B(T) B(T ), ber d B(T) schon miniml ist, müssen bei Werte gleich sein. Anlog zeigt mn B(T ) B(T ) und folglich muss B(T) = B(T ) sein und wegen der Optimlität von T ist uch T optiml und T ht die behupteten Eigenschften. Ds folgende Lemm ht einen sehr ähnlichen Beweis. Lemm: Repräsentiere T einen optimlen Präfixcode für A und seinen x, y die Mrkierungen von zwei Zwillingsblätter in T. Sei z A ein neues Symbol mit f(z) = f(x)+f(y), A = (A \ {x, y}) {z} und T, der Bum, der us T durch Streichung der Blätter von x und y entsteht wobei der gemeinsme Vterknoten mit z mrkiert wird. Dnn repräsentiert T einen optimlen Präfixcode für A. Zusmmen hben wir Stz: Der Huffmn Algorithmus liefert optimle Präfixcodes.