Einführung in die Kodierungstheorie

Transcription

Einführung in die Kodierungstheorie
Einführung in die Kodierungstheorie
•
•
•
•
•
•
•
•
•
•
•
•
Einführung
Vorgehen
Beispiele
Definitionen (Code, Codewort, Alphabet, Länge)
Hamming-Distanz
Definitionen (Äquivalenz, Coderate, …)
Singleton-Schranke
Lineare Codes
Hamming-Gewicht
Generator/Kontrollmatrix
Syndrom-Decodierung
Hamming-Codes
Einführung
Vorgehen bei FEC
Kanal mit
Störungen
Sender
Encoder
Decoder
Empfänger
• Kapselung von Nutzdaten mit Redundanzen zu
Codewörtern
• Übermittlung der Codewörter zum Empfänger
• Decodieren der Codewörter zu Nutzdaten +
Erkennen/Beseitigen von Fehlern
parity check
Zu senden ist ein Wort w mit der Länge von n Bits.
Codierung: hänge noch ein Bit p zu den Nutzdaten so,
dass folgendes gilt:
n
∑ b ≡ 0 (mod 2)
i=0
i
wobei bb
0 1 " bn = wp
z.B. wird die Nachricht 101010 zu 1010101 codiert.
Decodierung: Ist die Summe der übertragenen Bits
ungerade, deutet das auf einen Fehler hin.
Eine Korrektur des Fehlers ist nicht möglich.
Wiederholungscode
Alphabet {A,B,C,D}
Codierung: Um einen Buchstaben zu übertragen,
senden wir diesen dreimal.
Also für D senden wir DDD.
Decodierung: Bei der Übertragung passiert ein Fehler,
wir empfangen DDC. Wir decodieren nach den am
öftesten auftretenden Buchstaben: D.
Empfangen wir stattdessen DBC, ist die Korrektur
nicht mehr möglich.
Hamming [7,4] code
Die zu sendende Nachricht wird in Blöcke aus 4 Bits
unterteilt.
⎛ 1 0 0 0 1 1 0⎞
Codierung: Jedem
⎜ 0 1 0 0 1 0 1⎟
⎟ = [ I4 P ]
G=⎜
Block wird durch
⎜ 0 0 1 0 0 1 1⎟
Multiplikation (mod 2)
⎜
⎟
0
0
0
1
1
1
1
⎝
⎠
mit der Matrix G ein
Codewort mit 7 Bits
zugewiesen.
z.B. das zu b = (1, 0, 0, 1) zugehörige Codewort
wäre c := b× G ≡ (1, 0, 0, 1, 0, 0, 1) (mod 2)
Hamming [7,4] code
Decodierung: Bilde die
Matrix H aus P und
der Einheitsmatrix I3
wie folgt:
⎛1
⎜1
⎜
⎜0
⎡P ⎤ ⎜
H := ⎢ ⎥ = ⎜ 1
⎣ I3 ⎦ ⎜
1
⎜
⎜0
⎜0
⎝
1 0⎞
0 1 ⎟⎟
1 1⎟
⎟
1 1⎟
0 0⎟
⎟
1 0⎟
0 1 ⎟⎠
Angenommen, es wird
statt dem gesendeten
b= ( 1 0 0 1 0 0 1)
ein
b' = ( 1 0 0 0 0 0 1)
empfangen.
Multipliziert man nun b‘
mit H, so ergibt das:
b'× H ≡ (1 1 1) (mod 2)
Das ist die 4-te Zeile von
H, also ist der Fehler
an der 4-ten Stelle.
Definitionen
• Ein Code wird identifiziert mit der Menge seiner
Codewörter.
• Symbole aus denen die Codewörter bestehen bilden ein
Alphabet.
• Hat das Alphabet q Symbole, nennt man den Code
q-när.
• Ein Code hat die Länge n genau dann, wenn seine
Codewörter die Länge n haben.
• Elemente eines Codes nennt man Codewörter.
Hamming-Distanz
2
• Hamming-Distanz: d(u,v) ist
1
die Anzahl der Stellen, an denen
sich die Vektoren u und v
unterscheiden.
• Minimaldistanz: d(C) ist die
kleinste Hamming-Distanz
zwischen den Vektoren aus C.
1
Formal:
d(C) := min {d(u, v) u, v ∈ C; u ≠ v}
• Minimal-Distanz-Decodierung: Korrektur der Fehler im
Vektor durch das Finden eines Codeworts mit der
kleinsten Hamming-Distanz zu diesem.
Hamming-Distanz
1. Ein Code C erkennt bis zu s Fehler, wenn d(C) ≥ s + 1
2. Ein Code C korrigiert bis zu t Fehler, wenn d(C) ≥ 2t + 1
Zu 1:
Angenommen, ein Codewort
c wird gesendet und kommt
als v beim Empfänger mit
bis zu d(C)-1 Fehlern an.
Dann ist es kein anderes
Codewort, da
d(c, v) = d(C) − 1 < d(C )
d
C
c2 r
c1 r
d(C ) − 1
r=
2
Definitionen
• Einen Code C der Länge n, mit M:=|C| Codewörtern und
minimaler Distanz d:=d(C), nennt man (n,M,d) Code.
n
– parity check ist ein (n+1,2 ,2) Code
– Wiederholungscode ist ein (3,4,3) Code
4
– Hamming [7,4] Code ist ein (7,2 ,3) Code
• Zwei Codes C und C‘ sind äquivalent, wenn man durch
Permutationen von Stellen und Symbolen aus den
Codewörtern des einen die Codewörter des anderen
Codes erhält.
Stellenpermutation c = (c1,", cn ) 6 c' = (cσ (1) ,", cσ ( n ) )
Symbolpermutation c = (c1,", cn ) 6 c' = (σ (c1 ),",σ (c2 ))
Definitionen
• Haben wir einen q-nären (n,M,d) Code, so definieren
wir die Coderate/Informationsrate wie folgt:
logq M
R=
n
log 4 1
– Coderate von Wiederholungscode: R =
4
=
3
3
log2 16 4
– Coderate von Hamming [7,4] Code: R =
=
7
7
• Für einen (n,M,d) Code C definieren wir den relativen
d
Minimalabstand:
δ (C ) :=
n
Singleton-Schranke
• Für einen q-nären (n,M,d) Code C gilt:
M ≤ qn−d+1
Beweis:
Entfernt man aus jedem Codewort die letzten d-1
Symbole, erhält man M verschiedene Vektoren
aus An-(d-1).
Die Anzahl solcher Vektoren ist höchstens qn−d+1.
• Codes, deren Distanz die Singleton-Schranke erreicht,
nennt man MDS Codes (maximum distance separable).
Lineare Codes
• Ein Linearer Code mit der Länge n und Dimension k
über einem endlichen Körper K ist ein k-dimensionaler
Unterraum von Kn.
Solchen Code nennt man [n,k] Code.
Ist d :=d(C), dann nennt man den Code [n,k,d] Code.
– Hamming [7,4] Code ist Linear.
– Parity check ist Linear
Hamming-Gewicht
• Wir Definieren Hamming-Gewicht w(u) des Vektors u
als die Anzahl an Stellen ungleich Null.
Formal: w(u ) = d(u,0); 0 ist der Nullvektor
• Es sei C ein linearer Code. Dann ist d(C) gleich dem
kleinsten Hamming-Gewicht aus allen Codewörtern
ungleich Null. d(C ) = min {w(u ) | 0 ≠ u ∈ C}
Beweis: Es existieren zwei Codewörter v und w, so dass
d(v,w)=d(C). Dann gilt d(v, w) = w(v − w) = d(C )
Generatormatrix
• Zur Konstruktion eines beliebigen linearen [n,k] Codes
erzeugt man einen k-dimensionalen Unterraum von Kn.
• Die (k×n)-Matrix G,bestehend aus k Basisvektoren,
nennt man Generatormatrix (generating matrix).
• Die durch Permutation
⎛1
0 ⎞
der Spaltenvektoren
⎜
⎟
erhaltene Matrix
G = ⎡⎣ Ik P ⎤⎦ = ⎜ %
P⎟
heißt von
⎜0
⎟
1
⎝
⎠
reduzierter Form (systematic).
Kontrollmatrix
• Es sei C ein linearer [n,k] Code. Die Matrix H heißt
Kontrollmatrix für C wenn:
v ∈ C ⇔ vHT = 0
• Haben wir für einen Code die Generatormatrix G=[Ik,P],
dann ist H=[-PT,In-k] die Kontrollmatrix für diesen Code.
⎛
1
0⎞
⎜
⎟
T
T
H = ⎡⎣ −P In−k ⎤⎦ = ⎜ −P
%
⎟
⎜
⎟
0
1
⎝
⎠
Syndrom-Decodierung
• Es sei C ein linearer [n,k] Code und Vektor u ∈ K n .
Die Menge u + C = {u + c c ∈ C} heißt Nebenklasse
(coset) von C.
• Vektor mit dem kleinsten Hamming-Gewicht in seiner
Nebenklasse heißt Nebenklassenführer (coset leader).
• Der Vektor S(u)=uHT heißt Syndrom von u.
• Zwei Vektoren u, v gehören zur selben Nebenklasse
genau dann, wenn sie den gleichen Syndrom haben.
Formal: u − v ∈ C ⇔
(u − v)HT = 0 ⇔
S(u ) = uHT = vHT = S(v)
Syndrom-Decodierung
• Syndrom-Decodierungs-Algorithmus:
0. Initialisierung: Erstelle Tabelle mit Nebenklassenführern und den
dazugehörigen Syndromen
1. Berechne Syndrom S(r)=rHT für den empfangenen Vektor r.
2. Finde in der Tabelle den Nebenklassenführer c0 mit dem
gleichen Syndrom S(c0)=S(r)
3. Decodiere r als r-c0
Hamming-Codes
• Binäre Hamming-Codes haben folgende Parameter:
m
1. Code-Länge: n=2 -1
m
2. Dimension: k=2 -m-1
3. Minimal-Distanz: d=3
• Für einen binären Hamming-Code der Länge n:
1. erstelle (m×n)-Matrix deren Spalten allen binären m-Tupeln
ungleich Null entsprechen.
2. durch Überführung der Matrix in reduzierte Form (systematic)
erhalten wir die Kontrollmatrix H für den Hamming [n,k] Code
3. dann bildet man aus H=[-PT,In-k] die Generatormatrix G=[Ik,P]
Hamming-Codes
• Hamming-Decodierungs-Algoritmus:
1. Berechne Syndrom S(y)=yHT für den empfangenen Vektor y.
Wenn S(y)=0, dann gibt es keine Fehler.
2. Sonst, suche die Position j der Spalte von H die gleich dem
transponierten Syndrom ist.
3. Ändere das j-te Bit von y und gebe das Ergebnis zurück.

Documents pareils