Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

RW-SystemarchitekturKap. 2 1 Motivation Bisher: Codes mit möglichst kurzer Codelänge. Wdh.: Sei A = {a 1,..., a m }. Für einen Code c : A {0,1} n fester.

Ähnliche Präsentationen


Präsentation zum Thema: "RW-SystemarchitekturKap. 2 1 Motivation Bisher: Codes mit möglichst kurzer Codelänge. Wdh.: Sei A = {a 1,..., a m }. Für einen Code c : A {0,1} n fester."—  Präsentation transkript:

1 RW-SystemarchitekturKap. 2 1 Motivation Bisher: Codes mit möglichst kurzer Codelänge. Wdh.: Sei A = {a 1,..., a m }. Für einen Code c : A {0,1} n fester Länge gilt: n log 2 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 = {a 1,..., a m } Übertragungsfehler erkennen / korrigieren, so muss man Codes fester Länge mit zusätzlichen Codebits verwenden. Wähle als Codelänge n log 2 m + r mit r > 0. r Zusatzbits können zum Test auf Übertragungsfehler genutzt werden. Unterscheide: Fehlererkennende und fehlerkorrigierende Codes.

2 RW-SystemarchitekturKap. 2 2 Fehlererkennender Code Sei c : A {0,1} n ein Code fester Länge von A. Distanz des Codes Der kürzeste Abstand dist(c) := min{ dist(c(a i ),c(a j )); a i,a j A mit a i a j } zwischen zwei verschiedenen Codewörtern heißt Distanz des Codes c. k-fehlererkennend 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 Lemma Ein Code c von fester Länge ist genau dann k-fehlererkennend, wenn dist(c) k+1 gilt. Beweis: klar.

3 RW-SystemarchitekturKap fehlererkennender Code: Beispiel Sprechweise ParitätstestParity- Check 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 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 !

4 RW-SystemarchitekturKap. 2 4 Fehlerkorrigierender Code Sei c : A {0,1} n ein Code fester Länge von A. k-fehlerkorrigierend 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 Lemma Ein Code c von fester Länge ist genau dann k-fehlerkorrigierend, wenn dist(c) k+1 gilt.

5 RW-SystemarchitekturKap. 2 5 Beweis Lemma [Fehlerkorrektur] Sei M(c(a i ), k) := {w {0,1} n | dist(c(a i ),w) k} die Kugel um c(a i ) mit Radius k. M(c(ai ), k) besteht genau aus c(a i ) und allen potentiellenk-Verfälschungen von c(a i ). Dann gilt: c ist k-fehlerkorrigierend a i, a j i j gilt: M(c(a i ),k) M(c(a j ),k) = Denn alle b M(c(a i ),k), b c(a i ) können nur k-Verfälschungen von c(a i ) sein. Für den Beweis ist also zu zeigen: [ a i, a j i j gilt: M(c(a i ),k) M(c(a j ),k) = ] dist(c) 2k+1

6 RW-SystemarchitekturKap. 2 6 Beweis Lemma [Fehlerkorrektur] Annahme: dist(c) = l < 2k+1 d.h. a i, a i mit dist(c(a i ),c(a j )) = l; 1.Fall: l k: dann ist c( a j ) M(c(a i ),k ), also M(c(a i ),k) M(c(a j ),k) 2.Fall: k < l < 2k+1: also gibt es eine Folge: c(a i ) =b 0, b 1,..., b k-1, b k, b k+1,...b l = c( a j ) mit dist(b n, b n+1 ) = 1 (i=0,...,l-1), also b k M(c(a i ),k) und b k M(c(a j ),k), weil dist(b k, a j ) = l-k-1 2k+1-k = k Also gilt M(c(ai ),k) M(c(aj ),k) [ a i, a j i j gilt: M(c(a i ),k) M(c(a j ),k) =ø] dist(c) 2k+1

7 RW-SystemarchitekturKap. 2 7 Beweis Lemma [Fehlerkorrektur] Annahme: M(c(a i ),k) M(c(a j ),k) ø Es gibt also b im Durchschnitt mit: dist(c) dist(c(a i ),c(a j )) dist(c(a i ),b) + dist(b,c(a j )) k + k [ a i, a j i j gilt: M(c(a i ),k) M(c(a j ),k) =ø] dist(c) 2k+1

8 RW-SystemarchitekturKap fehlerkorrigierender Code Sei c : A {0,1} m+r ein 1-fehlerkorrigierender Code fester Länge von A mit |A|=2 m. Satz Satz Es gilt r log 2 m Beweis M 1 (a):={ b {0,1} m+r : b entsteht durch Kippen von einem Bit aus c(a) } {a} Es muss gelten M 1 (a 1 ) M 1 (a 2 )= für alle a 1,a 2 A. Es gilt |M 1 (a)|=m+r+1 für alle a A. 2 m (m+r+1) 2 m+r = 2 m 2 r

9 RW-SystemarchitekturKap. 2 9 Beweis Satz [1-fehlerkorrigierender Code] Noch z.z. (m+r+1) 2 r r log 2 m Sei dazu m = 2 k + l mit l, k, l 0 und k maximal. (D.h. k, l sind so gewählt, dass k = log 2 m ). Dann gilt: (m+r+1) 2 r 2 k + l + r +1 2 r 2 k r k < r k+1 r 1+ log 2 m r

10 RW-SystemarchitekturKap 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| = 2 m. Dann gilt: m+r 2 r – 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.

11 RW-SystemarchitekturKap 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 2 r – 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 + log 2 m wird Bedingung (*) auf jeden Fall erfüllt Hamming-Code benutzt nie mehr als 2 + log 2 m Zusatzbits.

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

13 RW-SystemarchitekturKap 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 _ _ Hamming Code an einem Beispiel

14 RW-SystemarchitekturKap 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 2 j die Bitstellen überprüft, deren Binärdarstellungen an der j-ten Stelle eine 1 haben. Die Bitstelle 2 j wird so belegt, dass gerade viele Bitstellen, deren Binärdarstellungen an der j-ten Stelle eine 1 haben, gesetzt sind. Hamming Code an einem Beispiel

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

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

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

18 RW-SystemarchitekturKap Hamming Code von ergibt sich zu _ _ 111 _ 1 _ _

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

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

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

22 RW-SystemarchitekturKap 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


Herunterladen ppt "RW-SystemarchitekturKap. 2 1 Motivation Bisher: Codes mit möglichst kurzer Codelänge. Wdh.: Sei A = {a 1,..., a m }. Für einen Code c : A {0,1} n fester."

Ähnliche Präsentationen


Google-Anzeigen