Tutorial 1

Werbung
Prof. Dr. Gerhard Berendt
Mathematische Grundlagen der Codierung / Endliche Strukturen
SS 2005
Tutorial 1: Erste Überlegungen zu Fehler-erkennenden Codierungen / S. 1 von 4
Fehlertypen bei Nachrichtenübertragungen.
Codierungen können zur Erkennung und ggf. Korrektur von Fehlern bei der
Übertragung von Nachrichten benutzt werden. Als Fehlertypen können z.B. auftreten
(die angegebenen relativen Häufigkeiten wurden empirisch ermittelt):
Fehlertyp
relative Häufigkeit in %
Verwechslung einer Ziffer (Einzelfehler)
79
Transpositionen (Vertauschung benachbarter Ziffern)
10,2
Sprungtranspositionen (Vertauschung über eine Ziffer
hinweg)
0,8
Zwillingsfehler (aa → bb)
0,6
phonetische Fehler (abhängig von der verwendeten
Sprache)
0,5
Sprung-Zwillingsfehler (aca → bcb)
0,3
übrige Fehler (zufällige Fehler, Fehlerbüschel)
8,6
Bei jeder Fehlererkennung (und erst recht Fehlerkorrektur) muß die Nachricht durch
Erhöhung der Redundanz erweitert werden. Dabei muß der Grad an gewonnener
Sicherheit gegenüber dem erhöhten Aufwand abgewogen werden. Je nach dem
vermuteten Fehlertyp bieten sich mehr oder weniger komplexe Verfahren zur
Fehlerkontrolle an. In diesem Tutorial werden nur Verfahren diskutiert, die einfache
Eigenschaften von Restklassen der ganzen Zahlen verwenden.
Fehlererkennung durch Prüfziffer.
Ein einfaches Verfahren zur Erkennung von Fehlern in einem Ziffernblock a1 ... an
besteht darin, dem Block eine Prüfziffer an+1 derart hinzuzufügen, dass für den
verlängerten Block eine Relation des Typs
n 1
 wi ai  0 mod m
i 1
für einen geeigneten Modul m und vorgegebene Gewichte wi gilt. Damit das
Auftreten eines Fehlers in den ai erkannt werden kann, dürfen die wi keine Nullteiler
Prof. Dr. Gerhard Berendt
Mathematische Grundlagen der Codierung / Endliche Strukturen
SS 2005
Tutorial 1: Erste Überlegungen zu Fehler-erkennenden Codierungen / S. 2 von 4
in der Restklasse Z / mZ und die ai und wi müssen sämtlich kleiner als m sein.
Verwendet man einen Primzahlmodul (wie z.B. beim ISBN-Code), dann ist die
Bedingung fehlender Nullteiler automatisch erfüllt.
Drei Beispiele:
ISBN, EAN und der geometrische Modulo 11 - Code.
Die zu besprechenden Beispiele sind Prüfziffer-basiert: Der Nachricht (einer Folge
von Ziffern) wird eine Prüfziffer hinzugefügt, die sich eindeutig aus den eigentlichen
Ziffern der Nachricht ergibt. Weicht diese Prüfziffer beim Empfänger von der
ursprünglichen Prüfziffer ab, dann ist bei der Übertragung ein Fehler aufgetreten. Je
nach Konstruktion der Prüfziffer und verwendetem Zahlenbereich kann ggf. noch
festgestellt werden, wo der (und ggf. welcher) Fehler entstanden ist.
1. Der ISBN-Code (International Standard Book Number).
Aus dem ISBN-Code eines Buches lassen sich Land, Verlag und Buch identifizieren.
Er hat die Form ISBN a1 – a2 a3 a4 – a5 a6 a7 a8 a9 – a10 . Die Ziffern a1 bis a9 können
die Werte 0 bis 9 annehmen; sie haben die folgende Bedeutung:
a1 : Land ,
a2 a3 a4 : Verlag,
a5 a6 a7 a8 a9 : Buchnummer;
a10 kann als Prüfziffer ebenfalls diese Werte besitzen, kann jedoch (s.u.) auch den
Wert 10 annehmen und wird dann als 'X ' geschrieben.
a10 wird wie folgt bestimmt:
9
a10   k  ak mod 11.
k 1
Das ist gleichbedeutend damit, dass
10
 k  ak  0 mod 11
k 1
für den vollständigen Code gelten muß.
Beispiel:
Der Code "3 – 540 – 05303" wird ergänzt durch die Ziffer
Prof. Dr. Gerhard Berendt
Mathematische Grundlagen der Codierung / Endliche Strukturen
SS 2005
Tutorial 1: Erste Überlegungen zu Fehler-erkennenden Codierungen / S. 3 von 4
a10 = 3 + 25 + 34 + 40 +50 + 65 +73 + 80 + 93 = 103 mod 11  4 mod 11 .
(Läge etwa der Code "3 – 540 – 06303" vor, dann wäre die Prüfziffer
a10 = 109 mod 11  10 mod 11,
und würde als X geschrieben.)
Würde der ISBN-Code "3 – 540 – 05303 – 4" also z.B. als "3 – 540 – 06303 – 4"
übermittelt, dann weist dies auf einen Fehler in der Nummer hin.
Satz:
Der ISBN-Code entdeckt a) einen Einzelfehler und b) einen Doppelfehler, der durch
die Vertauschung zweier Ziffern entsteht. (Der Code entdeckt mithin nach der
empirischen Tabelle 90% aller auftretenden Fehler.)
Beweis:
a)
Sei x = x1 ...x10 das gesendete Codewort, und sei y = y1 ...y10 das gleiche Wort
wie x , mit Ausnahme dessen, dass die Ziffer xj als xj + a mit a  0 empfangen
wurde. Dann ist
10
10
k 1
k 1
 k  yk   k  xk  j  a  0 mod 11  j  a mod 11  j  a mod 11  0 mod11 ,
da j und a nicht gleich Null sind.
b)
Sei nun y das gleiche Wort wie x , mit Ausnahme dessen, dass xj und xi
vertauscht sind. Dann ist
10
10
k 1
k 1
 k  yk   k  xk  ( j  i)  xi  (i  j )  x j  ( j  i)( xi  x j )  0 mod 11,
falls i j und xi  xj .
Bemerkung:
Zu beachten ist, dass hier beim Beweis wesentlich verwendet wurde, dass der
Restklassenring modulo 11 ein Körper ist (11 ist Primzahl!), und daher in diesem
Körper keine Nullteiler existieren.
2. Der EAN-Code (Europäische Artikel Nummer).
Hier besteht jeder Code aus 13 Ziffern, von denen die letzte eine Prüfziffer ist:
6
a13  ( (3  a2 k  a2 k 1 ) mod 10 .
k 1
Prof. Dr. Gerhard Berendt
Mathematische Grundlagen der Codierung / Endliche Strukturen
SS 2005
Tutorial 1: Erste Überlegungen zu Fehler-erkennenden Codierungen / S. 4 von 4
Beispiel:
Ein Artikel hat die EAN "4 – 008400 – 141527" . Die Prüfziffer ergibt sich zu
- (1 4 + 30 + 10 + 38 + 14 + 30 + 10 + 31+ 14 + 31 + 15 + 32)  7 mod 10 .
Satz:
Der EAN-Code erkennt einen Einfach-Fehler.
Beweis:
als Übung.
Angenommen, der Scanner liefert die EAN "4 – 08400 – 142527". Die daraus
berechnete Prüfziffer wäre
- (1 4 + 30 + 10 + 38 + 14 + 30 + 10 + 31+ 14 + 32 + 15 + 32)  0 mod 10 im
Gegensatz zur gemessenen Ziffer 7. Also liegt ein Einfach-Fehler vor.
Bemerkung:
Damit der Fehler bemerkt wird (s.o), ist es erforderlich, dass die auftretenden, von 1
verschiedenen Gewichte, mit denen die einzelnen Ziffern versehen werden (hier also
die 3), teilerfremd zum Modul 10 sind (die Restklasse modulo 10 ist kein Körper,
enthält also Nullteiler!).
3. Der geometrische Modulo 11- Code.
Dieser Code benutzt als Gewichte für die Nachrichtenziffern a1 bis an die Potenzen
modulo 11 eines Elements aus der Restklasse Z / 11 Z, z.B. die Potenzen von 2:
n 1
 2n 1 k ak  0 mod 11 .
k 1
Da die Potenzen von 2 modulo 11 alle Elemente der Restklasse durchlaufen, lassen
sich damit (Beweis!) alle in der eingangs angeführten Tabelle angegebenen Fehler
außer den zufälligen Fehlern erkennen.
Herunterladen