Kapitel 1: Codierungstheorie Inhalt:1.1 Einf - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

Kapitel 1: Codierungstheorie Inhalt:1.1 Einf

Description:

Title: Blockchiffren Author: Dr. U. Rosenbaum Last modified by: Muckoladenmannj Created Date: 10/21/1996 6:27:46 PM Document presentation format: A4-Papier (210x297 mm) – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 71
Provided by: DrU114
Category:

less

Transcript and Presenter's Notes

Title: Kapitel 1: Codierungstheorie Inhalt:1.1 Einf


1
Kapitel 1 Codierungstheorie Inhalt 1.1
Einführung 1.2 Quellcodierung 1.3
Fehlererkennende Codes 1.4 Fehlerkorrigierende
Codes
2
1.1 Einführung
  • In der Codierungstheorie unterscheidet man
    Quellcodierung und Kanalcodierung.
  • 1. Die Quellcodierung hat zum Ziel, Daten so zu
    transformieren, dass sie gut übertragen werden
    können.
  • 2. Die Kanalcodierung hat zum Ziel, Daten so zu
    transformieren, dass bei der Übertragung
    auftretende Fehler erkannt und evtl. sogar
    korrigiert werden können.

3
Quellcodierung
  • Bei der Quellcodierung sind zwei Aspekte wichtig
  • (a) Oft treten Daten in einer Form auf, die sich
    nicht zur Übermittlung eignet. Diese Quelldaten
    müssen codiert werden, damit sie überhaupt
    übertragen werden können. Beispiele-
    Flaggencode- Digitalisierung von Sprache,
    Bildern, ...- Morse-Code a , b
    , ...- ASCII-Code a 10000010, b
    10000100, ...
  • (b) Die Daten sollen möglichst ökonomisch
    übertragen werden. Dazu sollen sie so gut wie
    möglich komprimiert werden.

4
Kanalcodierung
  • Der Kanalcodierung liegt folgende Situation
    zugrunde
  • Ein Sender will einem Empfänger gewisse Daten
    über einen Kanal übermitteln. Dabei können
    zufällige Fehler vorkommen. Diese Fehler treten
    in der Regel aus physikalischen Gründen auf.
  • Beispiele- Tippfehler bei Eingaben über eine
    Tastatur- Kratzer auf einer CD- Atmospherische
    Störungen (Rauschen) bei einer Funkübertragung

5
Kommunikationsmodell der Kanalcodierung
  • Der Sender codiert einen Datensatz d zu einer
    Nachricht c (Codewort) diese wird über den
    Kanal geschickt. Der Empfänger versucht durch
    Decodieren zu erkennen, ob Fehler aufgetreten
    sind, und evtl. den Datensatz wieder zu
    rekonstruieren.

6
Fehlererkennung und -korrektur
  • Bei fehlererkennenden Codes wird wenn ein
    Fehler passiert angezeigt, dass etwas nicht
    stimmt. Die Übertragung muss daraufhin
    wiederholt werden. Für viele Anwendungen ist das
    ausreichend.
  • Beispiele Kontonummern, Buchnummern,
    Artikelnummern, ...
  • Manchmal ist eine wiederholte Übertragung aber
    sehr aufwendig oder überhaupt nicht möglich. Dann
    benötigt man fehlerkorrigierende Codes.
  • Beispiele CD-Player, Datenfernübertragung
    zwischen Computern (Internet), Übertragung von
    Planetenfotos von Satelliten zur Erde, ...

7
1.2 Quellcodierung
  • Sei s1, s2, ..., sn eine Quelle mit den
    Quellzuständen si, die jeweils mit der
    Häufigkeit oder Wahrscheinlichkeit pi
    auftreten.
  • Beispiele(a) Im Deutschen treten die Buchstaben
    des Alphabets mit folgenden Wahrscheinlichkeiten
    aufe 17,4 , n 9,78 , i 7,55 , s 7,27
    , r 7,00 , a 6,51 , ...
  • (b) Seien s1, s2, ..., sn die verschiedenen
    Bytes, die in einem Computerprogramm auftreten.
    Dabei trete si mit der Häufigkeit pi auf. Wir
    möchten dieses Programm so gut wie möglich
    komprimieren.

8
Der Huffman-Code
  • Wir wollen uns im Folgenden auf binäre Codierung
    beschränken.
  • Der wichtigste Code zur Datenkomprimierung ist
    der Huffman-Code.
  • Er beruht auf der Idee, häufig vorkommende
    Zeichen in möglichst kurze Codewörter zu
    transformieren.
  • Beispiel Wir betrachten folgende 8
    Quellzustände und Häufigkeiten

Quellzustände s1 s2 s3 s4 s5 s6 s7 s8
Häufigkeiten 0,22 0,20 0,18 0,15 0,10 0,08 0,05 0,02
9
Beispiel zum Huffman-Code
si pi Code pi Code pi Code pi Code pi Code pi Code pi Code
s1 0,22 10 0,22 10 0,22 10 0,25 01 0,33 00 0,42 1 0,58 0
s2 0,20 11 0,20 11 0,20 11 0,22 10 0,25 01 0,33 00 0,42 1
s3 0,18 000 0,18 000 0,18 000 0,20 11 0,22 10 0,25 01
s4 0,15 001 0,15 001 0,15 001 0,18 000 0,20 11
s5 0,10 011 0,10 011 0,15 010 0,15 001
s6 0,08 0100 0,08 0100 0,10 011
s7 0,05 01010 0,07 0101
s8 0,02 01011
10
Die Schritte beim Huffman-Code
  • In jedem Schritt werden die Quellzustände mit
    den kleinsten Häufig-keiten zu einem neuen
    Quellzustand kombiniert, dessen Häufigkeit die
    Summe der alten Häufigkeiten ist (
    ).Dies wird solange
    durchgeführt bis nur noch zwei Zustände übrig
    sind.- Von diesen beiden Quellzuständen erhält
    der häufigere eine 0, der seltenere eine 1 als
    Code.- Jetzt geht es rückwärts Der Code eines
    Quellzustands im Schritt k sei b1b2...bm. Wenn
    dieser Zustand auch im Schritt k-1 vorkommt,
    dann erhält er dort die gleiche Codierung. Wenn
    der Zustand aus den Zuständen su und sv
    kombiniert wurde (o.B.d.A. sei su häufiger),
    dann erhält su den Code b1b2...bm0 und sv
    erhält b1b2...bm1.

11
Die durchschnittliche Codewortlänge
  • Sei S s1, s2, ..., sn eine Quelle mit den
    Quellzuständen si, die jeweils mit der
    Wahrscheinlichkeit pi auftreten.
  • Unter einem binären Code werde si in c(si)
    codiert. Sei l(si) die Länge des Codeworts
    c(si).
  • Wir definieren die durchschnittliche
    Codewortlänge l als
  • l p1 l(s1) p2 l(s2) ... pn l(sn) .
  • Beispiel Im obigen Beispiel gilt
  • l 0,222 0,22 0,183 0,153 0,13
    0,084 0,055 0,025 2,8

12
Wie gut ist der Huffman-Code?
  • Der Huffman-Code ist im folgenden Sinne
    optimal.
  • 1.2.1 Satz. Sei S s1, s2, ..., sn eine
    Quelle mit den zugehörigen Wahrscheinlichkeiten
    pi. Dann gilt es keinen Code, der eine kleinere
    durchschnittliche Codewortlänge als der
    Huffman-Code hat.
  • Beweis durch Induktion nach n. Wenn der Code in
    einem Schritt k optimal ist, dann liefert das
    Vorgehen beim Huffman-Code auch im Schritt k-1
    einen optimalen Code. ?
  • Bemerkung. Man kann zeigen, dass der Huffman-Code
    eindeutig decodierbar ist.

13
1.3 Fehlererkennende Codes
  • Schon die alten Römer wussten es Errare humanum
    est.
  • Wir betrachten Fehler beim Übertragen von Daten,
    die durch zufällige Störungen hervorgerufen
    werden.
  • Folgen falsche Geldüberweisungen,
    Artikellieferungen ,...
  • Die Fehler, die wir behandeln, sind Veränderungen
    von Zeichen. Keine Fehler in diesem Sinne sind
    also Verlust oder Hinzufügen von Zeichen.
  • Mit Hilfe fehlererkennender Codes soll der
    Empfänger entscheiden können, ob die empfangene
    Nachricht Fehler enthält oder nicht.

14
Fehlererkennung im täglichen Leben
  • Namen buchstabieren (Zet-es-zeh-ha-i-e-ge-en-e-e
    r)
  • Buchstabieralphabete (A wie Anton, B wie Berta,
    ...)
  • Sprachen sind so redundant (haben so viel
    überschüssige Informa-tion), dass man alls
    vrsteht, auc wnn einge Bchstbn fhln. Selpst wen
    groppe recktscreib Felr auftren ged dr ßinn nich
    färlohn.
  • Grundidee Man fügt der Nachricht etwas hinzu -
    eine Kontrollinforma-tion, die nur dazu dient,
    eventuelle Übertragungsfehler zu erkennen.

15
Die Idee Eine Prüfziffer!
Das Szenario Als Daten wollen wir 4-stellige
Zahlen übermitteln. Der Empfänger soll merken,
ob die Daten korrekt sind oder nicht. Die Idee
Wir fügen eine Ziffer hinzu, und zwar so, dass
die Quersumme dieser (5-stelligen) Zahl durch 10
teilbar ist! Diese hinzugefügte Ziffer heißt
Prüfziffer. Beispiele (a) Der Datensatz 1234
hat die Prüfziffer 0.(b) Der Datensatz 4813
hat die Prüfziffer 4.
16
Wie wird der Fehler erkannt?
Woran merkt der Empfänger, dass ein Fehler
aufgetreten ist? Der Empfänger bildet die
Quersumme der empfangenen (5-stelligen) Zahl.-
Wenn diese durch 10 teilbar ist, so akzeptiert er
die Nachricht und nimmt die ersten vier Stellen
als Daten.- Wenn die Quersumme nicht durch 10
teilbar ist, so weiß er, dass ein Fehler passiert
ist und fordert die Nachricht erneut
an. Beispiel Wird die Zahl 12345 empfangen, so
muss beim Übertragen ein Fehler aufgetreten sein,
denn 1234515 ist nicht durch 10 teilbar.
17
Paritätscodes
  • Die Daten seien binäre Folgen der Länge n-1, D
    die Menge aller Daten
  • D (b1, ..., bn-1) bi ? 0, 1.
  • Wir erhalten die codierte Nachricht, indem wir
    ein n-tes Bit anhängen, so dass die Summe aller
    Bits gerade ist
  • M (b1, ..., bn-1, bn) bi ? 0, 1 und
    bi mod 2 0.
  • Codierung Wenn b1 ... bn-1 gerade ist,
    setzt der Sender bn 0, sonst bn
    1.Decodierung Der Empfänger überprüft, ob die
    Summe der Bits in der empfangenen Nachricht
    gerade ist. Falls ja, akzeptiert es die
    Nachricht falls nein, akzeptiert es sie nicht.

18
Der Paritätscode ist 1-fehlererkennend
  • Die Menge
  • M (b1, ..., bn-1, bn) bi ? 0, 1 und
    bi mod 2 0.
  • heißt Paritätscode der Länge n zur Basis 2.
  • Die Elemente von M heißen Codewörter.
  • Beobachtung Der Paritätscode ist ein
    1-fehlerekennender Code. Das heißt, wenn
    höchstens ein Fehler passiert, wird dieser
    entdeckt.
  • Bemerkung Wenn 2 (oder eine gerade Anzahl)
    Fehler passieren, akzeptiert der Empfänger die
    Nachricht, obwohl sie Fehler enthält.

19
Verallgemeinerung Paritätscodes über Gruppen
  • Sei G eine Gruppe und sei c ein beliebiges
    Element von G. Die Menge
  • C (g1, ..., gn-1, gn) gi ? G und g1? ... ?
    gn-1? gn c
  • ist ein Paritätscode der Länge n über der
    Gruppe G.
  • Wie können uns (g1, ..., gn-1) als
    Informationssymbole (Daten) und gn als
    Prüfsymbol vorstellen.
  • Berechnung des Prüfsymbols gn gn-1-1 ? gn-2-1
    ? ... ? g1-1 ? c.
  • Beispiele (a) G Z2 0, 1, c 0
    Vorheriges Beispiel (Folie 17). (b) G
    Z10, c 0 Dezimalcode von Folie 15.

20
1-Fehlererkennung bei Paritätscodes über Gruppen
  • 1.3.1 Satz. Paritätscodes über Gruppen sind
    1-fehlererkennend.
  • Beweis. Sei (g1, ..., gn-1, gn) ein Codewort.
    Dann ist
  • g1? ... ? gn-1? gn c.
  • Angenommen, das i-te Symbol gi wird durch ein
    anderes Symbol gi ersetzt (ein Fehler an der
    i-ten Stelle passiert). Würde der Empfänger die
    Nachricht (g1, ..., gi-1, gi, gi1, ... , gn-1,
    gn) akzeptieren, so müsste gelten
  • g1? ... ? gi-1 ? gi ? gi1 ? ... ? gn-1? gn c.
  • Zusammen folgt gi gi. Das ist ein
    Widerspruch. ?

21
Vertuaschungsfehler
  • Bisher haben wir nur Einzelfehler betrachtet Ein
    Zeichen wurde durch ein anderes ersetzt.
    Beispiel Statt 1357 liest man 1857.
  • Jetzt betrachten wir Vertauschungsfehler Zwei
    aufeinanderfolgende Zeichen werden vertauscht.
    Beispiel Statt 1357 liest man 1375.
  • Paritätscodes erkennen Vertauschungsfehler im
    Allgemeinen nicht.Wenn G eine abelsche Gruppe
    ist, wird kein Vertauschungsfehler erkannt. Wenn
    G nichtabelsch ist, werden manche
    Vertauschungs-fehler erkannt, aber niemals alle
    (denn jedes Element ist stets mit seinem Inversen
    und mit dem neutralen Element vertauschbar).

22
Paritätscodes mit Gewichten
  • Problem Wie können wir benachbarte Stellen
    unterscheiden? Neue Idee Wir versehen jede
    Stelle mit einem Gewicht!
  • Sei G die Gruppe (Zm, ) und c ? Zm. Seien
    w1, ..., wn-1, wn ? Zm. Dann ist
  • C (z1, ..., zn-1, zn) zi ? Zm und w1z1
    ... wn-1zn-1 wnzn c
  • ein Paritätscode zur Basis m mit den Gewichten
    w1, ..., wn.
  • Beispiel Wir erhalten den ursprünglichen
    Paritätscode (ohne Gewichte) zurück, wenn wir w1
    ... wn 1 setzen.

23
1-Fehlererkennung bei Paritätscodes mit Gewichten
  • 1.3.2 Satz. Obiger Paritätscode mit Gewichten ist
    genau dann 1-fehlererkennend, wenn gilt w1,
    ..., wn-1, wn ? Zm.
  • Beweis. ? Sei (z1, ..., zn-1, zn) ein
    Codewort. Dann ist
  • w1z1 ... wn-1zn-1 wnzn c.
  • Angenommen, das i-te Symbol zi wird durch zi
    ? zi ersetzt. Wäre auch (z1, ..., zi-1, zi,
    zi1, ... , zn-1, zn) ein Codewort, so müsste
    gelten
  • w1z1 ... wi-1zi-1 wizi wi1zi1 ...
    wn-1zn-1 wnzn c.
  • Subtraktion der beiden Gleichungen liefert wizi
    - wizi wi(zi - zi) 0. Da wi invertierbar
    ist, folgt zi - zi 0, also zi zi
    Widerspruch.

24
Fortsetzung des Beweises
  • ? Angenommen, wi wäre nicht aus Zm. Dann ist
    t ggT(m, wi) gt 1. Dann wird die Veränderung
    von zi m/t zu zi 0 nicht
    erkannt!(Denn Sei wi k?t. Sei (z1, ...,
    zi, ..., zn) ein Codewort mit zi m / t.
    Dann ist c w1z1 ... wizi ... wnzn
    w1z1 ... k?t ? m/t ... wnzn
    w1z1 ... 0 ... wnzn (in
    Zm). w1z1 ... wi ? 0 ... wnzn
    w1z1 ... wi ? zi ... wnzn . Also ist
    auch (z1, ..., zi, ..., zn) ein Codewort, der
    Fehler an der i-ten Stelle wird nicht erkannt.
    ) ?

25
Der EAN-Code
Fast jedes käufliche Produkt besitzt eine EAN
(Europäische Artikel-Nummer) mit zugehörigem
Strichcode. Die EAN ist entweder 13- oder
8-stellig. An letzter Stelle steht die
Prüfziffer. Sie wird nach einem Paritätscode zur
Basis 10 mit den Gewichten 1-3-1-...-1 (bei 13
Stellen) bzw. 3-1-3-...-1 (bei 8 Stellen)
berechnet. Der EAN-Code erkennt alle
Einzelfehler (nach 1.3.2), aber nicht alle
Vertauschungsfehler!
26
Erkennen von Vertauschungsfehlern
  • 1.3.3 Satz. Ein Paritätscode zur Basis m mit
    Gewichten w1, w2, ..., wn erkennt genau dann
    alle Vertauschungsfehler an den Stellen i und
    j, falls die Zahl wi ? wj teilerfremd zu m
    ist.
  • Beweis. Sei (z1, z2, ..., zn) ein Codewort das
    bedeutet, dass gilt
    w1z1 w2z2 ... wnzn c.Nun mögen
    die Einträge an den Stellen i und j
    vertauscht werden. Dann gilt Der Empfänger
    bemerkt diesen Fehler nicht? w1z1 w2z2 ...
    wizj ... wjzi ... wnzn c ? wizi
    wjzj (wizj wjzi) 0 ? wi(zi zj) wj(zj
    zi) 0 ? (wi wj)(zi zj) 0.

27
Fortsetzung des Beweises
  • Das bedeutet Der Empfänger bemerkt jede solche
    Vertauschung, falls keine der möglichen Zahlen
    (wi wj)(zi zj) gleich 0 ist (in Zm), d.h.
    falls keine der Zahlen (wi wj)(zi zj) durch
    m teilbar ist.
  • ? Wenn die Zahlen m und wi wj teilerfremd
    sind, dann teilt m keine der Zahlen (wi
    wj)(zi zj). Denn m müsste dann sogar zi zj
    teilen, was wegen ?zi zj? ? m?1 unmöglich
    ist.
  • ? Wenn andererseits die Zahlen m und wi wj
    einen größten gemeinsamen Teiler t gt 1 haben,
    dann wird die Vertauschung von zi m/t und
    zj 0 nicht erkannt. ?

28
Kann man Einzel- und Vertauschungsfehler erkennen?
  • 1.3.4 Korollar. Für gerades m gibt es keinen
    Paritätscode zur Basis m, der alle Einzelfehler
    und alle Vertauschungsfehler an
    aufeinander-folgenden Stellen erkennt.
  • Beweis. Sei C ein Paritätscode der Länge n zu
    einer geraden Basis m mit den Gewichten w1, w2,
    ...., wn.Wenn C alle Einzelfehler erkennt,
    müssen nach 1.3.2 alle Gewichte ungerade sein, da
    sie sonst nicht teilerfremd zu m wären. Also
    sind die Differenzen wiwi1 alle gerade. Daher
    kann C nach 1.3.3 nicht alle Vertauschungsfehler
    an aufeinanderfolgenden Stellen erkennen. ?
  • Beispiel Dezimale Paritätscodes (m 10)
    erkennen nie alle Einzel-fehler und alle
    Vertauschungsfehler an aufeinanderfolgenden
    Stellen.

29
Der ISBN-Code
Einer der besten Codes ist der ISBN-Code. Jedes
Buch hat eine ISBN (International Standard Book
Number). Diese hat 10 Stellen, in 4 Gruppen
eingeteilt 1. Sprachraum (z.B. 3 deutsch) 2.
Verlag (z.B. 528 Verlag Vieweg) 3. Nummer des
Buches (z.B. 06783) 4. Prüfsymbol
ISBN 3-528-06783-7
30
Berechnung des ISBN-Prüfsymbols
Sei a1a2a3... a9a10 eine ISBN. Das Prüfsymbol
a10 wird so bestimmt, dass die Zahl 10?a1 9?a2
8?a3 7?a4 6?a5 5?a6 4?a7 3?a8 2?a9
1?a10 eine Elferzahl ist. Das Prüfsymbol kann
gleich 0, 1, 2, ..., 9 oder 10 sein. Wenn sich
10 ergibt, so schreibt man X (römische Zehn).
Beispiel Für die ISBN 3-528-06783-? berechnen
wir die Zahl 10?3 9?5 8?2 7?8 6?0
5?6 4?7 3?8 2?3 235. Die nächste
Elferzahl ist 242, also muss das Prüfsymbol 7
sein.Die komplette ISBN lautet also
3-528-06783-7.
31
Wie gut ist der ISBN-Code?
1.3.5 Satz. (a) Der ISBN-Code erkennt alle
Einzelfehler.(b) Der ISBN-Code erkennt alle
Vertauschungsfehler sogar an belie-bigen
Stellen. Beweis. Formal kann der ISBN-Code wie
folgt beschrieben werden (a1, ..., a10) ?
10?a1 9?a2 8?a3 7?a4... 3?a8 2?a9 1?a10
mod 11 0. Der ISBN-Code ist also ein
Paritätscode zur Basis m 11 mit den Gewichten
10, 9, ..., 1 und c 0. Da Z11 1, 2,
..., 10 ist, liegen alle Gewichte und alle
Differenzen von je zwei Gewichten in Z11. Nach
1.3.2 und 1.3.3 werden daher alle Einzelfehler
und beliebige Vertau-schungsfehler erkannt.
?
32
1.4 Fehlerkorrigierende Codes
  • Unser erstes Ziel ist es, die Eigenschaft, Fehler
    korrigieren zu können, zu präzisieren.
  • Im Folgenden sei eine Nachricht stets ein binäres
    n-Tupel, also ein Element der Menge V 0,1n
    bzw. des Vektorraums GF(2)n.
  • Problemstellung Der Kanal addiert zu dem
    gesendeten Vektor c (der Nachricht) einen
    Fehlervektor e. Der Empfänger erhält den Vektor
  • x c e.
  • Die Aufgabe des Empfängers ist es dann, c aus x
    zu bestimmen.

33
Hamming-Abstand
  • Der zentrale Begriff der Codierungstheorie ist
    der des Hamming-Abstandes.
  • Seien v (v1, . . ., vn), w (w1, . . ., wn) Î
    V. Der Abstand d(v, w) von v und w ist die
    Anzahl der Stellen, an denen sich v und w
    unter-scheiden
  • d(v, w) i vi ¹ wi.
  • Oft wird d auch als Hamming-Abstand bezeichnet
    (zu Ehren eines der Gründerväter der
    Codierungstheorie Richard W. Hamming).

34
Der Hamming-Abstand als Metrik
  • Der Hamming-Abstand d trägt den Namen Abstand
    zu Recht
  • 1.4.1 Lemma. Die Funktion d ist eine Metrik auf
    V.
  • Beweis. Nachweis der Eigenschaften einer Metrik
    (1) Da d(v, w) eine Anzahl ist, ist d(v, w)
    ³ 0 ferner gilt d(v, w) 0 genau dann, wenn
    sich v und w an keiner Stelle unterscheiden,
    also wenn sie gleich sind.(2) Symmetrie
    Offenbar gilt d(v, w) d(w, v). (3) (3) Die
    Dreiecksungleichung nachzuweisen, ist etwas
    kniffliger Seien u, v, w Î V es ist zu zeigen
    d(u, w) d(u, v) d(v, w).

35
Nachweis der Dreiecksungleichung
  • Wir können o.B.d.A. annehmen, dass sich u und
    w genau an den ersten a  d(u, w) Stellen
    unterscheiden. Unter diesen a Stellen mögen b
    sein, an denen sich v und w unterscheiden
    (also u und v übereinstimmen) ferner gebe es
    c Stellen außerhalb der ersten a Stellen, an
    denen sich v von w unterscheidet. Natürlich
    ist dann d(v, w) b c.
  • Daraus erkennt man d(u, v) a b c. Es
    ergibt sich d(u, v) d(v, w) a b c b
    c a 2c ³ a d(u, w). ?

36
Hammingkugeln
  • Zur Beschreibung von Codes werden später die
    Kugeln bezüglich der Hamming-Metrik von Nutzen
    sein.
  • Sei v Î V, und sei r eine nichtnegative ganze
    Zahl. Dann heißt
  • Sr(v) x Î V d(x, v) r
  • die Kugel vom Radius r um den Mittelpunkt v.
  • Man spricht dabei auch von Hammingkugeln.

37
t-fehlerkorrigierende Codes
  • Sei t eine natürliche Zahl. Eine Teilmenge C
    von V 0,1n heißt ein t-fehlerkorrigierender
    Code, falls für je zwei verschiedene Elemente
    v, w Î C gilt
  • d(v, w) ³ 2t 1.
  • Mit anderen Worten C Í V ist ein
    t-fehlerkorrigierender Code, wenn der
    Minimalabstand
  • d(C) min d(c, c') c, c' Î C, c ¹ c'
  • von C mindestens 2t 1 ist. Wir nennen die
    Elemente eines Codes auch Codewörter.

38
Lemma über Hammingkugeln
  • 1.4.2 Lemma. Sei C ein t-fehlerkorrigierender
    Code. Dann gilt(a) Zu jedem Vektor v Î V gibt
    es höchstens ein c Î C mit d(v, c) t.(b)
    Die Kugeln St(c) mit c Î C sind paarweise
    disjunkt.
  • Beweis. (a) Angenommen, es gäbe zwei
    verschiedene Elemente c, c' Î C und einen
    Vektor v Î V mit d(v, c) t und d(v, c')
    t. Wegen der Dreiecksungleichung folgte daraus
  • d(c, c') d(c, v) d(v, c') 2t,im
    Widerspruch zu d(C) ³ 2t 1.(b) Angenommen, es
    gibt ein v Î V in St(c) ? St(c') mit c, c' Î
    C, c ¹ c. Dann ist d(v, c) t und d(v, c')
    t Widerspruch zu (a). ?

39
Warum t-fehlerkorrigierend?
  • Als gesendete Nachrichten werden nur Codewörter
    zugelassen. Wenn während der Übertragung eines
    Codewortes c höchstens t Fehler auftreten, so
    hat der empfangene Vektor x höchstens den
    Abstand t zu c. Nach dem Lemma über
    Hammingkugeln gibt es nur ein Code-wort, das
    einen Abstand t zu x hat. Der Empfänger
    decodiert x zu c. Hier ist die Vorstellung der
    Kugeln besonders hilfreich Die Tatsache, dass
    bei der Übertragung von c höchstens t Fehler
    auftreten, bedeutet, dass der empfangene Vektor
    jedenfalls noch in St(c) liegt. Da nach obigem
    Lemma je zwei Kugeln um Codewörter disjunkt sind,
    kann der empfangene Vektor decodiert werden, und
    zwar zu dem Codewort, welches der Mittelpunkt der
    Kugel ist, in der x liegt.

40
Das Ziel der Codierungstheorie
  • Bemerkung. Wenn pro Codewort mehr als t Fehler
    auftreten, so wird der empfangene Vektor im
    allgemeinen nicht korrekt decodiert. In der
    Praxis wird man so vorgehen, dass man zunächst
    abschätzt, wie fehleranfällig der Kanal ist, dann
    die Zahl t entsprechend wählt und schließlich
    einen t-fehlerkorrigierenden Code konstruiert.
  • Das Ziel der Codierungstheorie ist es, Codes zu
    konstruieren, die einen großen Minimalabstand
    (und damit gute Fehlerkorrektureigen-schaften)
    haben und für die es einen effizienten
    Decodieralgorithmus gibt.

41
Beispiel
  • Die folgenden 16 Vektoren aus V 0,17 bilden
    einen 1-fehlerkorri-gierenden Code
  • 0000000 1111111 1110000 0001111
    1001100 01100111000011
    01111000101010 10101010100101
    10110100011001 11001100010110
    1101001

42
Lineare Codes
  • Der bisherige Ansatz ist unpraktikabel, denn -
    Speichern des Codes (man muss jedes Codewort
    abspeichern), - Bestimmung des Minimalabstands
    (man muss je zwei Codewörter vergleichen, hat
    also quadratischen Aufwand in C)-
    Decodieralgorithmen (bei jedem empfangenen Vektor
    muss man alle Codewörter untersuchen).
  • Für praktische Anwendungen besser Lineare
    Codes. Ein Code C Í V heißt linear, falls C
    ein Unterraum des Vektorraums V (und nicht nur
    eine Teilmenge der Menge V) ist. Die Dimension
    von C wird oft mit k bezeichnet und wir
    nennen dann C einen linearen n, k-Code.

43
Generatormatrix
  • Erster Vorteil linearer Codes Man braucht nur
    eine Basis von C zu kennen. Statt alle 2k
    Vektoren von C zu speichern, genügt es, die k
    Basisvektoren zu speichern.
  • Sei c1, . . ., ck eine Basis eines linearen n,
    k-Codes C. Dann heißt die kn-Matrix G, deren
    i-te Zeile der Basisvektor ci ist, eine
    Generatormatrix von C.
  • Beispiel. Eine Generatormatrix des obigen
    Beispielcodes (Folie 41) ist
    G

44
Minimalgewicht
  • Das Gewicht w(x) eines Vektors x Î V ist die
    Anzahl der von 0 verschiedenen Stellen von x
  • w(x) d(x, 0).
  • Das Minimalgewicht w(C) des Codes C ist
    definiert als
  • w(C) min w(c) c Î C, c ¹ 0.
  • 1.4.3 Lemma. Sei C ein linearer Code. Dann gilt
    d(C) w(C).
  • Zweiter Vorteil linearer Codes Um den
    Minimalabstand und damit die Fehlerkorrekturqualit
    ät von C zu bestimmen, muss man also nur das
    Minimalgewicht ausrechnen dazu braucht man
    höchstens C Schritte.

45
Beweis des Lemmas
  • Beweis. Für jeden Code, der den Nullvektor
    enthält, gilt
  • d(C) mind(c, c') c, c' Î C, c ¹ c'
    mind(c, 0) c Î C, c ¹ 0 w(C).
  • Noch z.z. Es gibt ein Codewort c0 vom Gewicht
    d(C). Seien c, c' Î C mit d(c, c') d(C).
    Dann gilt
  • w(cc') d(cc', 0) d(cc' c'c') d(c, c')
    d(C).
  • Da C linear ist, ist c0 cc' Î C. Damit ist
    alles gezeigt. ?

46
Dualer Code
  • Dritter Vorteil linearer Codes Sie erlauben
    effizientes Decodieren. Dazu müssen wir etwas
    ausholen.
  • Sei C Í V ein Code. Der zu C duale Code C
    ist wie folgt definiert
  • C v Î V c?v 0 für alle c Î C
  • dabei ist das innere Produkt c?v der Vektoren
    c (c1, . . ., cn) und v (v1, . . ., vn)
    erklärt durch
  • c?v c1v1 c2v2 . . . cnvn.
  • Wenn c?v 0 ist, so sagt man auch, dass c
    und v orthogonal sind.

47
Dimensionsformel für den dualen Code
  • 1.4.4 Satz. Ist C ein linearer n, k-Code der
    Dimension k, so ist C ein linearer Code der
    Dimension nk.
  • Beweis. Unabhängig davon, ob C linear ist oder
    nicht, ist C ein Unterraum von V. Noch z.z.
    dim C nk. Dazu betrachten wir eine
    Generatormatrix G mit den Zeilen c1, . . , ck
    von C. Dann gilt C v Î V ci?v 0, i
    1, . . ., k, d.h. C besteht aus den Lösungen
    v (v1, . . ., vn) Î V des homogenen
    Gleichungs-systems mit der Koeffizientenmatrix
    G. Die Dimension des Lösungs-raums ist gleich
    nRang(G). Da die Zeilen von G eine Basis von
    C bilden, hat G den Rang k. Also gilt
    dim(C) nk. ?

48
Satz vom Bidualcode
  • 1.4.5 Satz. Sei C ein linearer Code. Dann ist
  • C C.
  • Beweis. Zunächst zeigen wir C Í C Die Menge
    C besteht aus all den Vektoren, die orthogonal
    zu allen Vektoren aus C sind dazu gehören
    aber bestimmt die Vektoren aus C, da C ja die
    Menge derjenigen Vektoren ist, die orthogonal zu
    jedem Vektor aus C sind. Wenn wir die
    Dimensionsformel auf C anwenden, erhalten wir
  • dim(C) n dim(C) n (nk) k dim(C).
  • Zusammen folgt C C. ?

49
Kontrollmatrix und Syndrom
  • Sei C Í V ein linearer Code. Eine Matrix H,
    deren Zeilen eine Basis des dualen Codes C
    bilden, heißt eine Kontrollmatrix von C.
  • Da C die Dimension nk hat, ist H eine
    (nk)?n-Matrix.
  • Für das effiziente Decodieren ist der Begriff des
    Syndroms wichtig. Für jeden Vektor v Î V
    definieren wir sein Syndrom als
  • s(v) v?HT,
  • wobei HT die zur Kontrollmatrix H
    transponierte Matrix ist. Ein Syndrom ist also
    ein binärer Vektor der Länge nk.

50
Satz über die Kontrollmatrix
  • 1.4.6 Satz. Ist C ein linearer Code mit
    Kontrollmatrix H, so gilt
  • C v Î V s(v) 0.
  • Beweis. Sei v Î V beliebig. Dann gilt
  • s(v) 0
  • Û v?HT 0
  • Û v ist orthogonal zu allen Vektoren einer
    Basis von C
  • Û v Î C
  • Û v Î C wegen C C. ?

51
Das Syndrom hängt nur von der Nebenklasse ab
  • 1.4.7 Lemma. Sei H eine Kontrollmatrix eines
    linearen Codes C Í V. Für alle Vektoren v, w Î
    V gilt
  • s(v) s(w) Û v C w C.
  • Beweis. Sei v, w Î V beliebig. Dann gilt
  • s(v) s(w)
  • Û v?HT w?HT
  • Û v?HT w?HT 0
  • Û (v w)?HT 0
  • Û v w Î C (nach 1.4.6)
  • Û v C w C (Kriterium für Gleichheit von
    Nebenklassen). ?

52
Eindeutigkeit der Nebenklassenanführer
  • Sei C Í V ein linearer Code. Ein Vektor heißt
    Anführer einer Neben-klasse von C, wenn er unter
    allen Vektoren dieser Nebenklasse minimales
    Gewicht hat.
  • Im allgemeinen sind Nebenklassenanführer nicht
    eindeutig bestimmt.
  • 1.4.8 Satz. Sei C Í V ein linearer
    t-fehlerkorrigierender Code. Dann (a) Jeder
    Vektor von V vom Gewicht t ist Anführer
    einer Neben-klasse.(b) Die Anführer von
    Nebenklassen, die einen Vektor vom Gewicht  t
    enthalten, sind eindeutig bestimmt.

53
Beweis
  • Wir beweisen (a) und (b) gemeinsam. Sei v ein
    Vektor vom Gewicht t. Betrachte einen
    beliebigen Vektor v' Î v C mit v' ¹ v. Es
    ist zu zeigen, dass v' mindestens das Gewicht
    t  1 hat.Da v und v' in derselben
    Nebenklasse von C sind, ist v v' Î C. Da v
    ¹ v' ist, gilt v  v' ¹ 0, also w(v v')
    d(v v' 0) ³ 2t 1 nach Definition eines
    t-fehlerkorrigierenden Codes. Daraus folgt
  • 2t 1 w(v v') d(v v',0) d(v, v')
  • d(v, 0) d(0, v') w(v) w(v') t
    w(v'),
  • also w(v') ³ t 1. ?

54
Decodieralgorithmus
  • Der Empfänger empfängt einen Vektor x. Wenn ?
    t Fehler aufgetreten sind, ist x c e mit c
    ? C und w(e) ? t. Wegen x e c ? C, liegen
    x und e in der gleichen Nebenklasse.
  • Der Empfänger bestimmt zunächst die Nebenklasse,
    in der x liegt. Dann bestimmt er den Anführer
    dieser Nebenklasse. Da diese Nebenklasse einen
    Vektor mit Gewicht ? t enthält (nämlich e),
    ist ihr Anführer eindeutig bestimmt (nach 1.4.8),
    es ist e. Schließlich berechnet der Empfänger
    das Codewort x e c.
  • Problem Bestimmung der Nebenklasse von x.
  • Verbesserung des Algorithmus Syndrom-Decodierung
    .

55
Syndrom-Decodierung
  • Sei C Í V ein t-fehlerkorrigierender linearer
    Code. Man erstellt eine Liste der
    Nebenklassenanführer und der zugehörigen
    Syndrome. Für einen empfangenen Vektor x
    berechnet man das Syndrom s(x), sucht dies in
    der Liste der Syndrome, stellt den zugehörigen
    Nebenklassenanführer e fest und decodiert x
    zu x e c.
  • Bemerkung. Die Eindeutigkeit der
    Nebenklassenanführer garantiert, dass mit der
    Syndrom-Decodierung richtig decodiert wird, wenn
    höchstens t Fehler auftreten.

56
Beispiel zur Syndrom-Decodierung
  • Wir betrachten den 1-fehlerkorrigierenden
    Beispielcode mit 16 Code-wörtern (Folie 41).Er
    hat die Kontrollmatrix H .Die
    Nebenklassenanführer sind die Vektoren mit
    Gewicht ? 1, also die Vektoren 0000000,
    0000001, 0000010, . . .
  • Zu allen acht Nebenklassenanführern v bestimmen
    wir die Syndrome s(v) v?HT und stellen
    folgende Liste auf.

57
Beispiel (Fortsetzung)
  • Nebenklassenanführer Syndrom
  • 0000000 000 0000001
    111 0000010 011 0000100
    101 0001000 110 0010000
    001 0100000 010 1000000 100
  • Wird z.B. x 0010001 empfangen, so berechnet
    man s(x) 110. Danach bestimmt man aus der
    Liste den Fehlervektor e  0001000 als Codewort
    ergibt sich c x e 0010001 0001000
    0011001.

58
Hamming-Codes
  • Sei r ? N. Sei H eine binäre
    r(2r  1)-Matrix, deren Spalten sämt-liche von
    0 verschiedenen binären r-Tupel sind. Sei n
    2r  1. Der Hamming-Code der Länge n  ist
    definiert als
  • Ham(r) c  (c1, . . ., cn) Î 0, 1n
    c?HT  o, 
  • das heißt, genau diejenigen Vektoren c sind
    Codewörter von Ham(r), für die c?HT der
    Nullvektor der Länge r ist.
  • Beispiel Der Code von Folie 41 ist der
    Hamming-Code Ham(3).
  • Da H den Rang r hat, hat Ham(r) die
    Dimension 2r  1  r. Ham(r) ist also ein
    linearer 2r  1, 2r  1  r-Code.

59
Hamming-Codes sind 1-fehlerkorrigierend
  • 1.4.9 Satz. Die Hamming-Codes sind
    1-fehlerkorrigierende Codes.
  • Beweis. Z.z d(Ham(r)) ? 3. Angenommen, Ham(r)
    enthielte einen Vektor c vom Gewicht 1 c
    möge an der i-ten Stelle eine 1 haben. Nach
    Definition von Ham(r) ist dann c?HT  o. Dann
    muss die i-te Spalte von H gleich Null sein
    Widerspruch. Also ist d(Ham(r)) ? 1.Angenommen,
    Ham(r) enthielte einen Vektor, der nur an der
    i-ten und an der j-ten Stelle eine 1 hat. Dann
    müsste die Summe der i-ten und der j-ten Spalte
    von H gleich Null sein also wäre die i-te
    Spalte gleich der j-ten Spalte Widerspruch.
    Also ist d(Ham(r)) ? 2. ?

60
Perfekte Codes
  • Hamming-Codes sind in gewissen Sinne die besten
    Codes, die es gibt, nämlich die, die am
    dichtesten gepackt sind.
  • Ein t-fehlerkorrigierender Code C Í V heißt
    perfekt, falls jeder Vektor aus V einen Abstand
      t zu (genau) einem Codewort hat.
  • Anders ausgedrückt C ist perfekt, falls
  • St(c)  V
  • ist wenn also die Kugeln mit Radius t um die
    Codewörter den Vektorraum V lückenlos
    auffüllen.
  • Wir werden zeigen, dass die Hamming-Codes perfekt
    sind.

61
Kugelpackungsgrenze
  • 1.4.10 Lemma. Sei C Í V  0, 1n ein
    1-fehlerkorrigierender Code. Dann gilt
  • C
  • mit Gleichheit genau dann, wenn C perfekt ist.
  • 1.4.11 Korollar. Jeder perfekte
    1-fehlerkorrigierende Code C Í 0, 1n hat eine
    Länge n der Form n  2r  1.
  • Beweis des Korollars. Aus C?(n  1)  2n
    folgt, dass n  1 ein Teiler von 2n sein
    muss. ?

62
Beweis des Lemmas
  • In einer Kugel S1(c) um ein Codewort c liegen
    c selbst und alle Vek-toren, die Abstand 1
    von c haben. Da c genau n Stellen hat, gibt
    es genau n Vektoren vom Abstand 1 von c.
    Also ist S1(c)  1  n.
  • Da C ein 1-fehlerkorrigierender Code ist, sind
    die Kugeln S1(c) um die Codewörter c
    paarweise disjunkt. Daher überdecken die Kugeln
    vom Radius 1 um die Codewörter genau
    C?(n  1) Vektoren von V.
  • Da V genau 2n Vektoren hat, gilt offenbar
    C?(n  1)  2n.
  • Gleichheit gilt genau dann, wenn jeder Vektor aus
    V in einer Kugel vom Radius 1 um ein Codewort
    liegt, also wenn C perfekt ist. ?

63
Hamming-Codes sind perfekt
  • 1.4.12 Satz. Die Hamming-Codes sind perfekte
    1-fehlerkorrigierende Codes.
  • Beweis. Da dim(Ham(r))  2r  1  r ist, gilt
  • Ham(r)   .
  • Daraus ergibt sich mit n  2r  1
  • Ham(r)?(n  1)   ? 2r  
      2n.
  • Nach 1.4.10 ist Ham(r) also perfekt. ?

64
Syndrom-Decodierung mit Hamming-Codes
  • Nun ordnen wir die Spalten der Matrix H Wir
    interpretieren die Spalten von H als binäre
    Darstellung der Zahlen 1, . . ., 2r  1 und
    ordnen die Spalten so an, dass die i-te Spalte
    si die Zahl i darstellt.
  • 1.4.13 Satz. Sei der Code Ham(r) mit der nach
    obiger Vorschrift geordneten Matrix H
    konstruiert. Dann gilt Für jeden Vektor
    v Î V\C ist s(v) die binäre Darstellung der
    Zahl i, so dass v  ei Î C ist. (Dabei ist ei
    der Vektor, der nur an der i-ten Stelle eine
    Eins hat.) M.a.W. Das Syndrom eines mit Fehler
    behafteten Vektors gibt die Stelle an, an welcher
    der Fehler auftrat.

65
Decodieralgorithmus
  • Beweis. Da Ham(r) perfekt ist, hat jeder Vektor
    v Î V\C die Form v  c  ei für ein
    geeignetes Codewort c. Damit ergibt sich
  • s(v)  v?HT  (c  ei)?HT  c?HT  ei?HT  ei?HT 
    i-te Spalte von H.
  • Da die i-te Spalte von H der Zahl i
    entspricht, kann damit der Fehler lokalisiert
    werden. ?
  • Der Decodieralgorithmus ist damit äußerst
    einfach Für einen empfangenen Vektor x muss
    man nur s(x) berechnen, dieses r-Tupel als
    Zahl i interpretieren und erhält das zugehörige
    Codewort als ei x c.

66
Erweiterter Hamming-Code
  • Aus einem Hamming-Code Ham(r) erhalten wir den
    erweiterten Hamming-Code Ham(r), indem wir
    jedes Codewort aus Ham(r) um eine Stelle so
    verlängern, dass die Gesamtzahl der Einsen in
    jedem Codewort gerade ist. 00000000 11111111
    Beispiel Ham(3) besteht 11100001 00011110au
    s nebenstehenden 16 10011001 01100110Codewörter
    n der Länge 8 10000111 01111000 01010101
    10101010 01001011 10110100 00110011 11
    001100 00101101 11010010

67
Eigenschaften des erweiterten Hamming-Codes
  • 1.4.14 Satz. Ham(r) ist ein linearer
    2r, 2r  1  r-Code mit Minimal-abstand 4.
  • Beweis. 1.) Ham(r) ist ein Unterraum von
    V  GF Seien c1, c2 ? Ham(r), und
    seien c1 und c2 die entsprechenden Codewörter
    aus Ham(r). Da c1  c2 in den ersten 2r  1
    Stellen mit c1  c2 übereinstimmt, müssen wir
    nur folgendes zeigen die letzte Stelle von
    c1  c2 ist 1 wenn w(c1  c2) ungerade ist
    und 0 sonst.Wenn c1  c2 ungerades Gewicht
    hat, dann können wir o.B.d.A. annehmen, dass c1
    ungerades Gewicht hat und c2 gerades Gewicht.
    Daher ist die letzte Stelle von c1 gleich 1
    und die letzte Stelle von c2 gleich 0. Also
    ist die letzte Stelle von c1  c2 gleich 1.

68
Beweis (Fortsetzung)
  • Wenn c1  c2 gerades Gewicht hat, dann haben
    entweder c1 und c2 beide gerades oder beide
    ungerades Gewicht. In jedem Fall haben c1 und
    c2 den gleichen letzten Eintrag und daher ist
    die letzte Stelle von c1  c2 gleich 0. Also
    ist in beiden Fällen c1  c2 ein Codewort und
    damit ist Ham(r) ein Vektorraum.2.) Ham(r)
    hat die gleiche Dimension wie Ham(r) Klar, denn
    beide Vektorräume haben dieselbe Anzahl von
    Elementen. 3.) Ham(r) hat das Minimalgewicht
    4 Da w(Ham(r))  3 ist, muss w(Ham(r)) ³ 3
    sein. Wäre w(Ham(r))  3, so gäbe es einen
    Vektor c aus Ham(r) vom Gewicht 3 dies
    ist jedoch nicht möglich, da jeder Vektor aus
    Ham(r) gerades Gewicht hat. ?

69
Kontrollmatrix des erweiterten Hamming-Codes
  • 1.4.15 Satz. Man erhält aus einer Kontrollmatrix
    H von Ham(r) eine Kontrollmatrix H von
    Ham(r), indem man jede Zeile von H durch
    eine Stelle ergänzt in der Null steht,  eine
    zusätzliche Zeile aus lauter Einsen hinzufügt.
  • Beispiel Ham(3) hat die Kontrollmatrix
  • H  

70
Beweis
  • Der zu Ham(r) duale Code ist nach 1.4.4 ein
    2r, r  1-Code seine Kontrollmatrix ist also
    eine (r  1)2r-Matrix. Z.z. Die Zeilen von H
    sind linear unabhängig und Codewörter des zu
    Ham(r) dualen Codes.Da H eine Kontrollmatrix
    ist, sind ihre Zeilen linear unabhängig. Also
    sind auch die ersten r Zeilen von H linear
    unabhängig. Da in der letzten Spalte von H in
    den ersten r Zeilen 0 steht und in der letzten
    Zeile 1, sind alle Zeilen von H linear
    unabhängig. Die Zeilen von H sind Codewörter
    des zu Ham(r) dualen Codes, also sind nach
    Konstruktion auch die ersten r Zeilen von H
    orthogonal zu allen Codewörtern von Ham(r).
    Nach Definition hat jedes Codewort von Ham(r)
    gerades Gewicht daher ist das Produkt eines
    Codeworts mit der letzten Zeile von H
    ebenfalls gleich Null. ?
Write a Comment
User Comments (0)
About PowerShow.com