Vortrag: Prüfzeichencodierung Michael Gläser
Prüfzeichencodierung (Inhalt): 1. Definition und allgemeine Eigenschaften 2. Prüfziffercodierung 3. ISBN-Codierung 4. EAN-Codierung
1. Definition und allgemeine Eigenschaften - Erkennung von Fehlern bei der Eingabe - keine automatische Korrektur, sondern erneute Eingabe - Beispiele solcher Codierungen: ISBN-Nr., EAN-Nr., Banknotenkennzeichnung, Kartennr. - Spezialfall der Prüfzeichencodierung: Prüfzifferncodierung Warum Prüfzeichencodierung? Dies hängt mit der Art und Häufigkeit der Eingabefehler zusammen. Fehlerklassifikation nach Verhoeff: Fehlertyp Typ Häufigkeit Einzelfehler a b 79 % Nachbartransposition (Zahlendreher) ab ba 10,2 % Sprungtransposition abc cba 0,8 % Zwillingsfehler aa bb 0,6 % phonetische Fehler (dreißig statt dreizehn) a0 1a 0,5 % Sprung-Zwillingsfehler aca bcb 0,3 % Rest 8,6 % Definition: Sei A ein Alphabet und G = (A, *) eine Gruppe über A. Eine Prüfzeichencodierung P G = (π 1,..., π n ; c) über G ist gegeben durch n Permutationen π 1,..., π n von A sowie der Kontrollgleichung n π 1 (x 1 ) *... * π n (x n ) = π i (x i ) = c i = 1 die für alle x 1,..., x n G erfüllt ist. Aus der Kontrollgleichung sind verschiedene Folgerungen erkennbar. Sei eine Prüfzeichencodierung P G = (π 1,..., π n ; c) über der Gruppe G = (A, *) gegeben. Dann gilt: a) jede Menge {x 1,..., x n } {x i } A bestimmt eindeutig x i, 1 i n b) P G erkennt alle Einzelfehler c) P G erkennt eine Nachbartransposition, falls x * π i+1 (π i -1 (y)) y * π i+1 (π i -1 (x)) für alle x, y G, x y, und für alle i gilt d) P G erkennt eine Sprungtransposition, falls x * y * π i+2 (π i -1 (z)) z * y * π i+2 (π i -1 (x)) für alle x, y, z G, x z, und für alle i gilt e) P G erkennt einen Zwillingsfehler, falls x * π i+1 (π i -1 (x)) y * π i+1 (π i -1 (y)) für alle x, y G, x y, und für alle i gilt
2. Prüfziffercodierung in additiven Restklassen - Spezialfall der Prüfzeichencodierung Festlegung: 1. Gruppe G = Z m, d. h. die additive Restklassengruppe modulo m mit den Elementen A = {0, 1, 2,..., m-1} 2. n Zahlen (Gewichte) w 1,..., w n mit ggt(w i, m) = 1 Dann ist jede Abbildung π i : A A, 1 i n definiert durch π i (x) = w i x eine Permutation von A 3. c = 0 als Prüfziffer und w n = 1 oder w n = -1 daraus und aus der Kontrollgleichung aus der Definition folgt w 1 x 1 +... + w n-1 x n-1 ± x n = 0 oder x n = ± w i x i modulo m, da Z m i=1 n-1 Beispiele für Prüfziffercodierungen sind die ISBN-Nr. und die EAN-Nr.
3. ISBN-Codierung ISBN-Nr. 3 528 03147 6 Land Verlag Buchnr. Prüfziffer modulo 11 in diesem Beispiel: c = 1*3 + 2*5 + 3*2 + 4*8 + 5*0 + 6*3 + 7*1 + 8*4 + 9*7 c = 171 modulo 11 c = 6 korrekt! 2. Beispiel: 0 7167 1079 X c = 219 modulo 11 c = 10 zweistellige Zahlen sind nicht vorgesehen, man schreibt dafür ein X ISBN ist demzufolge eine Prüfzifferncodierung über Z 11 mit n = 10 w i = i, 1 i 9, w 10 = 1 Die ISBN-Nr. x = x 1,..., x 10 ist genau dann korrekt, wenn xh T = 0 gilt H T = Kontrollmatrix, dazu muss ISBN-Nr. als Linearcode über Z 11 betrachtet werden: H = (1 2 3 4 5 6 7 8 9) Um Einzelfehler entdecken zu können erweitern wir die Kontrollmatrix zu H = (1 2 3 4 5 6 7 8 9) (1 1 1 1 1 1 1 1 1) Dazu sei x = x 1,..., x 10 und xh T = S 1 S 2 S 1 = ix i 10 10 S 2 = x i i=1 i=1 x ist eine korrekte ISBN-Nr., wenn S 1 = 0 und S 2 = 0 Beispiel: 0206241909 S 1 = 231 modulo 11 S 2 = 33 modulo 11 S 1 = 0 S 2 = 0 Fehlererkennung: Annahme: Fehler bei Ziffer i y i = x i + e, e 0 für ein i 1 i 10 S 1 = x 1 + 2x 2 +... + iy i + + 10x 10 S 1 = x 1 + 2x 2 +... + i(x i + e) + + 10x 10 S 1 = x 1 + 2x 2 +... + ix i + ie + + 10x 10 S 1 = x 1 + 2x 2 +... + 10x 10 + ie S 1 = 0 + ie S 1 = ie = 0 S 2 = x 1 + x 2 +... + y i + + x 10 S 2 = x 1 + x 2 +... + (x i + e) + + x 10 S 2 = x 1 + x 2 +... + x i + + x 10 + e = 0 S 2 = 0 + e S 2 = e
S 1 = ie S 2 = e S 1 = i S 2 i = S 1 S 2-1 falls S 1 0 und S 2 0 ist, kann i eindeutig bestimmt werden (da wir uns in Z 11 in einem Primkörper befinden); daraus folgt: y i = x i + e = x i + S 2 x i = y i S 2 Berechnung eines Fehlers in einem ISBN-Code: x = x 1,..., x 10 eingegeben y = y 1,..., y 10 gelesen 1. Berechne yh T = S 1 S 2 2. Ist S 1 = 0 und S 2 = 0, dann kann man die Korrektheit des ISBN-Codes annehmen 3. Ist S 1 0 und S 2 0, dann berechne i = S 1 S 2-1 und decodiere x = y 1... y i -S 2... y 10 4. Ist entweder S 1 = 0 oder S 2 = 0, dann liegen mindestens zwei Fehler vor, eine Decodierung ist dann nicht mehr möglich Beispiel: 0206211909 S 1 = 213 modulo 11 S 1 = 4 S 2-1 = 8-1 = 7 -S 2 = -8 = 3 S 2 = 30 modulo 11 S 2 = 8 i = S 1 S 2-1 = 4*7 = 6 x 6 = y 6 -S 2 = 1+3 = 4 0206211909 0206241909
4. EAN-Codierung Europäische Artikel-Nummer (Strichcode) - besteht aus 13 Ziffern - erste Ziffer steht für das Ursprungsland - letzte Ziffer ist die Prüfziffer Berechnung der Prüfziffer: x 13 = -(1x 1 + 3x 2 + 1x 3 + 3x 4 + + 1x 11 + 3x 12 ) modulo 10 m = 10, n = 13 w i = { 1 i ungerade 1 i n { 3 i gerade Eine Ziffernfolge x = x 1,..., x 13 ist eine korrekte EAN-Nummer, wenn die Gleichung 10 S(x) = w i x i = 0 i=1 Beispiel: 7610103173872 erfüllt ist. S = 7*1 + 6*3 + 1*1 + 0*3 + 1*1 + 0*3 + 3*1 + 1*3 + 7*1 + 3*3 + 8*1 + 7*3 + 2*1 S = 80 modulo 10 S = 0 Nummer ist korrekt! Für den EAN-Code gilt: 1.) Jeder Einzelfehler wird erkannt: sei x = x 1,..., x 13 korrekt und y = x 1,... x j + e... x 13 0 < e 9 für ein j 1 j 13 für ein ungerades j gilt: S(y) = S(x) + e S(x) da e > 0 Fehler erkannt Für ein ungerades j gilt: S(y) = S(x) + 3e GgT(3, 10) = 1 daraus folgt eine Permutation 3e für die Folge <0 9> <0, 3, 6, 9, 2, 5, 8, 1, 4, 7> Da in der Permutation alle Elemente verschieden sind, werden auch hier alle Einzelfehler erkannt. 2.) Nicht alle Nachbartranspositionen werden erkannt z. B. sind 0 und 5 benachbart, gilt nach Berechnungsvorschrift: 1*0 + 3*5 = 5 1*5 + 3*0 = 5 Ihre Vertauschung bleibt in der Kontrollsumme S unbemerkt, da sie in jeder Reihenfolge denselben Beitrag zur Summe liefern.
Bestimmung weiterer Ziffernpaare deren Transposition nicht erkannt wird: setzen a = x i und b = x i + 1 suchen a und b, so dass 1a + 3b = 3a + 1b 2a = 2b 2 ist in Z 10 allerdings nicht invertierbar. Wir suchen nun ein c mit a = b + c, so dass 2a = 2b ist: 2(b + c) = 2b 2b + 2c = 2b 2c muss 0 sein, um die Gleichung zu erfüllen c = 5 Die gesuchten Paare sind die, für die a = b + 5 gilt: (0, 5), (1, 6), (2, 7), (3, 8), (4, 9), sowie deren Umkehrungen Das sind etwa 11% von allen verschiedenen Paaren
Literaturverzeichnis: K.-U. Witt: Grundlagen der Informatik. Zahlen, Strukturen, Codierung, Verschlüsselung.