Motivation Bisher: Codes mit möglichst kurzer Codelänge.

Slides:



Advertisements
Ähnliche Präsentationen
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Advertisements

Eine dynamische Menge, die diese Operationen unterstützt,
Kapitel 3 Arithmetische Schaltkreise
2.3 Kodierung von Zeichen 2.4 Kodierung von Zahlen
Polynomial Root Isolation
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Codierung Haydn: Streichquartett op 54.3 aus Largo, Violine I
Schnelle Matrizenoperationen von Christian Büttner
Prof. Dr. W. Conen 15. November 2004
11. Datenkomprimierung Bei den meisten bisher betrachteten Algorithmen wurde vor allem das Ziel verfolgt, möglichst wenig Zeit aufzuwenden, und erst in.
Übung 2.1 Information Wieviele Fragen benötigen Sie beim „Zahlenraten“
2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen
Fehlererkennende Codes
Parameterübergabe von zweidimensionalen Feldern in Funktionen.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Algorithmentheorie 7 – Bin Packing
Kapitel 5 Stetigkeit.
Kapitel 1 Das Schubfachprinzip
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Zusammenfassung Vorwoche
Bit Commitment mit quadratischen Resten Vortrag von Josef Pozny
Christian Schindelhauer
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Medien- Technik Datei-Formate: TIFF Tagged Image File Format.tif.tiff.
Huffman Entropie-Codierung Codierung mit variabler Länge
§14 Basis und Dimension (14.1) Definition: V sei wieder ein K-Vektorraum. Eine Menge B von Vektoren aus V heißt Basis von V, wenn B ist Erzeugendensystem.
§14 Basis und Dimension  (14.1) Definition: V sei wieder ein K-Vektorraum. Eine Menge B von Vektoren aus V heißt Basis von V, wenn B ist Erzeugendensystem.
Folie 1 § 29 Determinanten: Eigenschaften und Berechnung (29.1) Definition: Eine Determinantenfunktion auf K nxn ist eine Abbildung (im Falle char(K) ungleich.
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Polynome und schnelle Fourier-Transformation
Institut für Theoretische Informatik
1 Kap. 2 - Aufbau von Prozessoren ComputerarchitekturBéat HirsbrunnerS Oktober Primäre Speicher Fehlerkorrekturcodes.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
ENDLICHE KÖRPER RSA – VERFAHREN.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Analyse der Laufzeit von Algorithmen
Diskrete Mathematik Angelika Steger Institut für Theoretische Informatik TexPoint fonts used in EMF. Read the TexPoint manual before.
Sükün_Karatas Grundlagen der Codes Sükün_Karatas 3aFD.
Vertiefungsstoff zum Thema „Darstellung von Zahlen“
X. Übungsblatt – Aufgabe X Das Bild zeigt ein Diagramm, dass die Nachbarschafsbeziehungen für einen Code mit 3 Binärstellen darstellt. a)Welche Hamming-Distanz.
1 Codierung Prof. Dr. Dörte Haftendorn, Leuphana Universität Lüneburg, Haydn: Streichquartett op 54.3 aus Largo,
Systeme II 3. Die Datensicherungsschicht
 Präsentation transkript:

Motivation Bisher: Codes mit möglichst kurzer Codelänge. Wdh.: Sei A = {a1, ..., am}. Für einen Code c : A → {0,1}n fester Länge gilt: n ³ élog2 mù . Bei Codes minimaler Länge können Übertragungsfehler im allgemeinen nicht erkannt werden. Grund: Übertragungsfehler ändern Codewort in ein anderes Codewort. Will man bei Codes fester Länge für A = {a1, ..., am} Übertragungsfehler erkennen / korrigieren, so muss man Codes fester Länge mit zusätzlichen Codebits verwenden. Wähle als Codelänge n = élog2 mù + r mit r > 0. r Zusatzbits können zum Test auf Übertragungsfehler genutzt werden. Unterscheide: Fehlererkennende und fehlerkorrigierende Codes. RW-Systemarchitektur Kap. 2

Fehlererkennender Code Sei c : A ® {0,1}n ein Code fester Länge von A. Der kürzeste Abstand dist(c) := min{ dist(c(ai ),c(aj )); ai,ajÎA mit ai ¹aj } zwischen zwei verschiedenen Codewörtern heißt Distanz des Codes c . Der Code c heißt k-fehlererkennend, wenn der Empfänger in jedem Fall entscheiden kann, ob ein gesendetes Codewort durch Kippen von bis zu k Bits verfälscht wurde. Lemma Ein Code c von fester Länge ist genau dann k-fehlererkennend, wenn dist(c) ³ k+1 gilt. Beweis: klar. RW-Systemarchitektur Kap. 2

1-fehlererkennender Code: Beispiel Sprechweise Eine Bitfolge w Î{0,1}n besteht den Paritätstest (engl. Parity-Check), wenn die Anzahl der auf 1 gesetzten Bitstellen gerade ist. Beispiel Sei c : A ® {0,1}n ein Code fester Länge von A. Betrachte den Code C : A ® {0,1}n+1, der aus Code c entsteht, in dem eine Bitstelle an jedes Codewort c(a) hinten (oder vorne) angefügt wird und so gesetzt wird, dass der neue Code C(a) den Paritätstest besteht. Þ Code C ist 1-fehlererkennend ! RW-Systemarchitektur Kap. 2

Fehlerkorrigierender Code Sei c : A ® {0,1}n ein Code fester Länge von A. Der Code c heißt k-fehlerkorrigierend, wenn der Empfänger in jedem Fall entscheiden kann, ob ein gesendetes Codewort durch Kippen von bis zu k Bits verfälscht wurde, und zugleich das gesendete Codewort aus der empfangenen Bitfolge wieder restaurieren kann. Lemma Ein Code c von fester Länge ist genau dann k-fehlerkorrigierend, wenn dist(c) ³ 2k+1 gilt. RW-Systemarchitektur Kap. 2

Beweis Lemma [Fehlerkorrektur] Sei M(c(ai ), k) := {w Î{0,1}n | dist(c(ai ),w)  k} die Kugel um c(ai ) mit Radius k. M(c(ai ), k) besteht genau aus c(ai) und allen potentiellen „k-Verfälschungen“ von c(ai). Dann gilt: c ist k-fehlerkorrigierend   ai, aj i  j gilt: M(c(ai ),k)  M(c(aj ),k) =  Denn alle b  M(c(ai),k), b  c(ai) können nur k-Verfälschungen von c(ai) sein. Für den Beweis ist also zu zeigen: [ ai, aj i  j gilt: M(c(ai ),k)  M(c(aj ),k) = ]  dist(c)  2k+1 RW-Systemarchitektur Kap. 2

Beweis Lemma [Fehlerkorrektur] [ ai, aj ij gilt: M(c(ai ),k)  M(c(aj ),k) =ø]  dist(c)  2k+1 „ “ Annahme: dist(c) = l < 2k+1 d.h.  ai , ai mit dist(c(ai ),c(aj )) = l; Fall: l  k: dann ist c( aj )  M(c(ai ),k), also M(c(ai ),k)  M(c(aj ),k)  Fall: k < l < 2k+1: also gibt es eine Folge: c(ai) =b0, b1,..., bk-1, bk , bk+1,...bl= c( aj ) mit dist(bn , bn+1) = 1 (i=0,...,l-1), also bk  M(c(ai ),k) und bk  M(c(aj ),k), weil dist(bk , aj) = l-k-1  2k+1-k = k Also gilt M(c(ai ),k)  M(c(aj ),k)  RW-Systemarchitektur Kap. 2

Beweis Lemma [Fehlerkorrektur] [ ai, aj ij gilt: M(c(ai ),k)  M(c(aj ),k) =ø]  dist(c)  2k+1 „  “ Annahme: M(c(ai ),k)  M(c(aj ),k)  ø Es gibt also b im Durchschnitt mit: dist(c)  dist(c(ai ),c(aj ))  dist(c(ai ),b) + dist(b,c(aj ))  k + k RW-Systemarchitektur Kap. 2

1-fehlerkorrigierender Code Sei c : A ® {0,1}m+r ein 1-fehlerkorrigierender Code fester Länge von A mit |A|=2m . Satz Es gilt r ³ 1+ log2 m Beweis M1(a):={bÎ{0,1}m+r : b entsteht durch Kippen von einem Bit aus c(a)}{a} Es muss gelten M1(a1) ÇM1(a2)=Æ für alle a1,a2ÎA. Es gilt |M1(a)|=m+r+1 für alle aÎA. Þ 2m(m+r+1) £ 2m+r = 2m2r RW-Systemarchitektur Kap. 2

Beweis Satz [1-fehlerkorrigierender Code] Noch z.z. (m+r+1) £ 2r Þ r ³ 1+ log2 m Sei dazu m = 2k + l mit l, kÎ, l  0 und k maximal. (D.h. k, l sind so gewählt, dass k = log2 m). Dann gilt: (m+r+1)  2r  2k + l + r +1  2r  2k + 1  2r  k < r  k+1  r  1+ log2 m  r RW-Systemarchitektur Kap. 2

1-fehlerkorrigierende Codes Die untere Schranke des Satzes für die Anzahl der Zusatzbits ist nicht immer scharf. Aus dem Beweis ergibt sich aber folgendes Korollar: Sei c : A ® {0,1}m+r ein 1-fehlerkorrigierender Code fester Länge von A mit |A| = 2m . Dann gilt: m+r  2r – 1. Das Korollar liefert u.U. eine etwas schärfere untere Schranke für die Anzahl der Zusatzbits. Bsp.: m = 63. Der Satz liefert r  6, mit dem Korollar ergibt sich aber r  7. RW-Systemarchitektur Kap. 2

Hamming-Code ist 1-fehlerkorrigierender Code erweitert nicht fehlerkorrigierenden Code um r Bitstellen; dabei wird die Anzahl r der Zusatzbits so gewählt, dass r minimal ist unter der Bedingung m +r £ 2r – 1 (*) und entspricht somit exakt der Bedingung aus dem letzten Korollar für die minimale Länge eines 1-fehlerkorrigierenden Codes! ist also optimal im Hinblick auf die Zahl der ergänzten Stellen. Einfaches Nachrechnen zeigt: Mit r = 2 + log2 m wird Bedingung (*) auf jeden Fall erfüllt  Hamming-Code benutzt nie mehr als 2 + log2 m Zusatzbits. RW-Systemarchitektur Kap. 2

Hamming Code: Idee Erweitere nicht fehlerkorrigierenden Code um r Bitstellen. Benutze die Bitstellen 20, 21, ... 2r-1 als Überprüfungsbits, wobei die Bitstelle 2j die Bitstellen überprüft, deren Binärdarstellungen an der j-ten Stelle eine 1 haben. Die Bitstelle 2j wird so belegt, dass gerade viele Bitstellen, deren Binärdarstellungen an der j-ten Stelle eine 1 haben, gesetzt sind. RW-Systemarchitektur Kap. 2

Hamming Code an einem Beispiel Uncodiertes Zeichen: 0111 0101 0000 1111 m = 16, r = 5 Wie sieht nun der Hamming Code dieses Zeichens aus ? Der Code wird auf 21 Bitstellen verlängert Die "Zweierpotenz"-Bitstellen werden als Überprüfungsbits benutzt (Nummerierung beginnt rechts mit Stelle 1) 0 1110 _ 101 0000 _ 111 _ 1 _ _ RW-Systemarchitektur Kap. 2

Hamming Code an einem Beispiel Uncodiertes Zeichen: 0111 0101 0000 1111 m = 16, r = 5 Wie sieht nun der Hamming Code dieses Zeichens aus ? Der Code wird auf 21 Bitstellen verlängert Die "Zweierpotenz"-Bitstellen werden als Überprüfungsbits benutzt (Nummerierung beginnt rechts mit Stelle 1) 0 1110 _ 101 0000 _ 111 _ 1 _ _ wobei die Bitstelle 2j die Bitstellen überprüft, deren Binärdarstellungen an der j-ten Stelle eine 1 haben. Die Bitstelle 2j wird so belegt, dass gerade viele Bitstellen, deren Binärdarstellungen an der j-ten Stelle eine 1 haben, gesetzt sind. RW-Systemarchitektur Kap. 2

Hamming Code an einem Beispiel Das Überprüfungsbit 2j überprüft die Bitstellen, die in ihrer Binärdarstellung an der j-ten Stelle eine 1 haben. RW-Systemarchitektur Kap. 2

Hamming Code an einem Beispiel Das Überprüfungsbit 2j überprüft die Bitstel- len, die in ihrer Binär- darstellung an der j-ten Stelle eine 1 haben. RW-Systemarchitektur Kap. 2

Hamming Code an einem Beispiel Der Prüfbitwert ergibt sich aus der Summe modulo 2 der jeweiligen Spalte Das Überprüfungsbit 2j überprüft die Bitstel- len, die in ihrer Binär- darstellung an der j-ten Stelle eine 1 haben. 1 0 0 0 0 RW-Systemarchitektur Kap. 2

Hamming Code von 0111 0101 0000 1111 ergibt sich zu 0 1110 _ 101 0000 _ 111 _ 1 _ _ 1 0 0 0 0 RW-Systemarchitektur Kap. 2

Wie findet man einen Fehler ? Hamming Code von 0111 0101 0000 1111 0 1110 _ 101 0000 _ 111 _ 1 _ _ 1 0 0 0 0 Nehme an, es gibt einen Fehler an Position 13 ! RW-Systemarchitektur Kap. 2

Wie findet man einen Fehler ? Hamming Code von 0111 0101 0000 1111 0 1110 _ 100 0000 _ 111 _ 1 _ _ 1 0 0 0 0 Nehme an, es gibt einen Fehler an Position 13 ! Wie findet man den Fehler ? RW-Systemarchitektur Kap. 2

Wie findet man einen Fehler ? Fehler muss sich in Zeile 8+4+1=13 befinden ! 1 0 0 0 0 Die Spalten 8, 4 und 1 bestehen den Gleichheitstest nicht ! RW-Systemarchitektur Kap. 2

Zusammenfassung Grundlegende Definitionen für Codes, ASCII-Codierung Häufigkeitsabhängige Codes: Huffman Fehlererkennung, Fehlerkorrektur Beispiele: Parity-Check, Hamming-Code Viele weitere Verfahren: Datenkompression: Lempel-Ziv-Welch In Programmtexten häufig viele Leerzeichen, gleiche Schlüsselwörter etc.; kodiere Folgen von Leerzeichen bzw. Schlüsselwörter durch kurze Codes. Das soll auch funktionieren, wenn man noch nicht weiß, welche Zeichenketten häufig vorkommen. Zweidimensionaler Parity-Check CRC (Cyclic Redundancy Check): Standard bei Übertragungen über das Netz RW-Systemarchitektur Kap. 2