Kapitel 5 Fehlererkennende Codes

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Christian Scheideler SS 2009
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Motivation Bisher: Codes mit möglichst kurzer Codelänge.
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
II. Arithmetik. II. Arithmetik 4. Die natürlichen Zahlen.
Codierung Haydn: Streichquartett op 54.3 aus Largo, Violine I
Funktionen.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. W. Conen 15. November 2004
Information - syntaktisch
Verifizieren versus Berechnen
Christian Schindelhauer
Algorithmentheorie 04 –Hashing
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Kapitel 5 Stetigkeit.
Kapitel 1 Das Schubfachprinzip
Kapitel 1 Die natürlichen und die ganze Zahlen. Kapitel 1: Die natürlichen und die ganzen Zahlen © Beutelspacher/Zschiegner April 2005 Seite 2 Inhalt.
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Kapitel 2 Die rationalen und die irrationalen Zahlen.
Kapitel 1 Vollständige Induktion
Kapitel 4 Geometrische Abbildungen
Tricks mit Zahlen. Kapitel 2 © Beutelspacher Mai 2004 Seite 2 Idee / Aufgaben In jeder Woche stelle ich Ihnen einen Zaubertrick mit Zahlen vor. Ihre Aufgaben:
Kapitel 1: Codierungstheorie Inhalt: Einführung. 1
Zusammenfassung Vorwoche
Christian Schindelhauer
Christian Schindelhauer
Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/ Vorlesung Dominic Dumrauf.
Christian Schindelhauer
(Ron Rivest, Adi Shamit, Leonard Adleman , 1977)
Zahlen mit Zahlen ausmessen
Univariate Statistik M. Kresken.
Folie 1 Kapitel II. Vom Raumbegriff zu algebraischen Strukturen Neubeginn: Herleitung des Begriffs Vektorraum aus intuitiven Vorstellungen über den Raumbegriff.
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
STRICHCODES. Strichcodefälschung Polizei ermittelt gegen eine internationale Strichcodefälscherbande 4 Produkte wurden sichergestellt 3 davon gefälscht.
§10 Vektorraum. Definition und Beispiele
1. Mengenlehre Grundbegriffe.
§24 Affine Koordinatensysteme
Sie haben kennen gelernt . . .
Grenzen der Regularität
Repetition „Variable & Term“
Wir üben die Malsätzchen
1. Mengenlehre Grundbegriffe.
Strichcode.
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
§23 Basiswechsel und allgemeine lineare Gruppe
Institut für Theoretische Informatik
Symmetrische Blockchiffren DES – der Data Encryption Standard
Spielereien mit Mathe von Prof. Dr. Rießinger.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
ENDLICHE KÖRPER RSA – VERFAHREN.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Arne Vater Wintersemester 2006/ Vorlesung
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Reelle Zahlen Grundrechenarten √2, √3, √5, … V 0.1.
§ 27 Permutationen Zur Beschreibung von alternierenden multilinearen Abbildungen und insbesondere für den begriff der Determinante benötigen wir die Permutationen.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Kapitel 4 Restklassen (die modulo-Rechnung)
Folie 1 §8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein.
Vertiefungsstoff zum Thema „Darstellung von Zahlen“
X. Übungsblatt – Aufgabe X Das Bild zeigt ein Diagramm, dass die Nachbarschafsbeziehungen für einen Code mit 3 Binärstellen darstellt. a)Welche Hamming-Distanz.
1 Codierung Prof. Dr. Dörte Haftendorn, Leuphana Universität Lüneburg, Haydn: Streichquartett op 54.3 aus Largo,
Das Geheimnis der Streifenmuster
 Präsentation transkript:

Kapitel 5 Fehlererkennende Codes

Inhalt 5.1 Grundlagen: Was sind Vehler? 5.2 Vertuaschungsfehler 5.3 Der ISBN-Code 3-406-45404-6 5.4 Der EAN-Code („Strichcode“)

5.1 Grundlagen: Was sind Vehler? Bei der Speicherung und Übertragung von Daten (Texten, Zahlen) entstehen Fehler: Zeichen können verändert werden, vertauscht werden, wegfallen usw.: Vehler, Feler, Fehlerrr, ... Definition: Ein Fehler eines Textes (d.h. Buchstaben oder Zahlenfolge) besteht (für uns) darin, dass ein oder mehrerer Zeichen verändert werden (d.h. zu anderen Zeichen werden). Ziel: Der Empfänger soll erkennen können: ob ein (oder mehrere) Fehler passiert sind (Fehlererkennung) wie die Originalzeichen aussehen (Fehlerkorrektur).

Die Methode Grundidee: Man fügt der Nachricht etwas hinzu, eine „Kontrollinformation“, die dazu dient, eventuelle Übertragungsfehler zu erkennen. Beispiele: Namen buchstabieren („Emm o enn enn te a ge“) Buchstabieralphabete („A wie Anton, B wie Berta, ...“) Natürliche Sprachen sind redundant (haben überflüssige Information): man vrsteht alls, auc wnn einge Bchstbn fhln. Selpst wen groppe recktscreib Felr auftren, ged dr ßinn nich färlohn.

Die Prüfziffer Beispiel: Wir wollen 4-stellige Zahlen übermitteln. Der Empfänger soll merken, ob die Daten korrekt sind. Da man dies an den Daten selbst nicht erkennen kann, fügt man eine Ziffer hinzu (man erhält also eine 5-stellige Zahl), und zwar so, dass die Quersumme dieser Zahl eine Zehnerzahl ist. Die Ziffer an der hinzugefügten Stelle heißt Prüfziffer. Konkret: man bestimmt die Summe der ersten vier Ziffern und ergänzt diese Summe durch die Prüfziffer zur nächsten Zehnerzahl. Beispiel: Wenn die Daten die Zahl 1234 sind, so ist die Prüfziffer 0; der Datensatz 4813 hat die Prüfziffer 4. Übermittelt wird dann die Folge 12340 bzw. 48134

Code Man spricht von einem Code. Im Beispiel ist der Code die Menge aller 5-stelligen Zahlen, deren Quersumme durch 10 teilbar ist: C = {a1a2a3a4a5  ai Î {0, 1, ..., 9}, a1+a2+a3+a4+a5 ist durch 10 teilb.}. Die Elemente eines Codes nennt man Codewörter. Der Empfänger akzeptiert eine Nachricht nur, wenn sie ein Codewort ist. Konkret: Der Empfänger summiert die Ziffern (inklusive der Prüfziffer). Er akzeptiert die Nachricht nur, wenn dies eine Zehnerzahl ist. Beispiel: 12340 wird akzeptiert 12840 nicht.

Definition eines Paritätscodes Definition. Man bezeichnet die Menge C = {a1a2... an  aiÎ {0, 1, ..., 9}, a1+ a2+ ... + an ist durch 10 teilbar} als Paritätscode der Länge n zur Basis 10. 5.1.1 Satz: Jeder Paritätscode erkennt Einzelfehler. Beweis. Sei a1a2...an ein Codewort. Dann ist a1+a2+...+ an durch 10 teilbar. Es sei ein Fehler der ersten Stelle aufgetreten. D.h. a1 wurde in eine andere Ziffer a1'  a1 verwandelt. Angenommen, auch a1’a2...an wäre ein Codewort. Dann wäre auch a1’+a2+ ...+an durch 10 teilbar.

Beweis (Fortsetzung) Dann ist (2.1.1) auch die Differenz (a1 + a2 + ... + an) – (a1' + a2 + ... + an) = a1 – a1‘ durch 10 teilbar. Da a1 und a1‘ Ziffern aus {0, 1, ..., 9} sind, muss gelten: –9  a1 – a1‘  9. Die einzige Zahl in diesem Bereich, die durch 10 teilbar ist, ist 0. Also folgt: a1 – a1‘ = 0, d.h. a1 = a1‘. Das ist ein Widerspruch, also ist a1’a2...an kein Codewort. 

5.2 Vertuaschungsfehler Definition. Wir sagen: Ein Code C erkennt Vertauschungsfehler, falls für jedes Codewort a1a2... aiai+1...an gilt: Die durch Vertau- schung der Elemente ai und ai+1 (mit ai  ai+1) erzeugte Folge a1a2... ai+1ai...an ist kein Codewort. Die bisherigen Paritätscodes erkennen keine Vertauschungsfehler. Da 3 + 5 = 5 + 3 ist, kann man 35  53 nicht erkennen. Wunsch: Die einzelnen Stellen sollen unterschiedlich „stark“ in die Quersumme eingehen. Idee: Jede Stelle wird mit einem „Gewicht” versehen. Die entsprechende Ziffer wird mit diesem Gewicht multipliziert, bevor sie in die Quersumme eingeht.

Beispiel (Kontonummern, Loknummern ...) (Konto)nummer ohne Prüfziffer: 1 8 9 8 2 8 0 1 Gewichtung 1 2 1 2 1 2 1 2 Produkte (Ziffer  Gewicht) 1 16 9 16 2 16 0 2 Dann wird die Summe S dieser Produkte bestimmt; es ergibt sich S = 1 + 16 + 9 + 16 + 2 + 16 + 0 + 2 = 62. Diese Zahl wird durch die Prüfziffer zur nächsten Zehnerzahl ergänzt. Die Prüfziffer ist also gleich 8, und die vollständige Kontonummer lautet 189 828 018.

Code 1 Wir beschreiben diesen Code („Code 1”) formal: C1 = {a1a2a3a4a5a6a7a8a9  10 teilt a1 + 2a2 + a3 + 2a4 + a5 + 2a6 + a7 + 2a8 + a9}. Vorteil: In diesem Code 1 können wir prinzipiell Vertauschungsfehler erkennen, da benachbarte Stellen verschieden gewichtet werden. Nachteil: Code 1 erkennt nicht alle Einzelfehler! Wenn an einer mit 2 gewichteten Stelle die Zahl 8 mit der Zahl 3 vertauscht wird, so liefert die 8 den Beitrag 16, die Zahl 3 den Beitrag 6 zur Summe S; also ergibt sich die gleiche Prüfziffer. Ebenso werden 7 2, 6  1, 5  0 und 9  4 nicht erkannt.

Code 2 Kontonummer ohne Prüfziffer: 1 8 9 8 2 8 0 1 Gewichtung 1 2 1 2 1 2 1 2 Produkte (Ziffer  Gewicht) 1 16 9 16 2 16 0 2 Quersummen dieser Produkte 1 7 9 7 2 7 0 2 Dann wird die Summe S dieser Quersummen bestimmt: S = 1 + 7 + 9 + 7 + 2 + 7 + 0 + 2 = 35. Diese Zahl wird durch die Prüfziffer zur nächsten Zehnerzahl ergänzt. Die Prüfziffer ist also 5, und die vollständige Kontonummer lautet 189 828 015.

Code 2 erkennt Einzelfehler 5.2.1 Satz. Der Code 2 erkennt alle Einzelfehler. Beweis. Stellen, die mit 1 gewichtet sind: o.k. (vergleiche 3.2.1.) Wir betrachten eine mit 2 gewichtete Stelle. Zu zeigen: Die Quer- summen des Doppelten der Ziffern sind verschieden. (Das ist der Beitrag, der von dieser Stelle in die Summe S eingeht. Wenn diese Zahlen alle verschieden sind, dann werden alle Einzelfehler erkannt.) Ziffer 0 1 2 3 4 5 6 7 8 9 Produkt (Ziffer  Gewicht) 0 2 4 6 8 10 12 14 16 18 Quersumme des Produkts 0 2 4 6 8 1 3 5 7 9 

5.3 Der ISBN-Code ISBN = Internationale Standard Buch Nummer Jede ISBN hat zehn Stellen, die in vier Gruppen eingeteilt sind. Erste Gruppe: Sprachraum (0, 1: englisch, 2: französisch, 3: deutsch, ..., 88: italienisch, ...) Zweite Gruppe: Verlag (528: Verlag Vieweg) Dritte Gruppe: Nummer des Buches (z.B. 16783: „In Mathe war ich immer schlecht ...“). Vierte Gruppe: Prüfsymbol.

Berechnung des Prüfsymbols Sei a1a2a3... a9a10 eine ISBN (also ist a10 das Prüfsymbol). Dieses 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 bedeutet: Man bestimmt die Zahl S = 10a1 + 9a2 + 8a3 + 7a4 + 6a5 + 5a6 + 4a7 + 3a8 + 2a9 und ergänzt diese durch das Prüfsymbol a10 zur nächsten Elferzahl. Welche Werte kann a10 annehmen? 0, 1, 2, 3, ..., 9 oder 10. Wenn sich 10 ergibt, so schreibt man X (römische Zehn).

Qualität des ISBN-Codes Formale Beschreibung des ISBN-Codes: CISBN = {a1a2...a10  11 teilt 10a1 + 9a2 + 8a3 + 7a4 + ... + 3a8 + 2a9 + 1a10}. Dass der ISBN-Code super ist, sagt der folgende Satz: 5.3.1 Satz. (a) Der ISBN-Code erkennt alle Einzelfehler. (b) Der ISBN-Code erkennt alle Vertauschungsfehler – sogar an beliebigen Stellen.

Beweis Beweis. (a): Übungsaufgabe. (b) Wir zeigen, dass der ISBN-Code jede Vertauschung der ersten beiden Stelle erkennt. Sei dazu a1a2a3... a9a10 eine ISBN. Also ist 10a1 + 9a2 + 8a3 + 7a4 + 6a5 + 5a6 + 4a7 + 3a8 + 2a9 + 1a10 eine durch 11 teilbare Zahl. Nun mögen die ersten beiden Ziffern vertauscht werden; es entsteht also die Folge a2a1a3... a9a10. Wir können a1  a2 voraussetzen. Angenommen, auch dies wäre ein Codewort. Dann wäre auch 10a2 + 9a1 + 8a3 + 7a4 + 6a5 + 5a6 + 4a7 + 3a8 + 2a9 + 1a10 eine durch 11 teilbare Zahl.

Beweis (Fortsetzung) Zusammen folgt mit 2.1.2, dass 11 auch folgende Zahl teilt: 10a1 + 9a2 – (10a2 + 9a1) = a1 – a2. Nun argumentieren wir wie im Beweis von 3.4.1: Da a1 und a2 beide zwischen 0 und 9 liegen, ist die Differenz a1 – a2 eine Zahl zwischen –9 und +9. Die einzige durch 11 teilbare Zahl in diesem Bereich ist aber 0. Daher ist a1 – a2 = 0, das heißt a1 = a2. Dieser Widerspruch zeigt, dass der ISBN-Code Vertauschungen der ersten beiden Stellen 100%ig erkennt. 

5.4 Der EAN-Code EAN = Europäische Artikel Nummer Ziele: (a) Schutz gegen Einzelfehler und (in geringerem Umfang) gegen Vertauschungsfehler (b) Nummer sowohl menschen- als auch maschinenlesbar. Methoden: (a) Prüfziffer (b) Strichcode (Barcode) (für Lesbarkeit durch einen Scanner) Konsequenz: In den „Strichen“ steckt die gleiche Information wie in den „Ziffern“; darin ist keine „Geheiminformation“ verborgen.

EAN Eine EAN hat 13 (oder, bei kleinen Artikeln, 8) Stellen, die in vier Gruppen eingeteilt sind. Erste Gruppe (2 Ziffern): Land der Herstellung (00-09: U.S.A., Canada, 30-37: Frankreich, 40-43: Deutschland, 50: U.K., 54: Belgien, 57: Dänemark, 76: Schweiz, 80-81: Italien, 90-91: Österreich, ...) Zweite Gruppe (5 Ziffern): bundeseinheitliche Beztriebsnummer Dritte Gruppe (5 Ziffern): Herstellespezifische Artikelnummer Vierte Gruppe (1 Ziffer): Prüfziffer

Die Prüfziffer beim EAN-Code EAN ohne Prüfz.: 4 0 0 0 4 1 7 0 2 0 0 0 Gewichtung 1 3 1 3 1 3 1 3 1 3 1 3 Produkte 4 0 0 0 4 3 7 0 2 0 0 0 Dann wird die Summe S dieser Produkte bestimmt; es ergibt sich S = 4 + 0 + 0 + 0 + 4 + 3 + 7 + 0 + 2 + 0 + 0 + 0 = 20. Diese Zahl wird durch die Prüfziffer zur nächsten Zehnerzahl ergänzt. Die Prüfziffer ist also gleich 0, und die vollständige EAN lautet 40 00417 02000 0.

Eigenschaften des EAN-Codes 5.4.1. Satz. Der EAN Code erkennt alle Einzelfehler Der EAN-Code erkennt nicht alle (aber die meisten) Vertauschungsfehler. Beweis: Übungsaufgabe Bemerkung: Da beim Lesen durch einen Scanner praktisch keine Vertauschungsfehler vorkommen, war es entscheidend, eine sehr gute Einzelfehlererkennung zu gewährleisten.

Der Strichcode Die Übersetzung einer EAN in den maschinenlesbaren Strichcode erfolgt auf raffinierte Art und Weise. Zusätzliche Ziele: 1. Man muss erkennen könne, in welcher Richtung die Ziffern gelesen werden (von vorne nach hinten o.u.). 2. Man möchte zwei Hälften aus 6 Ziffern haben; daher wird die erste Ziffer implizit durch die andern codiert. Konsequenz: Man braucht verschiedene Zeichensätze. Methode: Jede Ziffer wird in eine Folge von sieben weißen und schwarzen Streifen gleicher Dicke übersetzt. (Diese Streifen fügen sich zu mehr oder weniger dicken schwarzen und weißen Streifen zusammen.) Siehe Tabelle auf der nächsten Folien.

Die Tabelle für die Strichcodes

Prinzip des Strichcodes Beobachtung: Jedes Zeichen des Zeichensatzes A hat eine ungerade Anzahl von schwarzen Streifen, aber bei B und C hat jedes Zeichen eine gerade Anzahl von schwarzen Streifen. Tatsächlich ist C das „Komplement“ von A. Wie werden die Ziffern a1, a2, a3, ..., a13 einer EAN in Strichmuster codiert? Die Ziffern a8, a9, ..., a13 (also die zweite Hälfte) wird stets mit Zeichensatz C codiert. Die Ziffern a2, a3, ..., a7 werden gemäß folgender Tabelle codiert. Durch die Abfolge der Zeichensätze wird a1 automatisch codiert.

Zeichensätze für die Ziffern a2, a3, ..., a7 a1 a2 a3 a4 a5 a6 a7 0 A A A A A A 1 A A B A B B 2 A A B B A B 3 A A B B B A 4 A B A A B B 5 A B B A A B 6 A B B B A A 7 A B A B A B 8 A B A B B A 9 A B B A B A

Abschließende Bemerkungen Die „langen“ Striche sind „Trennzeichen“: Der Scanner merkt, wann er anfangen und wann er aufhören muss. Der Scanner erkennt die Reihenfolge der Zeichen: Das erste Zeichen (a2) wird in jedem Fall mit A, d.h. mit einer ungeraden Anzahl von schwarzen Streifen codiert. Das letzte Zeichen (a13) wird dagegen immer mit Zeichensatz C, also einer geraden Anzahl von schwarzen Streifen codiert. Der Scanner zählt die schwarzen Streifen im ersten Zeichen, welches er liest, und weiß dann, ob er von vorne nach hinten o.u. liest.