15 Optimales Kodieren



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

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

WS 2009/10. Diskrete Strukturen

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

Run Length Coding und Variable Length Coding

1 topologisches Sortieren

Primzahlen und RSA-Verschlüsselung

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 )

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

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

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

Professionelle Seminare im Bereich MS-Office

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Codierungstheorie Rudolf Scharlau, SoSe

Anmerkungen zur Übergangsprüfung

Mathematik für Information und Kommunikation

Informationsblatt Induktionsbeweis

Der Zwei-Quadrate-Satz von Fermat

Codierung, Codes (variabler Länge)

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Grundlagen der Theoretischen Informatik, SoSe 2008

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

3 Quellencodierung. 3.1 Einleitung

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Musterlösungen zur Linearen Algebra II Blatt 5

Theoretische Informatik SS 04 Übung 1

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

Algorithmen und Datenstrukturen

Programmiersprachen und Übersetzer

Theoretische Grundlagen der Informatik WS 09/10

7 Rechnen mit Polynomen

Datenstrukturen und Algorithmen

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

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

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

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Algorithmen und Datenstrukturen Suchbaum

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

A1.7: Entropie natürlicher Texte

Installationsanleitung für das KKL bzw. AGV4000 Interface

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!.

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

2.11 Kontextfreie Grammatiken und Parsebäume

Beispiel Zusammengesetzte Zufallsvariablen

Was bedeutet Inklusion für Geschwisterkinder? Ein Meinungsbild. Irene von Drigalski Geschäftsführerin Novartis Stiftung FamilienBande.

Analysis I für Studierende der Ingenieurwissenschaften

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

ALEMÃO. Text 1. Lernen, lernen, lernen

Kfz-Versicherung für Fahranfänger. mit der Lizenz zum Fahren

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Post hat eine Umfrage gemacht

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

1 Mathematische Grundlagen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Einführung in. Logische Schaltungen

Binärdarstellung von Fliesskommazahlen

Peer-to-Peer- Netzwerke

Paper Computer Science Experiment

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

Was meinen die Leute eigentlich mit: Grexit?

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

impact ordering Info Produktkonfigurator

Anzahl Pseudotedraden: Redundanz: Weitere Eigenschaften?

Step by Step Webserver unter Windows Server von Christian Bartl

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Definition und Begriffe

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Leichte-Sprache-Bilder

Anwendungsbeispiele Buchhaltung

Festigkeit von FDM-3D-Druckteilen

Benutzerkonto unter Windows 2000

! " # $ " % & Nicki Wruck worldwidewruck

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?

COMPUTER MULTIMEDIA SERVICE

Grundbegriffe der Informatik

Theoretische Grundlagen der Informatik

Der monatliche Tarif für ein Handy wurde als lineare Funktion der Form f(x) = k x + d modelliert (siehe Grafik).

Softwarelösungen: Versuch 4

Zeichen bei Zahlen entschlüsseln

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

WS 2013/14. Diskrete Strukturen

Grundlagen der Technischen Informatik. 2. Übung

Lichtbrechung an Linsen

Anleitung über den Umgang mit Schildern

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Erstellen von x-y-diagrammen in OpenOffice.calc

Wie Sie beliebig viele PINs, die nur aus Ziffern bestehen dürfen, mit einem beliebigen Kennwort verschlüsseln: Schritt 1

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

6.2 Scan-Konvertierung (Scan Conversion)

R ist freie Software und kann von der Website.

Repetitionsaufgaben Wurzelgleichungen

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Evangelisieren warum eigentlich?

Beweisbar sichere Verschlüsselung

Transkript:

15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen Kodierer C(T ) sind: sollte schnell kodieren sollte eindeutig dekodieren (präx-frei) minimale Kodelänge 15.1 Nötige Denitionen Als Beispiel soll der Text 'SUSANNE' kodiert werden. Folgende Denitionen werden benötigt: T = 'SUSANNE' ist der zu kodierende Text (im allg. eine Information, welche kodiert werden sollte) Z = {S, U, A, N, E} das Alphabet Z = 5 ist die Gröÿe des Alphabets f i ist die Auftrittsfrequenz. z.b.: f S = 2, f U = 1 p i ist die Auftrittswahrscheinlichkeit - z.b.: p S = 2 7, oder p U = 1 7 Die Entropie H(T ) (Pseudoeinheit 'bit') ist die eigentliche Information, die der Text T pro Zeichen enthält: Z H(T ) = p j log 2 p j Wenn man den Text 'SUSANNE' naiv kodiert, dann benötigt man 3 Bits pro Buchstabe. Für den ganzen Text benötigt man 3 7 = 21 Bits. Die Entropie (der eigentliche Informationsgehalt) beträgt aber nur 2.24 Bits pro Buchstabe, was auch die theoretische untere Grenze darstellt. j=1 1

Idee: Zeichen die häuger vorkommen, werden mit weniger Bits belegt. Ein Problem, dass dabei auftritt, ist das Präx-Problem. Damit der Kode eindeutig interpretierbar bleibt, darf kein Buchstabe kodiert ein Präx eines anderen Buchstaben sein. Zum Beispiel wenn C(x 1 ) = 10 für 'S' und C(x 2 ) = 100 für 'A' gegeben wäre, dann wäre das Kodestück...100... nicht eindeutig dekodierbar! 1 15.2 Darstellung des Kodierers Mit der Darstellung des Kodieres (und gleichzeitig des Dekodierers) als Binärbaum kann man Präxfreiheit garantieren. Die Datenstruktur hat dabei folgende Eigenschaften: Binärbaum (sog. Kodebaum) Werte sind blattorientiert (daher präxfrei) Die Wortlänge entspricht der Astlänge l i Wir suchen jenen Codebaum, der die Codelänge L(C) = n f il i minimiert. 15.3 Eigenschaften von optimalen Codebäumen Bevor wir einen Algorithmus zur Erzeugung eines optimalen Codebaums angeben, betrachten wir zunächst einige Eigenschaften eines optimalen Codebaums. 1. Der optimale Codebaum ist ein voller Binärbaum (d.h., jeder Knoten ist ein Blatt oder hat genau 2 Söhne). Beweis: Sei C ein Codebaum, der einen inneren Knoten k mit Grad 1 besitzt. Dann kann man daraus durch Löschen von k einen Baum C mit einer kleineren Codelänge erzeugen: L(C ) = L(C) f i 1 L(C ) < L(C) i T (k) } {{ } >0 T (k) ist dabei die Menge aller zu codierenden Zeichen (Blätter) unterhalb von k. Durch Löschen des Knotens k (Anhängen des einzigen Unterbaumes an seinen Vater) wird die Länge aller Wörter in T (k) um 1 verkürzt. 1 In der Literatur wird oft der Begri 'prex codes' verwendet. Damit sind aber genau präx-freie Kodes gemeint sind. 2

2. Seltene Zeichen sind tiefer im Baum als häuge (f j > f k l j l k ). Beweis: Sei C optimal, aber j, k : f j > f k, l k < l j. Sei C ein Code bei dem die Wörter fur j und k vertauscht sind. Wenn C optimal ist, dann L(C ) L(C) und daher 0 L(C ) L(C) = i f i l i i f i l i = f j l j + f k l k f j l j f k l k = f j l k + f k l j f j l j f k l k = (l k l j ) (f j f k ) < 0, } {{ } } {{ } <0 >0 was einen Widerspruch darstellt. C kann daher nicht optimal sein. 3. Es existiert ein optimaler Codebaum, bei dem die zwei seltensten Zeichen Geschwister sind. Beweis: Sei f 1 f 2... f n, d.h., seien x n, x n 1 die zwei seltensten Zeichen (Anm.: es kann mehrere solche Zeichen geben). x n besitzt das längste Codewort (l n l i, i), denn gäbe es ein Wort x i mit l i > l n würde ein Vertauschen von x i und x n einen kürzeren Code liefern. Dann gilt: (a) x n muss einen Bruder besitzen, da der Binärbaum voll ist, und (b) dieser Bruder muss ein Blatt sein, denn wäre es ein innerer Knoten, gäbe es ein Zeichen x i mit l i > l n (Widerspruch). Sei dieses Blatt x j. Entweder x j = x n 1 oder x j x n 1. Falls x j x n 1, kann man x j und x n 1 vertauschen, ohne L(C) zu verschlechtern: L(C ) L(C) = i f i l i i f i l i 15.4 Human = f n 1 l j + f j l n 1 f n 1 l n 1 f j l j = (f n 1 f j ) (l j l n 1 ) 0. } {{ } } {{ } 0 0 Die Methode nach Human liefert garantiert einen optimalen Kodebaum. Mit folgender Vorgangsweise wird der Kodebaum konstruiert: Erstelle einen 'Wald' mit jeweils einen Baum pro Zeichen. Suche die beiden Bäume mit den kleinsten Wahrscheinlichkeiten und verbinde sie zu einen neuen Baum, welche nun die Summe der Wahrscheinlichkeiten der Unterbäume besitzt. Wiederhole den Vorgang, bis nur noch ein Baum übrig ist. 3

15.4.1 Implementierung Der Human-Algorithmus kann sehr eektiv mit einer Warteschlange Q mit Prioritäten implementiert werden, und zwar mit der Datenstruktur Halde. Dabei wird invers geordnet - d.h. das Minimum liegt an der Wurzel der Halde. Dem Algorithmus wird das Alphabet Z mit den zugehörigen Auftrittsfrequenzen f i s übergeben. HUFFMAN (Z,f) 1: n Z 2: INIT_Q (Z) 3: FOR i 1 TO (n-1) 4: z NEUER_KNOTEN 5: LINKS(z) MINIMUM(Q), ENTFERNE_MIN 6: RECHTS(z) MINIMUM(Q), ENTFERNE_MIN 7: f(z) f(x)+f(y) 8: EINFUEGEN(Q,z) 9: RETURN MINIMUM(Q) Analyse: Alle Operationen der Warteschlange mit Prioritäten (mit einer Halde implementiert) können in O(log n) durchgeführt werden. Dabei werden sie innerhalb der Schleife n 1 mal aufgerufen, d.h. T (n) = O(n log n). 15.4.2 Beweis der Optimalität von Human Sei Z = {x 1, x 2,..., x n } das zu kodierende Alphabet mit den Auftrittswahrscheinlichkeiten f 1 f 2... f n. Der Human-Algorithmus bestimmt den Codebaum für Z aus dem Codebaum für Z = Z \ {x n 1, x n } {w}, mit f(w) = f n 1 + f n. Der Beweis erfolgt mittels vollständiger Induktion: Der Human-Algorithmus liefert oensichtlich einen optimalen Codebaum für Z = 2. zu zeigen: Ist B ein optimaler Codebaum für Z, ist B auch ein optimaler Codebaum für Z. Es gilt l i = l i i = 1,..., n 2 l n 1 = l n = l(w) + 1 4

Für die Codelänge von B ergibt sich damit L(B) = n f i l i = f n l n + f n 1 l n 1 + f i l i = (f n + f n 1 )(l(w) + 1) + f i l i = f(w)l(w) + f(w) + f i l i = f(w) + L(B ). Sei B nicht optimal, d.h., B : L( B) < L(B), und B hat x n, x n 1 als Geschwister. Daraus kann man wiederum einen Baum B erzeugen, durch Ersetzen von x n, x n 1 durch w. Dann gilt: L( B) < L(B) f(w) + L( B ) < f(w) + L(B ) L( B ) < L(B ), was aber ein Widerspruch zur Annahme der Optimalität von B ist. 5