Code-Arten und Code-Sicherung. Literatur: Blieberger et.al.: Informatik (Kap. 3 und 4), Springer-Verlag R.-H. Schulz: Codierungstheorie, Vieweg



Ähnliche Dokumente
Codierungstheorie. Code-Arten und Code-Sicherung

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

Grundlagen der Technischen Informatik. 2. Übung

Theoretische Grundlagen der Informatik WS 09/10

Grundlagen Digitaler Systeme (GDS)

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

(Prüfungs-)Aufgaben zur Codierungstheorie

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

15 Optimales Kodieren

Zeichen bei Zahlen entschlüsseln

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Primzahlen und RSA-Verschlüsselung

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

Codierungstheorie Rudolf Scharlau, SoSe

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

Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011

Anzahl Pseudotedraden: Redundanz: Weitere Eigenschaften?

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

Lineare Codes. Dipl.-Inform. Wolfgang Globke. Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 19

Codierung. Codierung. EAN Europäische Artikelnummer Ziffern 1 und 2 codieren das Hersteller-Land. Ziffer 2 bis 12 codieren Händler und Ware

Theoretische Informatik SS 04 Übung 1

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einführung in die Kodierungstheorie

7 Rechnen mit Polynomen

Kapitel 3: Etwas Informationstheorie

Binär Codierte Dezimalzahlen (BCD-Code)

Anmerkungen zur Übergangsprüfung

Grundlagen der Theoretischen Informatik, SoSe 2008

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

A1.7: Entropie natürlicher Texte

Mathematik für Information und Kommunikation

1 Mathematische Grundlagen

Vertiefungsstoff zum Thema Darstellung von Zahlen

Codierung. H.-G. Hopf

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?

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Run Length Coding und Variable Length Coding

0 Im folgenden sei die Wortlänge gleich 8 (d. h.: es wird mit Bytes gearbeitet).

11. Das RSA Verfahren und andere Verfahren

10. Kryptographie. Was ist Kryptographie?

Formelsammlung. Wahrscheinlichkeit und Information

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

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

Binärdarstellung von Fliesskommazahlen

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

Prüfziffern. Man versucht, solche Fehler zu erkennen, indem man der Zahl eine weitere Ziffern, die sog. Prüfziffern, hinzufügt.

Codierungstheorie Teil 1: Fehlererkennung und -behebung

Programmiersprachen und Übersetzer

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Grundlagen der Informatik

Der Zwei-Quadrate-Satz von Fermat

Professionelle Seminare im Bereich MS-Office

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

Informationsblatt Induktionsbeweis

Codierung, Codes (variabler Länge)

2. Negative Dualzahlen darstellen

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

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Grundbegriffe der Informatik

2 Darstellung von Zahlen und Zeichen

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

Grundlagen der Technischen Informatik. Codierung und Fehlerkorrektur. Kapitel 4.2

Kapitel 4A: Einschub - Binärcodierung elementarer Datentypen. Einschub: Teile aus Kapitel 2 in Küchlin/Weber: Einführung in die Informatik

Einführung in die Algebra

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 )

3 Quellencodierung. 3.1 Einleitung

Kapitalerhöhung - Verbuchung

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

WS 2008/09. Diskrete Strukturen

Musterlösungen zur Linearen Algebra II Blatt 5

Statistische Thermodynamik I Lösungen zur Serie 1

Kryptographie und Codierung für den Mathematikunterricht

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme: Oktal- und Hexadezimalsystem

3 Der Hamming-Code. Hamming-Codes

Grundlagen der Informatik (BSc) Übung Nr. 5

Übung 1: Quellencodierung

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.

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

Übung 13: Quellencodierung

Die Post hat eine Umfrage gemacht

Informatik A ( Frank Hoffmann)

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Korrelation (II) Korrelation und Kausalität

Grundlagen der Informatik I Informationsdarstellung

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

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

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

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

Approximation durch Taylorpolynome

WS 2009/10. Diskrete Strukturen

Einfache kryptographische Verfahren

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

Was meinen die Leute eigentlich mit: Grexit?

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Englische Division. ... und allgemeine Hinweise

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

(für Grund- und Leistungskurse Mathematik) 26W55DLQHU0DUWLQ(KUHQE UJ*\PQDVLXP)RUFKKHLP

Transkript:

Codierungstheorie Code-Arten und Code-Sicherung Inhaltsübersicht und Literatur Informationstheorie Was ist eine Codierung? Arten von Codes Informationsgehalt und Entropie Shannon'sches Codierungstheorem Fehlererkennende und fehlerkorrigierende Codes Die Hammingdistanz CRC-Codes Prüfzeichenverfahren Hamming-Code Literatur: Blieberger et.al.: Informatik (Kap. 3 und 4), Springer-Verlag R.-H. Schulz: Codierungstheorie, Vieweg Technische Informatik I Codierungstheorie 2 Chr. Vogt

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Begriffe der Informationstheorie (1) Begriffe der Informationstheorie (2) Informationstheorie Wörter über einem Alphabet Codierung und Codes Weitere Begriffe und Beispiele Ein Code mit variabler Wortlänge Präfix-Codes Beispiele: Codes fester Wortlänge für die Dezimalziffern Beispiele: ASCII- und EBCDIC-Code Binärer Codebaum und Decodierung Effizienz bzw. Redundanz von Codes Code-Redundanz Beispiel: Redundanz von 4-Bit-Codes für die Dezimalziffern Statistische Codierung Shannon'sche Nachrichtenquelle Informationsgehalt und Entropie Shannon'sches Codierungstheorem Ein Beispiel Huffman-Code Beispiel zum Huffman-Code Wort-Codierung Fehlererkennung und Fehlerbehebung Stellendistanz und Hammingdistanz Hammingdistanz und Fehlererkennung bzw. -behebung Stellendistanz und Hammingdistanz: räumliche Darstellung Cyclic Redundancy Check (CRC) Codes Bestimmen der Prüfbits bei CRC-Codes Was leisten CRC-Codes? Beispiele für weitere Prüfzeichenverfahren Fehlerkorrigierende Codes Hamming-Code

Begriffe der Informationstheorie (1) Information bedeutet Kenntnis über Sachverhalte oder Vorgänge. Informationen werden ausgetauscht mittels Nachrichten. Nachrichten werden übermittelt von einem Sender zu einem Empfänger: Nachrichten werden als Daten dargestellt in Form von Zeichen (diskrete Daten, speziell: digitale Daten), z.b.: geschriebene Wörter Gesten der Gehörlosensprache Flaggenalphabet der Marine ASCII-Zeichen kontinuierlichen Funktionen (analoge Daten), z.b. gesprochene Wörter analoges Telefon S E Technische Informatik I Codierungstheorie 3 Chr. Vogt Begriffe der Informationstheorie (2) Das physikalische Abbild der Daten sind messbare Signale, gekennzeichnet durch: Signalparameter Wert bzw. Werteverlauf (Zeitfunktion) Der Empfänger leitet aus einer Nachricht Information ab: Der Empfänger braucht eine Interpretationsvorschrift. Die Nachricht muss einen Informationsgehalt haben. Eine endliche Menge von Zeichen, die für die Darstellung einer Nachricht verwendet werden, heißt Zeichenvorrat. Ein geordneter Zeichenvorrat heißt auch Alphabet. Beispiele: {A, B, C,...,Y, Z} gewöhnliches Alphabet {0, 1, 2,..., 8, 9} Dezimalziffern {0, 1, 2,..., 8, 9, A, B, C, D, E, F} Hexadezimalziffern {0, 1} binäres Alphabet Technische Informatik I Codierungstheorie 4 Chr. Vogt

Informationstheorie Die Informationstheorie wurde 1948 von dem amerikanischen Mathematiker Claude Elwood Shannon (1916-2001) begründet. Die Informationstheorie untersucht die mathematischen Zusammenhänge der in einer Nachricht enthaltenen Information, insbesondere bei Vorgängen der Speicherung (zeitliche Transformation) Übertragung (räumliche Transformation) Grundideen: Die möglichen Zeichen in einer Nachricht treten mit bestimmten Wahrscheinlichkeiten auf. Der Informationsgehalt eines Zeichens (einer Nachricht) ist hoch, wenn die Auftrittswahrscheinlichkeit gering ist. "Umso überraschender das Ereignis, desto größer die Information." Umgekehrt: Ist die Wahrscheinlichkeit des Auftretens eines Zeichens gleich 1 (also sicher), so ist der Informationsgehalt 0. Technische Informatik I Codierungstheorie 5 Chr. Vogt Wörter über einem Alphabet Definition: Unter einem Wort der Länge n über einem Alphabet A versteht man ein n-tupel (a 1, a 2,..., a n ) von Elementen a i aus A. Es wird meist ohne Klammern und Kommata geschrieben: a 1 a 2... a n. Bezeichnungen: A n bezeichne die Menge aller Wörter der Länge n über A. A* := A i bezeichne die Menge aller Wörter über A von i 0 beliebiger (aber endlicher) Länge. Dabei enthält A 0 nur das "leere Wort" (In mathematischer Sprache ist A* die freie Halbgruppe über A.) Bemerkung: Häufig interessiert man sich nur für eine Teilmenge von A* (siehe z.b. das Kapitel Formale Sprachen in Theoretische Informatik ). Technische Informatik I Codierungstheorie 6 Chr. Vogt

Codierung und Codes Eine Codierung ist eine Abbildungsvorschrift, die jedem Zeichen eines Zeichenvorrats A (Urbildmenge) eindeutig ein Zeichen oder ein Wort aus einem (i.a. anderen) Zeichenvorrat B (Bildmenge) zuordnet. Formal: Definition: Seien A und B (endliche) Zeichenvorräte. Eine Codierung von A ist eine injektive Abbildung N c: A ------> B i i 1 Die Bildmenge c(a) heißt Code, die einzelnen Elemente von c(a) Codewörter. Eine Codierung c lässt sich fortsetzen zu einer Abbildung c*: A* ------> B*, c*(a 1 a 2... a n ) := c(a 1 ) c(a 2 )... c(a n ) auf allen Wörtern über A (die ebenfalls Codierung genannt wird). Die fortgesetzte Abbildung c* ist im allgemeinen nicht mehr injektiv! (Beispiele folgen auf den nächsten Seiten.) Technische Informatik I Codierungstheorie 7 Chr. Vogt Weitere Begriffe und Beispiele Eine Codierung c: A ----> B n heißt eine Codierung mit fester Wortlänge n (auch Block-Code genannt). Jede andere Codierung hat variable Wortlänge. Für jede Codierung c : A ----> B n c*: A* ------> B* injektiv. mit fester Wortlänge ist auch die fortgesetzte Abbildung Eine Binärcodierung ist eine Codierung mit der Zielmenge {0,1}*: N c: A ------> {0,1} i i 1 Beispiele für Binärcodes auf der Urbildmenge {A,B,...,Z}: Morsecode (variable Wortlänge) ASCII- und EBCDIC-Code (feste Wortlänge) Technische Informatik I Codierungstheorie 8 Chr. Vogt

Ein Code mit variabler Wortlänge Morse-Code: Zeichenvorrat: {, -, } Pause a - d - g -- b - e h c - - f - i Signalfolgen: ee i Codebaum - e t - - i a n m - - - - s u r w d k g o - - - - - - - - h v f ü l ä p j b x c y z q ö ch Technische Informatik I Codierungstheorie 9 Chr. Vogt Präfix-Codes Bei Codes variabler Wortlänge (ohne Pausen zwischen den Zeichen) ist die fortgesetzte Abbildung c *: A* ------> B* im allgemeinen nicht mehr injektiv. Beispiel: E 1, T 110, A 1010, N 10101 1 0 1 0 1 0 1 0 1 A N A A E nicht eindeutig! Definition: Ein Code heißt Präfix-Code, falls kein Codewort Anfang eines anderen Codewortes ist. Beispiel: E 1, T 011, A 0101, N 0100 Bemerkung: Jeder Code mit fester Wortlänge ist ein Präfix-Code. Satz: Bei Präfixcodes ist auch die fortgesetzte Abbildung c *: A* ------> B* injektiv. Technische Informatik I Codierungstheorie 10 Chr. Vogt

Beispiele: Codes fester Wortlänge für die Dezimalziffern BCD-Code: n --> Binärdarstellung von n (mit 4 bit) Ein Stellenwertcode, und zwar 8-4 - 2-1 Exzeß-3-Code: n --> Binärdarstellung von n+3 (mit 4 bit) Ein Komplementärcode, d.h. für jedes Codewort ist auch dessen Einerkomplement ein Codewort. Aiken-Code: 4-bit-Code Ein Stellenwertcode, und zwar 2-4 - 2-1 Ein Komplementärcode Gray-Code: 4-bit-Code Die Codewörter aufeinanderfolgender Dezimalziffern unterscheiden sich jeweils nur an einer Bit-Stelle (einschrittiger Code). CCITT2-Code: 5-bit-Code (wurde für Lochstreifen verwendet) Biquinär-Code: 6-bit-Code 1-aus-10-Code: 10-bit-Code ASCII-Code: 7- oder 8-bit-Code EBCDIC-Code: 8-bit-Code Technische Informatik I Codierungstheorie 11 Chr. Vogt Beispiele: ASCII- und EBCDIC-Code ASCII- und EBCDIC-Code sind Codierungen von Buchstaben (große und kleine) Dezimalziffern Sonderzeichen (z.b.?, @, (, % etc.) Steuerzeichen (z.b. LF=Line Feed, BS=Backspace etc.) EBCDIC-Code Ein 8-bit-Code In der IBM-Welt gebräuchlich ASCII-Code Ein 7-bit-Code Diverse 8-bit-Erweiterungen zur Darstellung länderspezifischer Zeichen (z.b. ä, ö, ü, ß oder é, è, î etc.) Technische Informatik I Codierungstheorie 12 Chr. Vogt

Binärer Codebaum und Decodierung Jeder binäre Code kann als binärer Codebaum (auch binärer Entscheidungsbaum genannt) dargestellt werden. Beispiel: Code-Baum für die 3-Bit-Binärzahlen: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 7 6 5 4 3 2 1 0 1: nach links 0: nach rechts Unter Decodierung versteht man die Zuordnung des zu einem Codewort gehörenden semantischen Zeichens aus der Urbildmenge, also die Anwendung der inversen Abbildungsvorschrift eines Codes. Die Decodierung kann leicht mit Hilfe des binären Entscheidungsbaums erfolgen. Technische Informatik I Codierungstheorie 13 Chr. Vogt Effizienz bzw. Redundanz von Codes Oft ist es wünschenswert, daß die codierten Daten möglichst wenig Platz einnehmen, d.h. gesucht ist ein Code mit hoher Effizienz (Stichwort: Datenkompression). Eine Redundanz des Codes (d.h. der Code enthält zusätzliche Bits, die keine Information über die codierten Daten vermitteln) kann aber auch wünschenswert sein und genutzt werden, um Fehler bei der Codierung und Speicherung bzw. der Übertragung von Daten zu erkennen oder sogar zu beheben. Beispiel: Natürliche Sprachen haben eine hohe Redundanz. Ein Satz wird auch dann noch verstanden, wenn er viele Fehler enthält: "Ds st n Stz, dr knn Vkl nthlt" Sicherung gegen Fehler kann erreicht werden durch fehlererkennende Codes (error detecting codes) fehlerkorrigierende Codes (error correcting codes, ECC) Technische Informatik I Codierungstheorie 14 Chr. Vogt

Code-Redundanz Definition: Sei ZV ein Zeichenvorrat mit der Mächtigkeit ZV. Der Entscheidungsgehalt von ZV ist definiert als EG = log 2 ZV Redundanz tritt auf, wenn der physikalische Zeichenvorrat größer ist als der semantische, also die Anzahl der zu codierenden Zeichen. Sei ZVS die Mächtigkeit des semantischen Zeichenvorrats, ZVP die des physikalischen. Es muß gelten: ZVP > ZVS (Gleichheit bedeutet: keine Redundanz) Definition: Sei EGP der Entscheidungsgehalt des physikalischen, EGS der des semantischen Zeichenvorrats eines Codes. Die (absolute) Redundanz des Codes ist definiert als R = EGP EGS = log 2 ZVP - log 2 ZVS = log 2 ( ZVP / ZVS ) [bit] Die relative Redundanz ist definiert als R / EGP. Technische Informatik I Codierungstheorie 15 Chr. Vogt Beispiel: Redundanz von 4-Bit-Codes für die Dezimalziffern Ein Zeichenvorrat ZV aus 2 n Zeichen hat den Entscheidungsgehalt EG = log 2 2 n = n [bit]. Bei einer binären Blockcodierung von ZV ist dies die Anzahl n der benötigten Bits, die Anzahl der bei der Decodierung im binären Entscheidungsbaum notwendigen Entscheidungen. Beispiel: Für 4-Bit-Codes für die Dezimalziffern (BCD, Aiken, Gray) gilt: EGS = log 2 10 = 3,32 [bit] EGP = log 2 16 = 4 [bit] Die absolute Redundanz ist: R = EGP - EGS = 0,68 [bit] Die relative Redundanz ist: r = (EGP - EGS)/EGP = 0,68 / 4 = 17 [%] Dieser Wert kann als nicht ausgenutzte Codekapazität interpretiert werden (unbenutzte Codewörter für die Pseudotetraden). Technische Informatik I Codierungstheorie 16 Chr. Vogt

Statistische Codierung Häufig treten die verschiedenen Zeichen einer Quelle mit unterschiedlicher Wahrscheinlichkeit in einer Nachricht auf. Beispiel: In jeder natürlichen Sprache treten die einzelnen Buchstaben des Alphabets verschieden häufig auf. Bei einer statistischen Codierung werden die Auftretungswahrscheinlichkeiten der Quellenzeichen berücksichtigt, um einen möglichst effizienten Code zu finden. Prinzip: Häufig zu erwartende Zeichen werden durch kurze Codewörter, seltenere Zeichen durch längere Codewörter beschrieben. Bei adaptiven Codes wird die aktuelle bisherige Auftretungswahrscheinlichkeit der Zeichen in einer Nachricht verwendet, um den Code dynamisch zu verändern. Bei der Bestimmung der Effizienz eines Codes müssen die Auftretungswahrscheinlichkeiten sinnvoll berücksichtigt werden. Technische Informatik I Codierungstheorie 17 Chr. Vogt Shannon'sche Nachrichtenquelle Definition: Eine Shannon'sche Nachrichtenquelle (Nachrichtenquelle ohne Gedächtnis) ist ein Zeichenvorrat ZV mit folgenden Eigenschaften: Jedes Element a i ZV hat eine zeitlich konstante Auftretungswahrscheinlichkeit p i mit 0 < p i < 1, p i = 1. Die Wahrscheinlichkeit des Auftretens der Zeichenfolge a i a k ist das Produkt der Wahrscheinlichkeiten p i p k der einzelnen Zeichen. (Unabhängigkeit des Auftretens eines Zeichens von den vorhergehenden Zeichen). Beispiel: ZV = { a, b, c, d, e, f, g } p i = 1/4 1/8 1/8 1/16 1/4 1/8 1/16 i Eine mögliche statistische Codierung ist: a --> 00, e --> 01 b --> 100, c --> 110, f --> 111 d --> 1010, g --> 1011 (Diese Codierung ergibt einen Präfix-Code.) Technische Informatik I Codierungstheorie 18 Chr. Vogt

Informationsgehalt und Entropie Definition: Der Informationsgehalt eines Zeichens mit Wahrscheinlichkeit p i ist definiert als K i = log 2 (1/ p i ). Bemerkung: Der Informationsgehalt einer Zeichenfolge a i a k ist K i + K k. Definition: Die Entropie (oder der mittlere Informationsgehalt) einer Nachrichtenquelle ist definiert als H = p i K i = p i log 2 (1/p i ) [bit] i Bemerkung: Für eine Nachrichtenquelle mit n Zeichen gilt für beliebige Werte der Wahrscheinlichkeiten p i : i H = p i log 2 (1/p i ) < log 2 n i Gleichheit gilt, wenn alle Zeichen die gleiche Wahrscheinlichkeit 1/n haben. Technische Informatik I Codierungstheorie 19 Chr. Vogt Shannon'sches Codierungstheorem Definition: Für eine Codierung einer Shannon'schen Nachrichtenquelle sei l i die Länge des Codewortes für das i-te Zeichen. Die mittlere Wortlänge der Codierung ist definiert als L = i p i l i Die Redundanz des Codes ist definiert als R = L - H. Shannon'sches Codierungstheorem 1. Für jede Codierung einer Shannon schen Nachrichtenquelle ist H < L. 2. Jede Shannon'sche Nachrichtenquelle kann so codiert werden, daß die Differenz L - H beliebig klein wird. Bemerkung: Wenn in jedem Knoten des Entscheidungsbaums die Verzweigungen gleich wahrscheinlich sind, gilt: H = L = log 2 n. Technische Informatik I Codierungstheorie 20 Chr. Vogt

Ein Beispiel 3 H = p i log 2 (1/p i ) = 1,157 i=1 3 L = p i l i = 0,7 * 1 + 0,2 * 2 + 0,1 * 2 = 1,3 i=1 A B C 0,7 0,2 0,1 Die Coderedundanz (das Maß für nutzlos vorhandene Bits) beträgt: R = L - H = 1,3-1,157 = 0,143 [bit] (11 % relativ) Technische Informatik I Codierungstheorie 21 Chr. Vogt Huffman-Code Algorithmus von Huffman (1952, David Albert Huffman: 1925-1999) Gegeben sei eine Shannon'sche Nachrichtenquelle E mit Elementen e i und Wahrscheinlichkeiten p(e i ). 1. Fasse zwei Elemente e i und e k mit den kleinsten Wahrscheinlichkeiten zu einem Knoten k m zusammen mit Wahrscheinlichkeit p(k m ) = p(e i ) + p(e k ). 2. Ersetze die Elemente e i und e k in E durch k m und wiederhole Punkt 1. bis nur noch ein Element übrigbleibt. 3. Setze den Codebaum zusammen. Satz: Für eine gegebene Shannon sche Nachrichtenquelle hat keine Codierung der Einzelzeichen eine kleinere mittlere Wortlänge als die Huffman-Codierung. Technische Informatik I Codierungstheorie 22 Chr. Vogt

Beispiel zum Huffman-Code V 0,2 W 0,05 X 0,25 Y 0,2 Z 0,3 E = { V, W, X, Y, Z} 0,2 0,05 0,25 0,2 0,3 V 0,2 k1 0,25 X 0,25 Z 0,3 Codebaum k2 0,45 X 0,25 Z 0,3 k2 0,45 k3 0,55 Z X V Y W k4 1,0 Technische Informatik I Codierungstheorie 23 Chr. Vogt Wort-Codierung Um die Differenz H - L möglichst klein zu machen, kann es nötig sein, nicht einzelne Zeichen, sondern Wörter der Länge > 2 zu codieren. Beispiel: Codierung von Zeichenpaaren ZV = { A, B, C}, p(a) = 0,7, p(b) = 0,2, p(c) = 0,1 Paar p Codierung Länge AA 0,49 1,0 0 1 AB 0,14 0,28 100 3 Mittlere Wortlänge: 0,51 BA 0,14 101 3 L 2 = 2,33 (pro Paar) AC 0,07 0,14 1100 4 0,23 CA 0,07 1101 4 L 1 = 1,165 (pro Zeichen) BB 0,04 0,09 1110 4 relative Redundanz: BC 0,02 0,05 11110 5 0,7 % CB 0,02 111110 6 0,03 CC 0,01 111111 6 Technische Informatik I Codierungstheorie 24 Chr. Vogt

Fehlererkennung und Fehlerbehebung Eine Redundanz des Codes kann wünschenswert sein und dazu genutzt werden, Fehler bei der Codierung und Speicherung bzw. Übertragung von Daten zu erkennen und/oder zu beheben. Aber: Nicht jede Code-Redundanz kann zur Fehlererkennung genutzt werden. Beispiel: Die relative Redundanz von 17% des BCD-Codes (s.o.) kann nicht zur Fehlererkennung genutzt werden. Häufig wird eine bereits codierte Nachricht nachträglich mit zusätzlichen Bits versehen, um einen fehlererkennenden oder fehlerkorrigierenden Code zu erhalten. Die Methode ist unabhängig von der ursprünglichen Codierung. Die Nachricht wird in Abschnitte fester Länge aufgeteilt und zusätzliche Bits (sog. Prüfbits) pro Abschnitt eingefügt. Technische Informatik I Codierungstheorie 25 Chr. Vogt Stellendistanz und Hammingdistanz Definition: Die Stellendistanz d(v,w) zweier Codewörter v, w gleicher Länge ist die Anzahl der Positionen, an denen sich die beiden Wörter unterscheiden. Beispiele: 0 0 0 0 und 0 0 0 1 haben Stellendistanz 1 101101 und 010101 haben Stellendistanz 3 Definition: Sei c: A ---> B n eine Codierung mit fester Wortlänge. Die Hammingdistanz h von c ist definiert als die minimale Stellendistanz aller Paare verschiedener Codewörter von c, also h = min { d(v,w); v, w c(a), v w} Bemerkung: Für zwei beliebige Codewörter eines Codes ist stets d > h. Technische Informatik I Codierungstheorie 26 Chr. Vogt

Hammingdistanz und Fehlererkennung bzw. -behebung Die Hammingdistanz gibt an, wieviele Fehler (falsche Zeichen) ausreichen können, um ein neues Codewort zu erhalten. Satz: Für jeden Code mit fester Wortlänge und Hammingdistanz h gilt: a) Die Zahl der erkennbaren Fehler ist h - 1. b) Die Zahl der korrigierbaren Fehler ist [ (h-1)/2 ] (größte ganze Zahl < (h-1)/2 ). Die Hammingdistanz eines Binärcodes mit ungerader Hammingdistanz h = 2k-1 kann durch ein Paritätsbit um 1 erhöht werden. Bei gerader Parität erhält das Paritätsbit den Wert 0, wenn die Zahl der Einsen im Codewort gerade ist, den Wert 1, wenn die Zahl der Einsen im Codewort ungerade ist. Alle neuen Codewörter haben dann eine gerade Zahl von Einsen. Insbesondere kann auf diese Weise ein Binärcode mit h=1 zu einem 1-bit-fehlererkennenden Code erweitert werden. Technische Informatik I Codierungstheorie 27 Chr. Vogt Stellendistanz und Hammingdistanz: räumliche Darstellung Räumliche Darstellung der Stellendistanz d: 3. Binärstelle 001 011 Kante: d = 1 Flächendiagonale: d = 2 Raumdiagonale: d = 3 Räumliche Darstellung der Hammingdistanzen h = 1, h = 2, h = 3: 101 100 000 1. Binärstelle 111 110 2. Binärstelle 010 h = 1 h = 2 h = 3 genutzte Codewörter Technische Informatik I Codierungstheorie 28 Chr. Vogt

Cyclic Redundancy Check (CRC) Codes CRC-Codes sind zyklische Codes, d.h. jede zyklische Vertauschung eines Codewortes ist wieder ein Codewort. Man kann zeigen, daß zyklische Codes genau die Codes sind, deren Konstruktion im folgenden beschrieben wird. Grundidee: Ein binäres Wort a n-1...a 0 wird dem Polynom a n-1 x n-1 +... + a 0 x 0 zugeordnet. Gegeben ist ein erzeugendes Polynom G(x) vom Grad r (mit Koeffizienten 0 und 1). Ein Codewort a m-1...a 0 wird mit r Prüfbits p r...p 1 so ergänzt, daß das zum binären Wort a m-1...a 0 p r...p 1 gehörende Polynom durch G(x) teilbar ist (dabei wird die Division modulo 2 ausgeführt). Der Empfänger dividiert das zum erhaltenen Wort gehörende Polynom durch G(x). Tritt dabei ein Rest auf, liegt ein Fehler vor. Technische Informatik I Codierungstheorie 29 Chr. Vogt Bestimmen der Prüfbits bei CRC-Codes 1. Hänge an das zu übertragende Wort r (= Grad von G(x)) Nullen an. 2. Dividiere das zum entstandenen Wort gehörende Polynom durch G(x) (Rechnung modulo 2). Benötigt wird nur der Rest der Division. 3. Subtrahiere den entstandenen Rest von dem Polynom. Das zu dem jetzt entstandenen Polynom gehörende Binärwort wird übertragen. Der Rest ist ein Polynom vom Grad <(r-1), die Subtraktion ändert also nur die letzten r Bits des Wortes, nicht die ersten m Bit, die das ursprüngliche Wort enthalten. Beispiel: Das erzeugende Polynom sei G(x) = x 3 + x 2 + 1, das zu übertragende Wort sei 0110. 1. Betrachte 0110000, was dem Polynom x 5 + x 4 entspricht. 2. (x 5 + x 4 ) / (x 3 + x 2 + 1) = x 2 Rest x 2 3. x 5 + x 4 -x 2 = x 5 + x 4 + x 2 entspricht dem Binärwort 0110100. Technische Informatik I Codierungstheorie 30 Chr. Vogt

Was leisten CRC-Codes? Das (korrekt) übertragene Wort entspreche dem Polynom T(x). Falls der Empfänger das Polynom T(x) + E(x) erhält, rechnet er: Rest von (T(x) + E(x)) / G(x) = 0 + Rest von E(x) / G(x) Er erhält also einen von 0 verschiedenen Rest (und erkennt somit einen Übertragungsfehler) genau dann, wenn der Fehler E(x) nicht durch G(x) teilbar ist. CRC-Codes sind somit fehlererkennend (aber nicht fehlerkorrigierend). Wie alle fehlererkennenden Codes können sie dann sinnvoll eingesetzt werden, wenn bei Erkennen eines Fehler eine Wiederholung der Übertragung durchgeführt werden kann. Beispiel: CRC-Codes werden z.b. bei der Speicherung von Daten auf Magnetbändern eingesetzt. Technische Informatik I Codierungstheorie 31 Chr. Vogt Beispiele für weitere Prüfzeichenverfahren Bei den (bis 2007 vergebenen) 10-stelligen ISBN-Nummern (International Standard Book Number) ist die letzte von 10 Ziffern eine Prüfziffer: a 10 = (a 1 + 2a 2 + 3a 3 +... + 9a 9 ) mod 11 Ist der Wert 10, so wird das Zeichen X verwendet. Bei Strichcodes (EAN = European Article Number) ist die letzte von 13 Ziffern eine Prüfziffer: a 13 = 10 - ((a 1 + 3 a 2 + a 3 + 3a 4 +... + a 11 + 3a 12 ) mod 10) Die obigen beiden Beispiele können Einzelfehler erkennen. Mit Methoden der Algebra (genauer: der Gruppentheorie) kann man allgemeinere Prüfzeichenverfahren finden, die nicht nur Einzelfehler, sondern z.b. auch die Vertauschung benachbarter Zeichen erkennen können. Beispiel: Die Nummern der früheren DM-Banknoten verwendeten ein Prüfzeichenverfahren, das auf der sog. Diedergruppe D 5 basiert. Technische Informatik I Codierungstheorie 32 Chr. Vogt

Fehlerkorrigierende Codes Um einzelne Bit-Fehler korrigieren zu können, muß die Hamming-Distanz des Codes mindestens 3 sein. Angenommen, wir wollen Binärwörter der Länge m mit r Prüfbits zu einem 1-bitfehlerkorrigierenden Code ergänzen (neue Wortlänge also n=m+r). Jedes Binärwort der Länge n hat n Nachbarn mit Stellendistanz 1. Die Codewörter der 2 m Binärwörter der Länge m "belegen" somit (n+1) 2 m der 2 n existierenden Binärwörter, also muss gelten: (n+1) 2 m < 2 n, bzw. mit n = m+r: (m + r + 1) < 2 r Dies ergibt eine untere Schranke für die Anzahl der nötigen Prüfbits. Diese untere Schranke für die Anzahl von Prüfbits wird vom Hamming-Code tatsächlich erreicht. Technische Informatik I Codierungstheorie 33 Chr. Vogt Hamming-Code Der Hamming-Code wird wie folgt gebildet: Die Bits der Codewörter seien mit 1, 2,..., n durchnummeriert. Die Bits 1, 2, 4, 8, 16,... (Zweierpotenzen) dienen als Prüfbits. Die restlichen Bits 3, 5, 6, 7, 9,... enthalten die "Nutz"-Bits. Das Prüfbit Nummer 2 n ist das gerade Paritätsbit über die Menge derjenigen Datenbits, die eine Nummer haben, in deren Binärdarstellung der Summand 2 n vorkommt. Der Empfänger eines Codewortes berechnet die Prüfbits k (k = 1, 2, 4, 8,...) für das erhaltene Wort, und summiert die Nummern derjenigen Prüfbits, deren übertragener Wert nicht mit dem berechneten Wert übereinstimmt. Falls es fehlerhafte Prüfbits gibt, gibt die Summe ihrer Nummern die Nummer des falsch übertragenen Bits an. Beispiel: 4 Datenbits, 3 Prüfbits. Logische Anordnung: p 1 p 2 a 3 p 4 a 5 a 6 a 7. p 1 = a 3 a 5 a 7 bezeichnet die XORp 2 = a 3 a 6 a 7 Operation zur Bildung p 4 = a 5 a 6 a 7 des Paritätsbits Technische Informatik I Codierungstheorie 34 Chr. Vogt