Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Motivation Bisher: Codes mit möglichst kurzer Codelänge."—  Präsentation transkript:

1 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

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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 Hamming Code an einem Beispiel
Uncodiertes Zeichen: 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) _ _ 111 _ 1 _ _ RW-Systemarchitektur Kap. 2

14 Hamming Code an einem Beispiel
Uncodiertes Zeichen: 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) _ _ 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

15 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

16 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

17 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. RW-Systemarchitektur Kap. 2

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

19 Wie findet man einen Fehler ?
Hamming Code von _ _ 111 _ 1 _ _ Nehme an, es gibt einen Fehler an Position 13 ! RW-Systemarchitektur Kap. 2

20 Wie findet man einen Fehler ?
Hamming Code von _ _ 111 _ 1 _ _ Nehme an, es gibt einen Fehler an Position 13 ! Wie findet man den Fehler ? RW-Systemarchitektur Kap. 2

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

22 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


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

Ähnliche Präsentationen


Google-Anzeigen