6 Fehlerkorrigierende Codes



Ähnliche Dokumente
Einführung in die Kodierungstheorie

4. Woche Decodierung; Maximale, Perfekte und Optimale Codes. 4. Woche: Decodierung; Maximale, Perfekte und Optimale Codes 69/ 140

Theoretische Grundlagen der Informatik WS 09/10

Grundlagen der Technischen Informatik. 2. Übung

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Lineare Codes. Dipl.-Inform. Wolfgang Globke. Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 19

3 Der Hamming-Code. Hamming-Codes

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Primzahlen und RSA-Verschlüsselung

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

6.2 Perfekte Sicherheit

Der Zwei-Quadrate-Satz von Fermat

Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Einführung in die Algebra

Erinnerung/Zusammenfassung zu Abbildungsmatrizen

Absolute Stetigkeit von Maßen

Lineare Gleichungssysteme

Übungen zum Ferienkurs Lineare Algebra WS 14/15

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Musterlösungen zur Linearen Algebra II Blatt 5

3.3 Eigenwerte und Eigenräume, Diagonalisierung

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Codierungstheorie Rudolf Scharlau, SoSe

Single Parity check Codes (1)

15 Optimales Kodieren

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Lösungen zum 3. Aufgabenblatt

Grundlagen Digitaler Systeme (GDS)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

4. Übungsblatt Matrikelnr.:

Zeichen bei Zahlen entschlüsseln

3. Zusammenhang. 22 Andreas Gathmann

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Expander Graphen und Ihre Anwendungen

Lineare Gleichungssysteme

Bestimmung einer ersten

Mathematik für Informatiker II. Beispiellösungen zur Probeklausur. Aufgabe 1. Aufgabe 2 (5+5 Punkte) Christoph Eisinger Sommersemester 2011

7 Rechnen mit Polynomen

Professionelle Seminare im Bereich MS-Office

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Grundlagen der Theoretischen Informatik, SoSe 2008

3. LINEARE GLEICHUNGSSYSTEME

Algebraische Kurven. Vorlesung 26. Die Schnittmultiplizität

Frohe Weihnachten und ein gutes neues Jahr!

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Lineare Gleichungssysteme

2. Negative Dualzahlen darstellen

Binärdarstellung von Fliesskommazahlen

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

6. Woche: Lineare Codes, Syndrom, Gilbert-Varshamov Schranke. 6. Woche: Lineare Codes, Syndrom, Gilbert-Varshamov Schranke 107/ 238

1 Mathematische Grundlagen

0 Im folgenden sei die Wortlänge gleich 8 (d. h.: es wird mit Bytes gearbeitet).

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

u + v = v + u. u + (v + w) = (u + v) + w. 0 V + v = v + 0 V = v v + u = u + v = 0 V. t (u + v) = t u + t v, (t + s) u = t u + s u.

7 Die Determinante einer Matrix

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Kapitel 15. Lösung linearer Gleichungssysteme

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

impact ordering Info Produktkonfigurator

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Rekursionen (Teschl/Teschl )

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

Theoretische Informatik SS 04 Übung 1

Grundlagen der Informatik (BSc) Übung Nr. 5

WS 2008/09. Diskrete Strukturen

(λ Ri I A+BR)v Ri = 0. Lässt sich umstellen zu

3.1. Die komplexen Zahlen

Einfache kryptographische Verfahren

Mengensysteme, Wahrscheinlichkeitsmaße

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Eigenwerte und Eigenvektoren von Matrizen

Definition:Eine meromorphe Modulform vom Gewicht k Z ist eine meromorphe. f : H C. (ii) C > 0, so daß f(z) im Bereich Im z > C keine Singularität hat.

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Die Größe A(n, d) und optimale Codes

Definition 27 Affiner Raum über Vektorraum V

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Wie löst man Mathematikaufgaben?

Was meinen die Leute eigentlich mit: Grexit?

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Codierung. Codierung. EAN Europäische Artikelnummer Ziffern 1 und 2 codieren das Hersteller-Land. Ziffer 2 bis 12 codieren Händler und Ware

Vorlesung. Funktionen/Abbildungen 1

R ist freie Software und kann von der Website.

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Technische Informatik - Eine Einführung

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

5.2 Neue Projekte erstellen

Wintersemester 2005/2006 Gedächtnisprotokoll der mündlichen Prüfung

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Beispiel Zusammengesetzte Zufallsvariablen

Transkript:

R. Reischuk, ITCS 35 6 Fehlerkorrigierende Codes Wir betrachten im folgenden nur Blockcodes, da sich bei diesen das Decodieren und auch die Analyse der Fehlertoleranz-Eigenschaften einfacher gestaltet. Mit Blockcodes hinreichend großer Länge kann man approximativ die gleichen Raten erreichen wie mit der größeren Klasse, die auch Codes variabler Länge einschließt. Ist Σ = Σ q ein q -elementiges Alphabet in der Regel verwenden wir Σ q := [0..q 1] und c Σ n q, so betrachten wir Kugeln in Σ n q mit Mittelpunkt c und Radius ρ, d.h. die Menge aller zu c benachbarten Vektoren im Abstand maximal ρ : K q (c, ρ) := {x Σ n q d H (c, x) ρ}. V q (n, ρ) bezeichne das Volumen solch einer Kugel, die Anzahl der darin enthaltenen Vektoren: V q (n, ρ) := K q (c, ρ) = ρ r=0 ( ) n (q 1) r. r 6.1 Klassifizierung Es gibt verschiedene kanonische Arten, Blockcodes zu konstruieren. Der simple Wiederholungscode, der ein einzelnes Zeichen a durch einen Block a n von n Kopien dieses Zeichens codiert, besizt zwar eine gute Fehlertoleranz und läßt sich auch sehr einfach decodieren, seine Rate ist jedoch sehr schlecht: mit wachsendem n konvergiert sie gegen 0. Wie wir bereits beim Beweis des Shannonschen Kanalcodierungstheorems im binären Fall gesehen haben, können Zufallscodes, die eine Teilmenge von Σ n zufällig als Codeworte auswählen und dann eventuell gewisse lokale Korrekturen vornehmen, wenn zwei Codeworte einen zu geringen Abstand besitzen, eine sehr gute Rate erreichen. Man benötigt jedoch extrem viel Speicherplatz exponentiell in n für ihre Spezifikation und Decodierung. Gewichtscodes sind kombinatorische Codes über dem binären Alphabet, die alle Vektoren c Σ n mit d H (c) = w für ein festes w IN als Codeworte verwenden. Bei derartigen Codes ist ein einzelner Fehler erkennbar, aber nicht korrigierbar. Alle ungeradzahligen Fehler sind mit Sicherheit erkennbar. Eine bestmögliche Wahl für den Parameter w ist w = n/2. In diesem Fall erzielen der Code die Rate ( ) 1 n n log = 1 ( n/2 n log (2 πn) 1/2 2 n) = 1 log n 2 n. Ein Paritätscode verwendet alle Binär-Vektoren geraden Gewichtes und erzielt damit eine Rate 1 1/n. Die ersten n 1 Bits solch eines Codes heißen Informationsbits, das letzte Prüfbit oder Paritätsbit. 1-Bit-Fehler können somit wie bei einem Gewichtscode erkannt, aber nicht korrigiert werden. Diese Konstruktion kann auch auf größere Alphabete erweitert werden. Für c = c 1 c 2... c n Σ n q ergibt sich der Paritätswert c n dann durch c n = n 1 i=1 c i mod q.

36 Codierung und Sicherheit, UzL WS 2007/08 Um 1-Bit-Fehler auch korrigieren zu können, muß man offensichtlich mehrere Prüfbits verwenden. Bei einem Rechteck-Code werden die n Informationsbits in einer zweidimensionalen (n 1 n 2 ) Matrix angeordnet ( n = n 1 n 2 ) und für jede Zeile und jede Spalte wird ein Prüfbit berechnet. Auf diese Weise kann ein einzelner Bitfehler lokalisiert werden und damit korrigiert werden: bei der entsprechenden Matrix-Position sind die Prüfbits der zugehörigen Zeile sowie Spalte 1. In günstigen Fällen können auch mehrere Fehler erkannt und korrigiert werden. Als Rate ergibt sich im Falle n 1 = n 2, d.h. n = (n 1 +1) (n 2 +1) : r = ( 1 1/ n ) 2 = 1 2/ n + 1/n. Neben kombinatorischen Eigenschaften kann man auch algebraische verwenden, um Codes mit stärkeren Strukturen zu konstruieren. Dazu wird das Alphabet Σ als ein endlicher Körper interpretiert, so daß wir auf seinen Elementen arithmetische Operationen ausführen können. Dies liefert die Klasse der algebraischen Codes und als Spezialfall lineare Codes. Als Abstand eines Codes C hatten wir den minimalen Hamming-Abstand zwischen Paaren von Codeworten definiert: d min (C) := min d H(c, c ). c,c C Fact 6.1 Ein Code C mit Abstand d min (C) = d erkennt f Fehler für alle f d 1. Er kann e Fehler korrigieren für alle e (d 1)/2. Beweis: Werden bei einem Codewort f Komponenten geändert, wobei 0 < f < d, so ist der neue Vektor wegen des Minimalabstandes d kein Codewort. Betrachtet man andererseits für jedes Codewort c die Kugel K(c, d 1 2 ) mit Mittelpunkt c und Radius (d 1)/2, dann müssen diese Kugeln auf Grund des minimalen Abstandes d zwischen je zwei Codeworten disjunkt sein. Man kann daher jeden Vektor in dieser Kugel eindeutig auf ihren Mittelpunkt, d.h. das Codewort c, abbilden. Definition 6.1 Der Überdeckungsradius eines Blockcodes C der Länge n über einem Alphabet Σ ist definiert als ρ(c) := max min d H(x, c). x Σ n c C Für ein Vektor x = (x 1,..., x n ) Σ n bezeichne w(x) das Hamming-Gewicht von x, d.h. die Anzahl der Komponenten x i 0. Das minimale Gewicht eines Codes C ist definiert als w(c) := min x C, x 0 w(x). 6.2 Güteschranken für Codes Definition 6.2 Ein Blockcode der Länge n und Größe m und Minimalabstand d heißt (n, m, d) Code. Für q IN mit q 2 definieren wir die Funktion A q (n, d) := max{m (n, m, d) Code über Σ q }.

R. Reischuk, ITCS 37 Ein (n, m, d) Code C über Σ q heißt optimal, wenn m = A q (n, d) gilt. C heißt maximal, wenn es nicht möglich ist, C durch Hinzunahme weiterer Codeworte zu vergrößern, ohne die Minimalabstandsbedingung d zu verletzen. Es gibt maximale Codes, die jedoch nicht optimal sind. Wir überlassen es als Aufgabe, einen derartigen Code zu konstruieren. Ist ein (n, m, d) -Code C maximal, dann muß für den Überdeckungsradius gelten: ρ(c) < d. Offensichtlich ist A q (n, d) monoton wachsend in dem Parameter q und dem Argument n. Die Funktion ist monoton fallend bezüglich d. Bis heute ist für fast alle Argumente der Wert A q (n, d) nicht exakt bekannt. Die folgende Spezialfälle lassen sich jedoch leicht analysieren. Lemma 6.1 Für d, e 1 und n IN gilt: A q (n, 1) = q n, A q (n, 2) q n 1, A 2 (n 1, 2e 1) = A 2 (n, 2e), A q (n, d) q A 2 (n 1, d). Beweis: Die erste Gleichung ergibt sich trivialerweise aus der Injektivität eines Codes. Paritätscodes, bei denen das letzte Symbol als Prüfbit genutzt wird, erzielen offensichtlich einen Abstand 2. Es gibt q n 1 solcher Codewörter. Durch Streichen einer Bitposition in einem binären Blockcode der Länge n, verkürzt sich der Abstand um maximal 1. Also gilt A 2 (n 1, 2e 1) A 2 (n, 2e). Andererseits kann aus einem (n 1, m, 2e 1) -Code C durch Anfügen eines Paritätsbits ein (n, m, 2e) -Code gewonnen werden. Zwei Codeworte aus C besitzen entweder bereits einen Abstand größer als 2e 1 oder sie haben exakt den Abstand 2e 1 und damit verschiedene Parität. Durch das Paritätsbit erhöht sich somit der Abstand um 1. Ist C ein (n, m, d) -Code über Σ q, so sei C j die Teilmenge aller Codewörter, deren erstes Symbol j ist für j = 0, 1,..., q 1. Streicht man in C j dies Symbol, so erhält man einen Blockcode C j der Länge n 1, der weiterhin einen Abstand mindestens d besitzt. Mindestens eine dieser Mengen C j enthält mindestens einen Anteil q der Mächtigkeit von C. Die geometrische Zerlegung des Raumes Σ n q durch Kugeln um die Codewörter eines Codes impliziert die folgenden Schranken für die maximale Größe eines Codes. Theorem 6.2 [Kugelüberdeckungs- und Packungs-Schranke] Für die Größe optimaler Blockcodes der Länge n mit Abstand d über einem q -elementigen Alphabet ergeben eine Kugelüberdeckung (sphere covering bound) sowie eine Kugelpackung (sphere packing bound) von Σ n q die folgendenabschätzungen: q n V q (n, d 1) A q(n, d) q n V q (n, d 1 2 ).

38 Codierung und Sicherheit, UzL WS 2007/08 Beweis: Bei Minimalabstand d kann ein Code C e = (d 1)/2 viele Fehler korrigieren, d.h. die Kugeln mit Radius e um die Codeworte müssen disjunkt sein. Da jede Kugel das Volumen V q (n, e) besitzt, können nicht mehr als q n /V q (n, e) solcher Kugeln und damit Codeworte in Σ n q gepackt werden. Ist andererseits C ein maximaler Code mit Minimalabstand d über Σ n q, so müssen die Kugeln mit Radius d 1 um die Codeworte von C den gesamten Raum überdecken (Überdeckungsradius). Andernfalls gäbe es nämlich ein weiteres Wort in Σ n q, das zu allen Codeworten in C Abstand mindestens d besäße und folglich zu C hinzugefügt werden könnte, d.h. C wäre nicht maximal. Da jede Kugel nur V q (n, d 1) Punkte überdecken kann, folgt die untere Schranke. Für das binäre Alphabet und Minimalabstand 3 bzw. 5 ergeben sich die folgenden Abschätzungen aus der Kugelpackungs- und Kugelüberdeckungsschranke. Die beiden Schranken streben mit wachsendem n stark auseinander. Wir haben soweit durch verfeinerte Analyse möglich den korrekten Wert bzw. schärfere Schranken aufgelistet. Packungs- korrekter Überdeckungsschranke Wert schranke n A 2 (n, 3) A 2 (n, 3) = A 2 (n, 3) 5 2 4 5 6 3 8 9 7 5 16 16 8 7 20 28 9 12 40 51 10 19 72-79 93 11 31 144-158 170 12 52 256 315 13 155 512 585 14 155 1024 1092 15 271 2048 2048 16 479 2560-3276 3855 Tabelle 7: Die Funktion A 2 (n, 3) Eine andere einfache Überlegung liefert die folgende Abschätzung: Theorem 6.3 [Singleton-Schranke] A q (n, d) q n d+1. Beweis: Streicht man d 1 Positionen eines Codes mit Minimalabstand d, so müssen die verbleibenden Strings paarweise verschieden sein. Bei der Restlänge l = n d + 1 gibt es maximal q l viele Möglichkeiten. Durch eine genauere Analyse hat Plotkin gezeigt:

R. Reischuk, ITCS 39 Packungs- korrekter Überdeckungsschranke Wert schranke n A 2 (n, 5) A 2 (n, 5) = A 2 (n, 5) 5 2 2 2 6 2 2 2 7 2 2 4 8 2 4 6 9 3 6 11 10 3 12 18 11 4 24 30 12 6 32 51 13 8 64 89 14 12 128 154 15 17 256 270 16 27 256-340 478 Tabelle 8: Die Funktion A 2 (n, 5) Theorem 6.4 [Plotkin-Schranke] Für d gerade gilt: für d ungerade: d A 2 (n, d) 2 2d n falls d > n/2, und für d = n/2 : A 2(2d, d) = 4d ; d + 1 A 2 (n, d) 2 2d + 1 n falls d > (n 1)/2, und für d = (n 1)/2 : A 2(2d+1, d) 4d+4. Plotkin- Packungs- Schranke Schranke n A 2 (n, 7) = A 2 (n, 7) A 2 (n, 7) 7 2 2 2 8 2 2 2 9 2 2 3 10 2 2 5 11 4 4 8 12 4 4 13 13 8 8 21 14 16 16 34 15 32 32 56 Tabelle 9: Die Funktion A 2 (n, 7)

40 Codierung und Sicherheit, UzL WS 2007/08 6.3 Perfekte Codes Überdecken die Kugeln mit Radius (d 1)/2 um die Codewörter eines Codes den ganzen Raum so wird der Raum Σ n q in optimaler Weise ausgeschöpft. Es folgt dann sofort, daß weder weitere Codeworte hinzugefügt werden können, ohne die Fehlerkorrektureigenschaften des Codes zu verschlechtern, noch daß irgendein anderer Code eine höhere Rate erzielen kann. Dies führt zu der Begriffsbildung: Definition 6.3 Ein (n, m, d) Code über Σ q heißt perfekt, falls er die Kugelpackungsschranke erreicht, d.h. m V q (n, d 1 2 ) = qn. Eine notwendige Bedingung hierfür ist, daß d ungerade und V q (n, d 1 2 ) eine Potenz von q ist. Triviale Beispiele sind der Fall e = n, d.h. d = 2n+1 mit m = 1 sowie d = n und e = (d 1)/2 mit m = 2. Der Fall e = 1, d.h. d = 3 führt auf die wichtige Klasse der Hamming-Codes, benannt nach ihrem Entdecker Richard Hamming [1950], unabhängig davon aber auch schon von Marcel Golay 1949 gefunden. Es sei q eine Primzahlpotenz. Dann muß also für d = 3 gelten: V q (n, 1) = 1 + n (q 1) = q h für ein h IN, mit anderen Worten n = (q h 1)/(q 1). Die Größe des Codes ergibt sich dann als m = q n h. Im binären Fall q = 2 bedeutet dies n = 2 h 1 und m = 2 n h. Definition 6.4 [Hamming-Code] Für h IN ist der binäre Hamming-Code H(h) ein (n, 2 n h, 3) -Code mit Länge n = 2 h 1. Er verwendet h Paritätsbits, mit denen ein einzelner Bit-Fehler lokalisiert werden kann. Die 2 h möglichen Werte für die Paritätsbits heißen Syndrome. Bei 1-Fehler-Korrektur muß gelten: 2 h n + 1, da es n mögliche Fehlerpositionen gibt und ein weiteres Syndrom für den fehlerfreien Fall benötigt wird. Im Falle der Gleichheit erhalten wir einen perfekten Code. Die Rate berechnet sich dann als n h n = n log (n + 1) n = 1 Mit wachsendem n konvergiert dieser Ausdruck gegen 1. log (n + 1) n. Beispiel 6.1 Betrachten wir als Beispiel den Hamming-Code H(3). Es gilt dann n = 2 3 1 = 7. Also besitzt dieser Code 3 Prüfbits und 4 Informationsbits und damit Größe m = 2 4. Es verbleibt die Aufgabe, die Prüfbits geeignet zu definieren, so daß jeder Bitfehler an einer der 7 Positionen des Codewortes ein anderes Syndrom besitzt. Wählt man darüber hinaus die Positionen der Prüfbits geschickt, so ist es möglich, das Syndrom als Binärdarstellung einer Zahl zwischen 0 und 7 zu interpretieren, die die Fehlerposition definiert. Hierzu wählen wir die Positionen 1, 2 und 4. Den Informationsbits verbleiben damit die Positionen 3, 5, 6, 7.

R. Reischuk, ITCS 41 Die Prüfbits werden folgendermaßen spezifiziert: Bit 1 macht einen Päritätscheck für die Positionen 1,3,5,7, (alle Zahlen, in deren Binärdarstellung das niederwertigste Bit eine 1 ist): c 1 = c 3 c 5 c 7. Bit 2 macht einen Päritätscheck für die Positionen 2,3,6,7: c 2 = c 3 c 6 c 7. Bit 4 macht einen Päritätscheck für die Positionen: 4,5,6,7: c 4 = c 5 c 6 c 7. Sind beispielsweise die 4 Informationsbits 1011, die auf die Positionen 3, 5, 6, 7 gesetzt werden, so ergibt sich für die Prüfbits: c 1 = 1 0 1 = 0, c 2 = 1 1 1 = 1 und c 4 = 0 1 1 = 0. Damit erhalten wir als Codewort die Bitfolge 0 1 1 0 0 1 1. Falls sich nun bei der Übertragung ein Fehler an Bitposition 3 einschleicht, d.h. es wird das Wort 0 1 0 0 0 1 1 empfangen, so ergibt sich das Syndrom durch die 3 Tests: Test 1: c 1 c 3 c 5 c 7 = 0 0 0 1 = 1 Test 2: c 2 c 3 c 6 c 7 = 1 0 1 1 = 1 Test 3: c 4 c 5 c 6 c 7 = 0 0 1 1 = 0 Wir erhalten damit die Binärdarstellung, beginnend mit dem niederwertigsten Bit, der Zahl 3. im Falle eines 1-Bit-Fehlers wird dieser als das dritte Bit erkannt. Berechnet man die Syndrome für die Fehler an den anderen Positionen, so ergibt sich jeweils ein anderes Syndrom, das gerade die Binärdarstellung dieser Position darstellt. Im fehlerfreien Fall erhalten wir das Syndrom 000. Theorem 6.5 Ist n + 1 = 2 h eine Zweierpotenz, dann existiert ein perfekter binärer Code mit Abstand 3 und Redundanz 1, nämlich der Hamming-Code H(h) mit anderen Worten A 2 (2 h 1, 3) = 2 2h h 1. log (n+1) n Beispiele für perfekte Codes mit Fehlerkorrektur e > 1, d.h. Minimalabstand > 3, gibt es nur wenige. Der Golay-Code G 23 ist ein binärer Code mit Parametern (23, 2 12, 7). Das Volumen der 23-dimensionalen Kugel mit Radius 3 = (7 1)/2 berechnet sich als V 2 (23, 3) = 3 k=0 ( ) 23 k = 1 + 23 + 253 + 1771 = 2048 = 2 11. Somit gilt G 23 V 2 (23, 3) = 2 12 2 11 = 2 23, d.h. der Code ist perfekt. In der Regel ist jedoch das Volumen V q (n, e) einer Kugel in Σ n q gezeigt werden: keine Potenz von q. Es konnte Theorem 6.6 [van Lint 1971, Tietäväinen 1973] Die (23, 2 12, 7) und (11, 2 6, 5) Golay Codes sind die einzigen perfekten e -fehlerkorrigierenden Codes mit e > 1 über einem Alphabet Σ q, dessen Größe q eine Primzahlpotenz ist, d.h q = p r mit p Primzahl und r IN. Für e = 3, 4, 5, 7, 8,... (d.h. alle e > 2 mit Ausnahme von e = 6 ) gilt diese Behauptung auch für beliebige Alphabete Σ q. Bislang ist ungelöst, ob es 2 -fehlerkorrigierende perfekte Codes für Alphabete gibt, deren Größe keine Primzahlpotenz ist.

42 Codierung und Sicherheit, UzL WS 2007/08 6.4 Lineare Codes Im folgenden betrachten wir eine spezielle Familie von Codes, die linearen Codes. Ein linearer Code ist ein linearer Unterraum des Vektorraumes Σ n q. Dazu muß Σ q selber ein endlicher Körper mit q Elementen sein, den man üblicherweise mit IF q bezeichnet. Ein einfaches Beispiel für einen linearen Code haben wir bereits kennengelernt den binären Hamming-Code. Fact 6.2 Es existiert ein endlicher Körper mit q Elementen genau dann, wenn q = p r Primzahlpotenz ist, d.h. p ist eine Primzahl und r IN. eine Im Fall q = p, d.h. r = 1, ist IF q isomorph zum Restklassenring mod p. Für r > 1 wählen wir ein irreduzibles Polynom g(x) von Grad r in IF p [x] und betrachten den Restklassenring über dem Polynomideal IF p [x] /g ( x), das aus Elementen der Form r 1 i=o a i x i mit a i IF p besteht. Die Addition und Multiplikation in IF q ist die entsprechende Operation im Polynomring modulo g(x) ist. Beispiel 6.2 Betrachten wir den Körper IF 2 4 = IF 2 [x] /x 4 +x+1. Die beiden Körperelemente (1101) und (0111) werden durch die Polynome x 3 + x 2 + 1, bzw. x 2 + x + 1 repräsentiert. Als Produkt der beiden Elemente erhalten wir (1101) (0111) = (x 3 + x 2 + 1)(x 2 + x + 1) = x 5 + x + 1 x 2 + 1 mod x 4 + x + 1 = 0101. Definition 6.5 Eine Generator-Matrix für einen linearen Code C ist eine (k n) -Matrix G, deren k Zeilen eine Basis von C bilden, d.h. C = {X G X IF k q}. G ist in Standardform, falls G = (I k P ) wobei I k die (k k) -Einheitsmatrix bezeichnet. Die ersten k Symbole heißen dann Informations-Symbole und die übrigen Prüf-Symbole. k Codewörter spezifizieren somit vollständig einen linearen Code der Mächtigkeit q k. Falls q k Nachrichten zu übertragen sind, kodieren wir die i -te Nachricht für i [0... q k 1] durch X [i] G wobei X [i] = (x [i] k 1,..., x[i] 0 ) gegeben ist durch k 1 j=0 x[i] j q j = i. Ein linearer Code mit einer (k n) -dimensionalen Generator-Matrix ist somit ein k -dimensionaler Unterraum des Vektorraumes IF n q. Derartige Codes werden auch als [n, k] -Codes bezeichnet, bzw. als [n, k, d] -Codes, wenn C Minimalabstand d besitzt. Beispiel 6.3 Das folgende ist ein [4,3,2]-Code über dem Alphabet IF 2 : C 1 = {0000, 1001, 0101, 0011, 1100, 1010, 0110, 1111} Für C 1 kann man als Basis beispielsweise die 3 linear unabhängigen Vektoren 1001, 1100 und 1111 wählen. Damit ergibt sich die Generator-Matrix G = 1 0 0 1 1 1 0 0 1 1 1 1

R. Reischuk, ITCS 43 Daß C Minimalabstand 2 besitzt, kann man entweder durch paarweisen Vergleich der Codewörter überprüfen oder mit Methoden, die wir gleich vorstellen werden. Der Code C 2 sei durch die Generator-Matrix G = I n gegeben (die n -dimensionale Einheitsmatrix). C 2 ist somit der gesamte Raum IF n q und damit ein [n, n, 1] -Code. Die Generator-Matrix G = (1... 1) erzeugt den Wiederholungs-Code, einen linearen [n, 1, n] - Code. Lemma 6.7 Für einen linearen Code C sind Abstand d(c) und minimales Gewicht w(c) identisch. Beweis: Sei c ein Codewort von C mit minimalem Gewicht w = w(c). Da ein linearer Code immer den Nullvektor 0 enthält, können wir schließen d(c) d H (0, c) = w. Seien andererseits c, c Codeworte mit minimalen Abstand d H (c, c ) = d(c). Für lineare Codes ist c c ebenfalls ein Codewort, somit folgt w(c) w(c c ) = d H (c, c ) = d(c). In der linearen Algebra betrachtet man zu einem Unterrraum U eines Vektorraumes V auch den sogenannten Dualraum U (auch Senkrechtraum genannt), der aus den Vektoren von V besteht, die auf allen Vektoren von U senkrecht stehen, d.h. das Skalarprodukt ist 0. Dieser Dualraum ist damit ebenfalls ein linearer Code. Besitzen U und V die Dimensionen k bzw. n, dann ist die Dimension des Dualraums n k. Definition 6.6 C sei ein [n, k] -Code. Dann heißt C = {y Σ n x y = 0 x C} der zu C duale Code. Eine Generator-Matrix für C heißt Prüfmatrix für C. Bemerkung 6.1 1. C ist ein [n, n k] Code. 2. Es gilt c h = 0 für alle c C und h C, insbesondere auch für Basisvektoren h von C. Dies impliziert für eine Generator-Matrix H des Dualcodes: c H t = 0 für jedes Codewort in C. Diese Eigenschaft ist jedoch auch hinreichend für einen Vektor c, um ein Codewort von C zu sein. Das Vektor-Matrix-Produkt c H t ist somit ein Kriterium, um zu überprüfen, ob c C. 3. Ist G = (I k P ) eine generierende Matrix für C, so ist H = ( P t I n k ) eine generierende Matrix für C und damit eine Prüfmatrix für C. Dies ergibt sich durch einfaches Nachrechnen. 4. (C ) = C. Damit ist eine Generator-Matrix für C gleichzeitig eine Prüfmatrix für C. Beispiel 6.4 Für den Hamming-Code H(3) konstruieren wir eine Generator-Matrix, indem wir die 4 Informationsbits der Reihe nach mit dem Wert 1 belegen und die übrigen Informationsbits

44 Codierung und Sicherheit, UzL WS 2007/08 auf 0 setzen. Dies ergibt dann die 4 linear unabhängigen Codewörter c 1 = 1110000, c 2 = 1001100, c 3 = 0101010 und c 4 = 1101001. Sie bilden eine Basis für H(3), d.h. G = 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 ist ein Generator. Die 3 Tests definieren die Prüfmatrix 1 0 1 0 1 0 1 H = 0 1 1 0 0 1 1 0 0 0 1 1 1 1 die gleichzeitig auch eine Generator-Matrix für den dualen Code H(3) ist. Definition 6.7 C sei ein linearer Code mit Prüfmatrix H und y IF n q. Dann heißt s = s(y) := y H t das Syndrom von y. Codewörter haben somit als Syndrom den Nullvektor. Falls das Codewort c gesendet und y = c + f empfangen wird, wobei f IF n q den Fehlervektor definiert, so gilt s(y) = y H t = (c + f) H t = f H t = s(f). Das Syndrom hängt somit nur von dem Fehlervektor f ab. Um y maximum likelihood zu decodieren, bestimmt man daher unter allen Fehlervektoren f mit Syndrom s(y) einen mit kleinstem Gewicht. Algebraisch gesprochen bedeutet dies: IF n q zerfällt bezüglich seines Unterraumes C in Nebenklassen N s, jeweils bestehend aus Vektoren mit gleichem Syndrom s. Man braucht daher zu jeder Nebenklasse N s nur einen sogenannten Nebenklassenführer f s, einen Vektor mit minimalen Gewicht, zu wählen und decodiert dann y als y f s(y). Falls n und k relativ groß sind, genügt daher zur Decodierung eine Tabelle für die q n k Syndrome mit zugehörigem Nebenklassenführer anstatt einer vollständigen Decodiertabelle für alle q n möglichen Vektoren. Im Fall der Hamming-Codes haben wir gesehen, daß man die Nebenklassenführer in diesem Fall die geänderte Bitposition auf einfache Weise aus dem Syndrom berechnen kann. Damit kann auf eine Decodiertabelle gänzlich verzichtet werden. Für nichtbinäre Alphabete kann man Hamming-Codes auf folgende allgemeine Weise definieren. Definition 6.8 Sei n = q 1. Ein [n, n k] -Code C über IF q mit Prüfmatrix H heißt Hamming-Code, falls H aus paarweise linear unabhängigen Spalten besteht. Fügt man noch einen Paritätsckeck über alle n Symbole hinzu, so nennt man dies einen erweiterten Hamming-Code, welches einen [n + 1, n k] -Code darstellt. qk 1