DIPLOMARBEIT. Titel der Diplomarbeit. Die Golay Codes. Verfasser. Daniel Eiwen. angestrebter akademischer Grad

Größe: px
Ab Seite anzeigen:

Download "DIPLOMARBEIT. Titel der Diplomarbeit. Die Golay Codes. Verfasser. Daniel Eiwen. angestrebter akademischer Grad"

Transkript

1 DIPLOMARBEIT Titel der Diplomarbeit Die Golay Codes Verfasser Daniel Eiwen angestrebter akademischer Grad Magister der Naturwissenschaften (Mag.rer.nat) Wien, im Mai 2008 Studienkennzahl lt. Studienblatt: A 405 Studienrichtung lt. Studienblatt: Mathematik Betreuer: ao. Prof. Dr. Leonhard Summerer

2

3 Dank An dieser Stelle möchte ich mich bei meinem Betreuer Dr. Leonhard Summerer für seine Unterstützung beim Verfassen dieser Arbeit bedanken. Danke für die Hilfestellung zur effizienten Literatursuche sowie für die Beantwortung aller fachlicher Fragen. Weiters möchte ich meiner Frau Julie danken, die mich durch mein gesamtes Studium hindurch in jeder Situation unterstützte. Danke, dass du immer für mich da bist. Du bist mir Rückhalt und ich danke dir, dass du mich so liebst wie ich bin. Ich liebe dich. Außerdem möchte ich meinen Eltern und meiner ganzen Familie dafür danken, dass sie mir eine wunderbare Kindheit schenkten und mir in jeder Lebenslage Liebe und Geborgenheit vermitteln. Danke, dass ihr mich stets unterstützt und mich auch zum Glauben an unseren wunderbaren Gott herangeführt habt. Mein größter Dank gebührt Gott, dem Schöpfer des Universums und jedes Lebewesens, das darin ist. Danke, dass Du aus Deiner unfassbaren Liebe zu uns Menschen Deinen Sohn Jesus auf die Welt geschickt hast, um uns den Weg zu Dir zu ermöglichen. Danke, dass Du mich geschaffen und mir so wunderbare Menschen zur Seite gestellt hast, mit denen ich mein Leben teilen darf.

4

5 Zusammenfassung In dieser Arbeit werden die sowohl aus theoretischer, als auch aus praktischer Sicht höchst interessanten Golay Codes behandelt, die in den späten 1940er Jahren entdeckt wurden. Um sie umfassend beschreiben zu können, benötigt man einige Grundbegriffe sowie grundlegende Resultate aus der Codierungstheorie, welche in Kapitel 1 dargebracht werden. Nach einer ausführlichen Beschreibung der Golay Codes und ihrer wichtigsten Eigenschaften in Kapitel 2 werden in Kapitel 3 verschiedene Methoden dargestellt, mit deren Hilfe sie konstruiert werden können. Die Vielfalt der Konstruktionsmöglichkeiten, von denen hier nur ein Auszug präsentiert wird, zählt zu den Besonderheiten dieser Codes. Eine der bedeutendsten Eigenschaften der Golay Codes ist jedoch ihre Eindeutigkeit (bis auf Äquivalenz), welche in Kapitel 4 bewiesen wird. Außerdem gehören sie zur (relativ kleinen) Klasse der sogenannten perfekten Codes, und ebenfalls in Kapitel 4 wird gezeigt, dass (außer einigen trivialen perfekten Codes) keine weiteren perfekten Codes existieren, die mehr als einen Fehler korrigieren können. Im abschließenden Kapitel 5 werden einige Algorithmen vorgestellt, mit deren Hilfe man das Codieren und Decodieren der Golay Codes realisieren kann. Am Ende wird anhand eines praktischen Beispiels einerseits die Sinnhaftigkeit und der Nutzen der Verwendung von Codes in der (fehlerbehafteten) Datenübertragung veranschaulicht, und andererseits auch die Kraft der Fehlerkorrektur im Falle des binären Golay Codes visualisiert.

6

7 Inhaltsverzeichnis 1 Einführung Einleitung Mathematische Formulierung Fehlerkorrektur Duale Codes, Gewichtsverteilung Verkürzung und Erweiterung eines Codes Die Hamming Codes Die Golay Codes Geschichtliches Der binäre Golay Code Der ternäre Golay Code Die Automorphismengruppen der Golay Codes Anwendungen Konstruktionen der Golay Codes Die Golay Codes als Zyklische Codes Die Golay Codes als BCH Codes Die Golay Codes als Quadratische Reste Codes Weitere Konstruktionen von G Die Golay Codes sind eindeutig Der binäre Golay Code G 23 ist eindeutig Der ternäre Golay Code G 11 ist eindeutig Perfekte Codes Codieren und Decodieren der Golay Codes Codieren und Decodieren linearer Codes Codieren zyklischer Codes Decodieren von BCH Codes Decodieren von Codes mit großer Automorphismengruppe Ein praktisches Beispiel Appendix 77 Literaturverzeichnis 88

8

9 1 Einführung 1.1 Einleitung Das grundlegende Problem der Codierungstheorie ist, dass Kommunikation niemals perfekt ist. Selbst bei einem Gespräch von Angesicht zu Angesicht kommt es vor, dass ein Gesprächspartner nicht alles versteht, was der andere sagt. Dies kann daran liegen, dass der Sprecher undeutlich spricht, oder dass der Zuhörer schlecht hört. Sehr oft sind zu laute Umgebungsgeräusche Ursache für das angesprochene Problem. Noch stärker treten diese Effekte bei Telefonaten auf. Die Distanz, die die Nachricht zurücklegen muss, ist hier wesentlich größer, weshalb auch mit wesentlich mehr Störungen zu rechnen ist. Üblicherweise ist es nicht notwendig, jeden einzelnen Buchstaben genau zu verstehen um zu wissen, was der Sprecher sagen möchte. Doch speziell bei wichtigen Mitteilungen ist das Verständnis jedes einzelnen Buchstabens manchmal von Bedeutung. Möchte man etwa seinen Namen per Telefon weitergeben, so wird man ihn meistens buchstabieren, um sicherzustellen, dass der Zuhörer diesen auch richtig versteht. Doch selbst das Buchstabieren reicht oft nicht aus, da viele Buchstaben ähnlich klingen. Daher wurden in den meisten Sprachen Buchstabencodes eingeführt. Hierbei wird jedem Buchstaben des Alphabets ein Wort zugeordnet, das mit eben diesem Buchstaben beginnt. Im Deutschen einigte man sich auf Anton für A, Berta für B, Cäsar für C, und so weiter. Um sicherzustellen, dass nun keine Verwechslungen mehr auftreten, wurden diese Worte so gewählt, dass sie sich möglichst stark voneinander unterscheiden. Dies ermöglicht es dem Zuhörer, jeden einzelnen Buchstaben aus dem gesagten Wort rückzubestimmen, selbst wenn er ihn nicht exakt verstanden hat. Dies ist ein einfaches, gut bekanntes Beispiel für einen Code. Anhand dieses Beispiels lässt sich sehr einfach verstehen, womit sich die Codierungstheorie beschäftigt. Es soll eine Nachricht von einem Sender an einen Empfänger übermittelt werden. Dies geschieht über einen üblicherweise fehlerbehafteten Kanal. Im obigen Beispiel war dieser Kanal eine Telefonleitung. Aufgrund von Störungen entlang des Kanals wird die Nachricht verfälscht. Die Aufgabe und das Ziel der Codierungstheorie ist es nun, die Nachricht mit so viel Zusatzinformation zu versehen, dass der Empfänger zunächst einmal erkennen kann, ob ein Fehler geschehen ist, und diesen dann womöglich noch korrigieren kann. Angenommen ich möchte meinen Namen per Telefon mit Hilfe des oben erwähnten Buchstabencodes buchstabieren. Die Information, die ich weitergeben möchte, ist E I W E N. Diese Information codiere ich nun zur Nachricht Emil Ida Wilhelm Emil Nordpol, welche ich schließlich über die Telefonleitung weitergebe. Der Hörer am anderen Ende der Leitung sollte nun kein Problem haben, aus dieser Nachricht die Information herauszulesen, die ich ihm mitteilen möchte. Heutzutage geschieht der größte Teil der Nachrichtenübertragung digital, es werden also nur noch lange Folgen von Nullen und Einsen über einen Kanal übermittelt. Die Übersetzung von Buchstaben und Zeichen in solche Folgen kann zum Beispiel mit Hilfe 1

10 1 Einführung des sogenannten ASCII Codes vorgenommen werden. Diese Folgen können in einem Computer gespeichert und von dort aus weitergeleitet werden. Hier spielt die Codierungstheorie eine besonders wichtige Rolle, da ein direktes Rückfragen bei fehlerhaften Nachrichten, im Gegensatz zu einem Telefonat, nicht möglich ist. Es ist dies wohl der wichtigste Anwendungsbereich der Codierungstheorie überhaupt. 1.2 Mathematische Formulierung Ein Code C besteht aus einer Menge von Codeworten. Will ein Sender eine Nachricht an einen Empfänger übermitteln und befürchtet er Übertragungsfehler, so codiert er die Nachricht. Dazu ordnet er jedem Buchstaben, Wort oder sonstigen Informationsteil, das er übermitteln könnte, ein eindeutiges Codewort zu. Diese Zuordnung muss natürlich auch dem Empfänger bekannt sein. Dann sendet er die entstandene Folge von Codeworten über den Kanal an den Empfänger. Dieser empfängt eine Folge von Worten. Sind diese Codeworte, so kann der Empfänger bedenkenlos annehmen, dass keine Übertragungsfehler geschehen sind und die empfangenen Worte nach dem vereinbarten Schema decodieren. Ist jedoch ein empfangenes Wort kein Codewort, so müssen Fehler in der Übertragung geschehen sein. Ist der Code gut gebaut, so kann der Empfänger diese Fehler korrigieren und die Nachricht dann einfach decodieren. Ist das nicht der Fall, dann kann der Empfänger den Sender um nochmalige Übermittlung der Nachricht bitten, falls das möglich ist. Ansonsten kann er das betroffene Wort nicht decodieren und muss hoffen aus dem Zusammenhang zu erkennen, was gemeint war. Diese Einführung beschränkt sich von nun an auf die Klasse der linearen Codes, wenngleich auch nichtlineare Codes ein großes Anwendungsgebiet haben. Viele der Grundbegriffe und einfachen Eigenschaften, die im Folgenden erwähnt werde, gelten auch für nichtlineare Codes. An mathematischen Grundlagen werden Grundbegriffe der Algebra wie etwa Gruppen, Ringe, Körper, insbesondere endliche Körper und Körpererweiterungen, Ideale oder Vektorräume vorausgesetzt. Wem diese Begriffe nicht geläufig sind, der möge sich zuerst mit diesen beschäftigen. Eine gute Einführung hierzu findet man zum Beispiel in [19]. Die hier vorgestellten grundlegenden Resultate sind in den meisten Büchern über Codierungstheorie zu finden, zum Beispiel in [7] oder[17]. Definition Es sei F q ein endlicher Körper mit q = p r Elementen, wobei p eine Primzahl und r N ist. Ein k-dimensionaler linearer Teilraum C F n q des n- dimensionalen Vektorraums F n q über F q heißt linearer Code über F q (linear code). n heißt die Länge (length) des Codes, k seine Dimension (dimension). Weiters heißt F q das Alphabet (alphabet). Ist q = 2, so heißt der Code binär (binary), gilt q = 3, so nennt man C ternär (ternary). Jeder Vektor u F n q wird ein Wort genannt. Ist u C, so spricht man von einem Codewort. Alle Worte haben also dieselbe Länge n. Die Tatsache, dass C linear ist hat zur Folge, dass auch beliebige Linearkombinationen (über F q ) von Codewörtern wieder Codewörter sind. Im Folgenden identifizieren wir F 2 mit {0, 1} und F 3 mit { 1, 0, 1}. Im besonders für Computeranwendungen wichtigen Spezialfall eines binären Codes der Länge n ist also jedes Codewort eine Folge von n Nullen und Einsen. 2

11 1.2 Mathematische Formulierung { }} { Da jeder Vektorraum einen ausgezeichneten Ursprung 0 := ( 0,..., 0) besitzt und da jeder lineare Teilvektorraum diesen Ursprung enthalten muss, enthält jeder lineare Code das Nullwort 0. Im Folgenden, sowie im Laufe des gesamten Textes, bezeichne u i die i-te Komponente des Vektors u. Definition Es seien u, v F n q. Dann heißt d(u, v) = {i 1 i n, u i v i } die Distanz (distance), oder auch Hamming-Distanz, von u und v. Für ein Wort u F n q nennt man Tr(u) := {i 1 i n, u i 0} den Träger (support) von u. Weiters nennt man das Gewicht (weight) von u. wt(u) := Tr(u) Die Distanz zweier Worte ist also die Anzahl der Stellen, an denen sie sich voneinander unterscheiden. Das Gewicht eines Wortes ist die Anzahl der Stellen, an denen es sich von 0 unterscheidet. Dies kann man natürlich als die Distanz des Wortes vom Nullwort 0 interpretieren, also wt(u) = d(u, 0). Proposition Die Hamming-Distanz liefert eine Metrik auf F n q. Beweis. Hierzu müssen drei Eigenschaften gezeigt werden: (i) Für u, v F n q ist d(u, v) 0 nach Definition. Falls d(u, v) = 0, dann ist u = v ebenfalls nach Definition. (ii) Offensichtlich gilt d(u, v) = d(v, u). (iii) Es seien u, v, w F n q. Fasst man die Distanz von u und v als die minimale Anzahl von Koordinatenänderungen auf, die notwendig ist, um u in v überzuführen, so sieht man die Dreiecksungleichung sofort. Denn man benötigt mindestens genausoviele Änderungen, um zuerst u in w und dann w in v überzuführen, wie man benötigt, um u direkt in v überzuführen. Es gilt also d(u, v) d(u, w) + d(w, v). Definition Es sei C ein linearer Code. Die kleinste Distanz, die zwischen zwei beliebigen Codeworten auftreten kann, nennt man die Minimaldistanz (minimum distance) von C, d(c) := min c c C d(c, c ). Weiters nennt man das kleinste, von Null verschiedene Gewicht, das unter den Codeworten auftritt, das Minimalgewicht (minimum weight) von C, wt(c) := min c C wt(c). n 3

12 1 Einführung Diese beiden Begriffe spielen eine wesentliche Rolle in der Beschreibung von Codes. Für lineare Codes fallen sie zusammen: Proposition Es sei C ein linearer Code. Dann gilt Beweis. d(c) = wt(c). d(c) = min c c C d(c, c ) = min c c C d(c c, 0) = = min 0 c C d(c, 0) = min 0 c C wt(c ) = wt(c) Hierbei gelten die beiden mittleren Gleichungen aufgrund der Linearität des Codes. Von nun an bezeichnen wir einen linearer Code der Länge n, Dimension k und Minimaldistanz d als einen [n, k, d] Code. Da ein Code ein linearer Teilvektorraum von F n q ist, gibt es für ihn auch eine Basis über F q. Eine solche Basis führt zur nächsten Definition. Definition Es sei C ein [n, k, d] Code über F q. (i) Ist {c (1), c (2),..., c (k) } eine Basis von C über F q, so nennt man die k n Matrix c (1) c (2) G :=. c (k) eine Erzeugermatrix (generator matrix) von C. (ii) Ist k < n, so heißt eine (n k) n Matrix eine Kontrollmatrix (parity check matrix) für C, falls C = {c F n q Hc T = 0}. Diese beiden Begriffe spielen eine wesentliche Rolle in der Beschreibung von linearen Codes. Da die Zeilen einer Erzeugermatrix G eine Basis des Codes C bilden, hat G den Rang k und es gilt F k q G = C. Man codiert demnach jedes beliebige Wort a F k q, indem man es mit einer Erzeugermatrix des Codes multipliziert, also (a 1,..., a k ) G = (c 1,..., c n ). Eine Kontrollmatrix H von C hat Rang n k, denn rg(h) = n dim(kerh) = n dim(c) = n k. Es gilt: c C a F k q : ag = c c C Hc T = 0. Weiters gilt: Ist G eine Erzeugermatrix von C, so ist eine (n k) n Matrix genau dann eine Kontrollmatrix von C, wenn rg(h) = n k und HG T = O ist, wobei O hier die Nullmatrix der passenden Größe ist (dies wird im Beweis von gezeigt). 4

13 1.2 Mathematische Formulierung Proposition Es sei C ein [n, k, d] Code über F q mit Kontrollmatrix H und k < n. Dann gilt wt(c) = d = min{r es gibt r linear abhängige Spalten von H} = max{r je r 1 Spalten von H sind linear unabhängig} Beweis. Es seien h (1),..., h (n) die Spalten von H. Da k < n, sind diese linear abhängig. Es sei w minimal gewählt, sodass w linear abhängige Spalten von H existieren. Diese seien h (i1),..., h (iw). Dann gibt es ein c = (c 1,..., c n ) F n q mit n i=1 c jh (j) = 0, wobei c j F q und c j 0 genau für j {i 1,..., i w }. Es ist dann Hc T = 0, also c C und wt(c) = w. Folglich ist wt(c) w. Gäbe es nun ein c C mit wt( c) = w < w und H c T = 0, so gäbe es w < w linear abhängige Spalten von H, was einen Widerspruch zur Minimalität von w darstellt. Definition Eine k n Erzeugermatrix eines [n, k, d] Codes C ist in Standardform (standard form), wenn sie folgende Gestalt hat: G = (I k G), wobei I k die k k Einheitsmatrix ist. Für das Weitere benötigen wir einen Begriff aus der Algebra. Definition Es sei C ein linearer Teilraum von F n q. Weiters sei A eine n n Diagonalmatrix mit Einträgen a 1,..., a n F q und π S n eine Permutation der Koordinatenpositionen {1,..., n} mit zugehöriger Permutationsmatrix P π. Dann heißt die lineare Abbildung M := AP π eine monomiale Abbildung des F n q. Man kann zeigen, dass die monomialen Abbildungen des F n q eine Gruppe, welche mit M(n, F q ) bezeichnet wird, bilden und diese gerade die Gruppe der Isometrien des F n q ist. Definition Es sei C ein linearer Teilraum von F n q. Die Menge Aut(C) := {M M(n, F q ) CM = C} heißt die Automorphismengruppe von C. Die Menge Per(C) := Im(R), wobei R : Aut(C) S n durch R(M) = R(AP π ) := π gegeben ist, heißt die Permutationsgruppe von C. Definition Ein [n, k, d] Code C heißt äquivalent (equivalent) zu einem [n, k, d] Code C, falls es eine monomiale Abbildung M M(n, F q ) gibt, sodass CM = C. 5

14 1 Einführung Die Codeworte zweier äquivalenter Codes unterscheiden sich also nur durch die Reihenfolge der Koordinaten sowie um ein festes Skalar in jeder einzelnen Koordinate. Äquivalente Codes haben die meisten Eigenschaften gemeinsam. Am wichtigsten ist hierbei die Gleichheit der Minimaldistanz, die, wie im nächsten Abschnitt klar werden wird, eine besondere Rolle in der Fehlerkorrektur einnimmt. Daher werden äquivalente Codes oft auch miteinander identifiziert. Es ist aus den Definitionen offensichtlich, dass elementare Zeilenumformungen in einer Erzeugermatrix einen linearen Code in einen äquivalenten linearen Code überführen. Da jede Erzeugermatrix maximalen Rang hat ist klar, dass somit jeder lineare Code zu einem solchen äquivalent ist, dessen Erzeugermatrix in Standardform ist. Dies vereinfacht natürlich das Codieren sowie das Decodieren maßgeblich, denn will man a F k q mit einer Erzeugermatrix G in Standardform codieren, so ergibt sich: ag = a(i k G) = (a a G). Das bedeutet, dass beim Codieren lediglich Symbole an die Information, die man codieren will, angehängt werden. Aus diesem Grund nennt man die ersten k Stellen eines so generierten Codewortes auch Informationsstellen (information symbols), und die letzten n k Stellen Kontrollstellen (parity check symbols). Zum Decodieren muss man schließlich lediglich die Kontrollstellen vom empfangenen Wort streichen. 1.3 Fehlerkorrektur Hierbei möchte man üblicherweise nach dem Prinzip des Maximum Likelihood Decoding (MLD) vorgehen. Wir bezeichnen für v F n q, c C mit P (v c) die Wahrscheinlichkeit, dass v empfangen wird, wenn c gesendet wurde. Dann decodiert das MLD das empfangene Wort v zu jenem Codewort c C, für das P (v c) = max c C P (v c ) gilt. Falls dieses Maximum für mehrere Codeworte angenommen wird, dann wird eines dieser Worte zufällig ausgewählt. Definition Ein Kanal erfülle die folgenden zwei Bedingungen: (i) Jeder mögliche Buchstabe a F q verfälscht. wird mit derselben Wahrscheinlichkeit p < q 1 q (ii) Wird a F q falsch übertragen, so ist jeder der q 1 Übertragungsfehler gleich wahrscheinlich. Dann nennt man den Kanal q-när symmetrisch (q-ary symmetric). Proposition Im Falle eines q-när symmetrischen Kanals ist das Maximum Likelihood Decoding das Decodieren zum nächstgelegenen Codewort. Beweis. Es sei c das gesendete Codewort, v das empfangene Wort mit d(c, v) = l. Weiters sei p die Wahrscheinlichkeit, dass ein Buchstabe falsch übertragen wird. Dann ist unter den gegebenen Voraussetzungen ( ) l p P (v c) = (1 p) n l, q 1 6

15 1.3 Fehlerkorrektur denn l mal wird ein Buchstabe in einen vorgegebenen anderen Buchstaben abgeändert, was den ersten Faktor liefert, und n l mal wird der Buchstabe richtig übertragen, was den zweiten Faktor erklärt. Nun sei ( ) l ( ) l p f(l) := (1 p) n l p = (1 p) n. q 1 (q 1)(1 p) Dann ist f monoton fallend in l, denn Daraus folgt: Also gilt: p < q 1 q 1 p > 1 q q 1 pq q > 1 1 p 1 > p (q 1)(1 p). > 1 1 > pq q 1 P (v c) = max c C P (v c ) l = d(v, c) = min c C d(v, c ). Da in der Praxis Kanäle die oben genannten Bedingungen zwar selten vollständig, aber üblicherweise sehr gut erfüllen, decodiert man ein empfangenes Wort zum nächstgelegenen Codewort. Gibt es mehrere Codeworte, die dieselbe minimale Distanz zum empfangenen Wort haben, so wählt man zufällig eines dieser Worte aus. Ein weiterer wichtiger Begriff zur Erklärung der Fehlerkorrektur ist der Folgende: Definition Die Menge B r (u) := {v F n q d(u, v) r} wird die Kugel mit Radius r um u (ball) genannt. Definition Es sei C ein [n, k, d] Code über F q. Gibt es ein r N, sodass c C B r (c) C = {c}, so heißt C r-fehlererkennend. Gibt es ein r N, sodass so heißt C r-fehlerkorrigierend. c, c C B r (c) B r (c ) =, Die erste Bedingung besagt, dass es zu jedem beliebigen Codewort c kein zweites Codewort c mit d(c, c ) r gibt. Empfängt man also ein Wort v mit d(c, v) r für ein Codewort c, dann kann v kein Codewort sein. Demnach müssen Übertragungsfehler geschehen sein. So können bis zu r Fehler pro Wort in der Übertragung erkannt werden. Die zweite Bedingung sagt aus, dass für zwei beliebige Codeworte c, c kein Wort v existiert, das zu beiden Worten Distanz kleiner oder gleich r hat. Empfängt man also ein Wort v mit d(c, v) r für ein Codewort c so kann es kein anderes Codewort c geben, das sich an gleich vielen oder weniger Stellen von v unterscheidet. Somit kann das empfangene Wort eindeutig zu c decodiert werden. Also ist es in diesem Fall möglich, bis zu r Fehler zu korrigieren. 7

16 1 Einführung Proposition Es sei C ein [n, k, d] Code über F q. Dann gilt: (i) Ist d = r + 1 für ein r N, dann ist C r-fehlererkennend. (ii) Ist d = 2r + 1 für ein r N, dann ist C r-fehlerkorrigierend. Beweis. (i) Es sei indirekt angenommen, dass c C : B r (c) C {c}. Dann gibt es ein c C mit c B r (c). Also ist d(c, c ) r < r + 1 = d, was einen Widerspruch zur Definition der Minimaldistanz liefert. (ii) Es sei indirekt angenommen, dass c, c C : B r (c) B r (c ). Für ein Wort u B r (c) B r (c ) gilt dann: d = 2r + 1 d(c, c ) (1.2.3) d(c, v) + d(v, c ) r + r = 2r < d. Das wiederum ist ein Widerspruch. Ein Problem, das bei der Korrektur zum nächstgelegenen Codewort auftreten kann, ist, dass dieses nicht eindeutig sein muss. So gibt es im allgemeinen für ein Wort u in F n q mehr als ein Wort im Code C, dessen Distanz zu u minimal ist. Ist das jedoch nie der Fall, so lässt sich mit der angegebenen Methode jedes Wort auf eindeutige Art decodieren. Definition Ein [n, k, d] Code heißt perfekt (perfect), falls es ein r N gibt, sodass F n q = B r (c) c C (disjunkte Vereinigung). Proposition (Hamming Schranke) Für einen [n, k, d] Code mit d 2r + 1 gilt C r i=0 ( ) n (q 1) i q n. i Gleichheit gilt genau dann, wenn d = 2r + 1 und C perfekt ist. Beweis. Für jedes c C ist B r (c) = r i=0 ( n i ) (q 1) i, denn es gibt ( n i) Möglichkeiten, die i Stellen auszuwählen, an denen sich ein Wort u mit d(u, c) = i von c unterscheidet, und für jede solche Stelle gibt es q 1 Möglichkeiten, einen anderen Wert zu wählen. Es folgt F n q = q n c C B r (c) = c C B r (c) = C B r (c) = C r i=0 ( ) n (q 1) i. i Hierbei gilt die zweite Gleichung aufgrund der Disjunktheit der Vereinigung. Die Ungleichung wird nach Definition genau dann zur Gleichung, wenn C perfekt ist und d = 2r + 1 gilt. 8

17 1.4 Duale Codes, Gewichtsverteilung Proposition (Singleton Schranke) Es sei C ein [n, k, d] Code über F q. Dann gilt: d n k + 1. Beweis. Streicht man von allen Codeworten die letzten d 1 Stellen, so erhält man einen [n d + 1, k, 1] Code C, da die Minimaldistanz von C gerade d ist und daher alle entstandenen neuen Worte verschieden sind. Also gilt C = q k q n d+1, da es nur q n d+1 Worte der Länge n d + 1 über F q gibt. Demnach muss k n d + 1 gelten, was die Behauptung liefert. 1.4 Duale Codes, Gewichtsverteilung Definition Es sei C ein [n, k, d] Code über F q. Dann heißt die Menge der zu C duale Code. C := {u F n q c C :< u, c >= 0} Bemerkung (i) Hierbei ist mit <.,. > das Standardskalarprodukt in F n q gemeint, also < (u 1,..., u n ), (c 1,..., c n ) >= n i=1 u ic i. (ii) Vorsicht: C ist nicht das orthogonale Komplement von C als Teilvektorraum von F n q. Proposition Es sei C ein [n, k, d] Code über F q. Dann gilt: H ist eine Kontrollmatrix für C H ist eine Erzeugermatrix für C. Beweis. Es sei G eine Erzeugermatrix für C. H ist genau dann eine Kontrollmatrix für C, wenn Hc T = 0 für alle Codeworte c C und Hu T 0 für alle übrigen Worte u / C gilt. Das ist äquivalent dazu, dass Hc T = 0 für alle Worte c < B > und Hu T 0 für alle Worte u / < B > gilt, wobei B eine Basis von C ist und < > das lineare Erzeugnis einer Menge darstellt. Dies ist wiederum genau dann der Fall, wenn HG T = 0 und rg(h) = n k, da die Zeilen von G eine Basis für C bilden. Das ist gleichbedeutend mit der Tatsache, dass < h (i), c >= 0 für alle Codeworte c C und < h (i), u > 0 für alle Worte u / C gilt, wobei h (i) die Zeilen von H bezeichne. Äquivalent dazu ist < h (1),..., h (n k) >= {u F n q < u, c >= 0 c C} gilt. Das ist genau dann der Fall, wenn H eine Erzeugermatrix von C ist. Bemerkung Der Beweis zeigt insbesondere, dass H genau dann eine Kontrollmatrix von C ist, wenn HG T = O und rg(h) = n k. Ebenso umgekehrt. Definition Es sei C ein [n, k, d] Code über F q. C heißt selbstorthogonal (self-orthogonal), falls C C. C heißt selbstdual (self-dual), falls C = C. 9

18 1 Einführung Definition Es sei C ein [n, k, d] Code über F q. Weiters sei A i := {c C wt(c) = i}. Dann heißt (A 0, A 1,..., A n ) die Gewichtsverteilung (weight distribution) von C. Zusätzlich definiert man n A C (z) := z wt(c), i=0 A i z i = c C das Gewichtspolynom (weight enumerator) von C. Offensichtlich ist für jedes Codewort c eines [n, k, d] Codes die Anzahl der Codeworte, die Distanz i zu c haben, ebenfalls gleich A i. 1.5 Verkürzung und Erweiterung eines Codes In diesem kurzen Abschnitt wird erläutert, wie man auf einfache Art und Weise neue Codes aus gegebenen Codes konstruieren kann. Definition Es sei C ein [n, k, d] Code über F q. Dann heißt Ĉ := {ĉ = (c 1,..., c n, Erweiterung (extension) von C. n c i ) c = (c 1,..., c n ) C} i=1 Das zusätzliche Symbol sorgt dafür, dass die Summe der Einträge eines jeden Codewortes Null ist, und wird Gesamtkontrollsymbol (overall parity check symbol) genannt. Es ist Ĉ ein [n + 1, k, d ] Code, da alle Worte um eine Stelle verlängert werden, während die Dimension aufgrund der Eindeutigkeit des zusätzlichen Symbols gleich bleibt. Die Minimaldistanz kann höchstens um 1 wachsen, daher gilt d {d, d + 1}. Hat ein binärer Code ungerade Minimaldistanz, so muss die Minimaldistanz der Erweiterung um 1 größer sein. Denn im Fall eines binären Codes ist die Summe der Einträge eines Wortes gleich der Anzahl der Einträge ungleich Null, also das Gewicht des Wortes. Das Gesamtkontrollsymbol sorgt nach Definition dafür, dass hier jedes Wort gerades Gewicht hat. Also muss das Minimalgewicht, das ja gleich der Minimaldistanz ist, gerade sein. Bemerkung Man erhält offensichtlich eine Erzeugermatrix Ĝ von Ĉ, wenn man bei einer Erzeugermatrix G von C eine Spalte in der Art hinzufügt, dass die Zeilensumme jeder Zeile Null (in F q ) ist. Ist H eine Kontrollmatrix von C, so ist Ĥ := H 0. 0 eine für Ĉ. Dabei stellt die erste Zeile sicher, dass die Summe aller Einträge eines Codewortes immer 0 in F q ist. 10

19 1.6 Die Hamming Codes Definition Es sei C ein [n, k, d] Code über F q. Dann nennt man C i := {c i = (c 0,..., c i 1, c i+1,..., c n ) c = (c 0,..., c i 1, 0, c i+1,..., c n ) C} die Verkürzung von C an der i-ten Stelle (shortening of C at i). Es werden also nur jene Codeworte betrachtet, die an einer fixen Stelle Eintrag 0 haben. Diese Stelle wird dann entfernt. Somit erhält man einen [n 1, k 1, d ] Code, wobei wieder d {d, d + 1}. Definition Es sei C ein [n, k, d] Code über F q. Dann nennt man C i := { c i = (c 0,..., c i 1, c i+1,..., c n ) c = (c 0,..., c n ) C}} die Punktierung von C an der i-ten Stelle (puncturing of C at i). Hier wird bei allen Codeworten die selbe Stelle gestrichen. Hierbei erhält man einen [n 1, k, d ] Code mit d {d 1, d}, wobei hier üblicherweise d = d 1 gilt. Klarerweise erhält man eine Erzeugermatrix einer Punktierung an der i-ten Stelle eines Codes aus einer Erzeugermatrix des ursprünglichen Codes, indem man die i-te Spalte streicht. Auf die selbe Weise erhält man eine Kontrollmatrix des neuen Codes. 1.6 Die Hamming Codes In diesem Abschnitt wird ein kurzer Überblick über die sowohl geschichtlich als auch theoretisch sehr interessanten Hamming Codes gegeben. Dazu sei wieder F q der zugrunde liegende Körper. Die Entwicklung von fehlerkorrigierenden Codes war in den 1940er Jahren notwendig geworden. Richard W. Hamming, der wohl die ersten solchen Codes konstruierte, hatte in dieser Zeit nur am Wochenende Zugang zu dem von Bell entwickelten Computer. Dieser Computer konnte zwar Fehler in den zur Eingabe verwendeten Lochkarten erkennen, diese aber nicht korrigieren. War der Computer im Normalbetrieb, so ertönte bei Auftreten eines Fehlers ein Alarm, der das anwesende Personal auf den Fehler aufmerksam machte. Der Computer arbeitete erst dann weiter, wenn dieser Fehler behoben wurde. Am Wochenende (und in der Nacht) jedoch war der Computer darauf programmiert, bei auftretenden Fehlern sofort eine andere Berechnung durchzuführen. Dies war sinnvoll, da ja im Allgemeinen zu diesen Zeiten niemand anwesend war, der Fehler korrigieren hätte können. Nun kam es immer wieder vor, dass Hamming am Ende einer Woche zum Computer kam und keine seiner Berechnungen durchgeführt waren, da Fehler aufgetreten waren und daher andere Berechnungen durchgeführt wurden. Der große Zeitverlust machte ihm sehr zu schaffen und trieb ihn dazu, sich Gedanken über Codes zu machen, die Fehler nicht nur erkennen, sondern auch korrigieren können. Und hierbei stieß er schon bald auf einen sehr einfachen, aber auch sehr effizienten binären Code, den [7, 4, 3] Hamming Code, der weiter unten erklärt wird. Dieser Code, der 1948 in einem Artikel von C.E. Shannon erstmals veröffentlicht wurde, wurde schon 1949 von Marcel J.E. Golay verallgemeinert. ([12], S ) 11

20 1 Einführung Definition Es sei n = qk 1. Weiters sei H eine k n Matrix, deren Spalten q 1 eine maximale Menge über F q paarweise linear unabhängiger Vektoren h (1),..., h (n) F k q bilden. Dann heißt der lineare Code mit Kontrollmatrix H Hamming Code. Da offensichtlich rg(h) = k gilt, hat der Hamming Code Dimension n k. Weiters sind nach Definition je zwei Spalten der Kontrollmatrix linear unabhängig, es gibt aber drei Spalten, die linear abhängig sind. Daher hat der Code nach (1.2.7) Minimaldistanz 3. Also ist ein Hamming Code ein [n, n k, 3] Code, wobei n = qk 1. q 1 In der Definition der Kontrollmatrix eines Hamming Codes ist die Wahl der Spalten zwar willkürlich, jedoch liefern unterschiedliche Auswahlen von Vektoren aus dem F k q offensichtlich äquivalente Codes. Daher spricht man von dem [n, n k, 3] Hamming Code. Da die Minimaldistanz 3 ist, ist jeder Hamming Code 2-fehlererkennend und 1-fehlerkorrigierend. Außerdem gilt: Proposition Alle Hamming Codes sind perfekt. Beweis. Das folgt unmittelbar aus der Hamming Schranke (1.3.7), denn d = 3 = , und daher C 1 i=0 ( ) n (q 1) i = q n k (1 + n(q 1)) = q n k (1 + qk 1 i q 1 (q 1)) = qn. Ein Beispiel ist der zu Beginn dieses Abschnitt erwähnte binäre [7, 4, 3] Hamming Code. Eine mögliche Kontrollmatrix für diesen ist H = Eine Erzeugermatrix in Standardform dieses Codes ist zum Beispiel G = Man überprüft einfach, dass GH T = O. Mit Hilfe dieser beiden Matrizen kann man nun einfach codieren bzw. decodieren. Dazu sei zum Beispiel die zu codierende Information u = (1, 1, 0, 1). Dann erhält man ein Codewort, indem man u mit der Erzeugermatrix multipliziert: c = ug = (1, 1, 0, 1, 0, 0, 0) Und man überprüft wieder leicht, dass Hc T = 0. 12

21 1.6 Die Hamming Codes Weiters kann man die Erweiterung dieses Codes betrachten. Dies ist ein [8, 4, 4] Code. Eine Erzeugermatrix wäre Ĝ = Eine Kontrollmatrix ist durch gegeben. Ĥ =

22 1 Einführung 14

23 2 Die Golay Codes 2.1 Geschichtliches Marcel Jules Edouard Golay wurde 1902 in Neuchâtel in der Schweiz geboren. Nach dem Abschluss seines Elektroingenieurstudiums an der ETH Zürich 1924 verließ er die Schweiz in Richtung USA, um für die Bell Laboratories in Chicago, Illinois zu arbeiten begann er sein Doktorstudium in Physik an der Universität von Chicago, welches er 1931 abschloss. Anschließend wurde Golay Mitglied der U.S. Army Signal Corps Laboratories in Fort Monmouth, New Jersey wechselte er zum Unternehmen Perkin-Elmer. Er starb Marcel Golay kann als Physiker, Mathematiker sowie als Informationstheoretiker große Erfolge aufweisen. Er verstand es wie kaum ein Zweiter, seine theoretischen Kenntnisse auf die real-life Probleme umzusetzen, die sich ihm stellten. Golay war ein talentierter Erfinder und hielt über 50 Patente. Eines davon ist die sogenannte Golay-Zelle, ein Infrarot Detektor. Außerdem machte er sich durch die Entdeckung der nach ihm benannten Golay- Codes, der Verallgemeinerung der schon erwähnten Hamming Codes, sowie der Arbeit an gewissen Folgen, die heute ebenfalls nach ihm benannt sind, einen Namen. [8] Golays Arbeit an perfekten Codes wurde motiviert und inspiriert durch den schon im vorigen Abschnitt erwähnten Artikel von C.E. Shannon, in dem der [7, 4, 3] Hamming Code erstmals veröffentlicht wurde. I had been thinking about information theory for quite a while, when I was involved with radar. I said, What do we want out of radar? After all, we want information. And I began to acquire the idea that a bit of information cost about one kt log e 2. Then, later on, I pinned it down a little more. But I didn t come to - I didn t think of - the idea of Hamming, of coding or like that. But when I read the [Shannon] paper, it was the key because I was ripe for these progresses. I had already thought about it. ([12], S. 36) Im Jahr 1949 veröffentlichte Golay schließlich einen halbseitigen Artikel mit dem Titel Notes on Digital Coding im I.R.E Journal ([6]). Dieser Artikel, den Berlekamp als die beste einzeln veröffentlichte Seite ([4], S. 4) beschrieb, ging in die Geschichte der Codierungstheorie ein. Zuerst verallgemeinerte Golay die binären Hamming Codes auf perfekte 1-fehlerkorrigierende Codes über beliebigen endlichen Körpern. Diese sind die im Abschnitt 1.6 beschriebenen Hamming Codes. Danach gab Golay eine notwendige Bedingung für die Parameter eines perfekten binären Codes an, der mehr als einen Fehler korrigiert. Hierzu muss nämlich die Summe der ersten drei oder mehr Spalten einer Zeile des Pascal schen Dreiecks eine exakte Potenz von 2 ergeben, also e ( ) n = 2 l. i i=1 15

24 2 Die Golay Codes Nur wenn dies für gewisse n, l, e N erfüllt ist, kann ein perfekter binärer [n, n l, 2e + 1] Code existieren. Dies ist klar, denn die Anzahl der Worte der Distanz i zu einem beliebigen Codewort ist gerade ( n i), wenn die Länge des binären Codes n ist. Werden nun alle Worte in F n 2 von genau einem Codewort überdeckt, das heißt gibt es für jedes Wort u F n 2 genau ein c C mit d(u, c) e, so muss, da jedes Codewort eines linearen Codes gleich viele Worte überdeckt, 2 k e i=1 ( ) n = 2 n i gelten, was die obige Bedingung für l = n k impliziert. Golay schrieb weiter, dass eine begrenzte Suche genau zwei mögliche Paramtergruppen ergeben hatte, nämlich n = 90, l = 12, e = 3, sowie n = 23, l = 11, e = 3. Mit einem einfachen Abzählargument zeigte Golay, dass die erste Konstellation keinem perfekten binären linearen Code entspricht. Die zweite Konstellation jedoch führte ihn zu einem perfekten [23, 12, 7] Code, für den er auch eine Kontrollmatrix angab. Hierbei erklärte Golay weder, wie er diesen speziellen Code gefunden hatte, noch warum dieser Code drei Fehler korrigiert. Darüber hinaus präsentierte Golay eine zweite Matrix, die einen perfekten ternären [11, 6, 5] Code beschreibt. Auch hier gab er keinen Beweis für seine Behauptung an, dass dieser Code zwei Fehler korrigiere. Golay hatte aber in beiden Fällen recht. Und auch eine Vermutung, die Golay in diesem Artikel verlautbarte, sollte sich später als wahr herausstellen. Er schrieb: If we except the trivial case of blocks of 2S + 1 binary symbols, of which any group comprising up to S symbols can be received in error which equal probability, it does not appear that a search for lossless coding schemes, in which the number of errors is limited but larger than one, can be systematized so as to yield a family of solutions. In Wahrheit gilt sogar mehr. Wie in Abschnitt 4.3 dieser Arbeit gezeigt wird, existieren keine Parameterkonstellationen außer denen der trivialen perfekten Codes, der Hamming Codes und der Golay Codes, die einen perfekten linearen Code liefern. Die beiden von Golay beschriebenen perfekten Codes sowie ihre Erweiterungen gehören zu den berühmtesten aller Codes. Sie zeichnen sich vor allem dadurch aus, dass sie durch ihre Parameter eindeutig bestimmt sind (Kapitel 4). Weiters sind sie auch die einzigen perfekten Codes, die mehr als einen Fehler korrigieren (Abschnitt 4.3). Große Aufmerksamkeit erlangten diese Codes auch aufgrund ihrer Automorphismengruppen, die etwa 100 Jahre lang als Ausnahmeerscheinungen in der Theorie endlicher Gruppen bekannt, aber bis zum damaligen Zeitpunkt kaum verstanden waren (siehe 2.4). Dem Studium der vielfältigen Eigenschaften und Anwendungen der Golay Codes ist der restliche Verlauf dieser Arbeit gewidmet. 16

25 2.2 Der binäre Golay Code 2.2 Der binäre Golay Code Der [23, 12, 7] Code aus Golays Artikel wird der binäre Golay Code G 23 (binary Golay code) genannt. Die Matrix (a ij ) (i = 1,..., 11, j = 1,..., 12), die Golay in seinem Artikel für G 23 angab, ist Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8 Y 9 Y 10 Y 11 Y 12 X X X X X X X X X X X Dabei sind die Y i die zwölf Informationssymbole, während sich die elf Kontrollsymbole X i aus 12 X i + a ij Y j 0 (mod 2), i = 1,..., 11 j=1 berechnen. Das bedeutet, dass die Matrix H 23 = ((a ij ) I 11 ) eine Kontrollmatrix von G 23 ist. Man erhält eine Erzeugermatrix in Standardform, indem man aus obiger Relation für i {}}{ die Worte e i := (0,..., 0, 1, 0,..., 0) für i = 1,..., 12 die Kontrollsymbole berechnet. Das liefert die Matrix G 23 = (I 12 (a ij ) T ) Wie weiter oben erwähnt gab Golay keinen Beweis dafür an, dass dieser Code tatsächlich Minimaldistanz 7 hat. Um das direkt zu beweisen müsste man zeigen, dass je 6 Spalten von H 23 linear unabhängig sind (1.2.7). Das bedeutet, dass die folgenden Bedingungen über die Spalten von (a ij ) überprüft werden müssen: Die Summe sechs beliebiger Spalten ist nicht 0. Die Summe von je fünf Spalten enthält mindestens zwei Einsen. Die Summe von je vier Spalten enthält mindestens drei Einsen. Die Summe von je drei Spalten enthält mindestens vier Einsen. Die Summe von je zwei Spalten enthält mindestens fünf Einsen. Jede Spalte enthält mindestens sechs Einsen. Das sind 2509 Gleichungen. Golay selbst meinte darauf angesprochen, dies sei etwas, das durch Betrachtung verifiziert werden kann. ([12], S. 48) 17

26 2 Die Golay Codes Eine wesentlich einfachere Methode die Minimaldistanz zu überprüfen ist das Studium des erweiterten binären Golay Codes G 24 (extended binary Golay code). Nach (1.5.2) ist eine Kontrollmatrix für diesen durch H 24 := H , gegeben, während eine Erzeugermatrix durch G 24 := I gegeben ist. Proposition G 24 ist selbstdual. Beweis. (siehe [7], S. 65). Es ist G 24 G T 24 = O, denn man sieht leicht, dass je zwei Zeilen von G 24 entweder vier oder sechs Einsen gemeinsam haben. Daher ist das innere Produkt zweier Zeilen immer 0 in F 2. Es ist also, da rg(g 24 ) = 12, nach (1.4.4) G 24 auch eine Kontrollmatrix von G 24. Daher folgt nach (1.4.3), dass G 24 eine Erzeugermatrix von G24 ist. Um die Minimaldistanz von G 24 zu bestimmen, benötigt man noch folgende Tatsachen: Definition Ein Code C heißt r-dividierbar, falls das Gewicht jedes Codewortes c C durch r teilbar ist. Lemma Besitzt ein binärer selbstorthogonaler Code C eine Basis aus 4-dividierbaren Codeworten, so ist er 4-dividierbar. Beweis. (siehe [17], S. 84). Da C selbstortogonal ist, ist < c, c > 0 (mod 2) für alle c, c C. Außerdem ist wt(c + c ) = wt(c) + wt(c ) 2 < c, c >. Sind nun c und c Elemente der gegebenen Basis von C, also insbesondere 4-dividierbar, so ist auch das Gewicht von c + c durch 4 teilbar, da jeder Summand durch 4 teilbar ist. Iterativ folgt daraus, dass das Gewicht jedes Codewortes durch 4 teilbar ist, da sich klarerweise jedes Codewort aus C als Summe von Basisworten schreiben lässt. 18

27 2.2 Der binäre Golay Code Korollar G 24 ist 4-dividierbar. Beweis. Die Zeilen von G 24 bilden eine Basis von G 24 und sie haben Gewicht 8 oder 12. Lemma Es sei C ein [n, k, d] Code über F q. Ist C selbstdual und ist die Matrix G := (I k A) eine Erzeugermatrix von C, so ist auch G := ( A T I k ) eine solche. Beweis. Es hat G den selben Rang wie G, und es gilt: GG T = (I k A)( A T I k ) T = A + A = O Also ist G eine Erzeugermatrix von C = C. Der Beweis der folgenden Proposition folgt den Ideen von [17], S Proposition G 24 hat Minimaldistanz d = 8. Beweis. Da G 24 Zeilen vom Gewicht 8 enthält, genügt es nach (2.2.4) zu zeigen, dass G 24 keine Worte vom Gewicht 4 enthält. Gäbe es ein solches Codewort c dann wäre es jedenfalls keine Zeile von G 24, denn jene Zeilen haben alle Gewicht 8 oder 12. Also müsste c eine Linearkombination von zwei, drei oder vier Zeilen von G 24 sein (da sich die Einsen in den ersten 12 Komponenten nicht wegheben können). Man überprüft leicht, dass die Summe zweier beliebiger Zeilen von G 24 Gewicht 8 hat. Addiert man zwei Zeilen ungleich der ersten, so hat das so gebildete Wort genau zwei Einsen in den Positionen 2 bis 12 und genau sechs Einsen in den letzten 12 Positionen, wobei an Position 23 eine Null steht. Addiert man zusätzlich die erste Zeile, so erhält man ein Wort vom Gewicht 8. Addiert man stattdessen eine beliebige andere Zeile ungleich der ersten, so erhält man ein Wort vom Gewicht größer als 4. Dies sieht man folgendermaßen: in den ersten 12 Positionen erhält man drei Einsen. In den letzten 12 Positionen erhält man mindestens zwei Einsen, denn erhielte man dort nur eine Eins, so wäre das erhaltene Wort eine Zeile von ( A T I 12 ), was nach obigem Lemma eine Erzeugermatrix von G 24 ist (Hierbei ist G 24 = (I 12 A)). Alle Zeilen dieser Matrix haben aber Gewicht 8 oder 12. Addiert man vier beliebige Zeilen von G 24, so erhält man in den ersten 12 Positionen vier Einsen. Um ein Wort vom Gewicht 4 zu erhalten, müssen daher die letzten 12 Positionen mit Nullen besetzt sein. Das kann jedoch nicht auftreten, da nach Lemma ( A T I 12 ) eine Erzeugermatrix von G 24 ist. Der erweiterte binäre Golay Code ist also ein [24, 12, 8] Code. Mit Hilfe dieser Tatsache sieht man sofort: Proposition Die Minimaldistanz von G 23 ist d = 7. 19

28 2 Die Golay Codes Beweis. Da die Minimaldistanz von G 24 8 ist, kann die Minimaldistanz von G 23 nur 7 oder 8 sein. Da die Erzeugermatrix G 23 Zeilen vom Gewicht 7 enthält, gilt die Behauptung. Proposition G 23 ist perfekt. Beweis. Das folgt unmittelbar aus der Hamming Schranke (1.3.7), denn es gilt i=0 ( ) 23 = 2 12 ( ) = = i Es ist möglich, die Gewichtsverteilung eines perfekten Codes, der 0 enthält, ausschließlich aus seinen Parametern herzuleiten, da jedes mögliche Wort u F 23 2 von genau einem Codewort überdeckt werden muss. Im Falle von G 23 erhält man A 0,..., A 23 zum Beispiel folgendermaßen: Da G 23 Minimaldistanz 7 hat und perfekt ist, muss für jedes beliebige Wort u F 23 2 genau ein c G 23 mit d(u, c) 3 existieren. Betrachtet man ein Wort u vom Gewicht i, so kann dieses folglich nur von einem Codewort c vom Gewicht j überdeckt sein, für das i 3 j i + 3 gilt. Diese Fälle werden nun untersucht. Hierbei bezeichnen wir eine Stelle des Trägers eines Wortes als eine Trägerstelle. Gewicht i 3: Solch ein Codewort c überdeckt genau ( ) 23 (i 3) 3 Worte vom Gewicht i. Das gilt, da ein Wort u genau dann d(u, c) 3 erfüllt, wenn es an den i 3 Trägerstellen von c mit diesem übereinstimmt, während die zusätzlichen drei Einsen auf die übrigen 23 (i 3) Positionen verteilt werden können. Gewicht i 2: Aus dem selben Grund werden genau ( ) 23 (i 2) 2 Worte vom Gewicht i von einem solchen Codewort c überdeckt. Gewicht i 1: Nun werden genau ( ) ( 23 (i 1) 1 + i 1 )( 23 (i 1) ) i 2 2 Worte vom Gewicht i überdeckt. Der zweite Summand zählt jene Worte vom Gewicht i, die an i 2 der i 1 Trägerstellen des Codeworts mit diesem übereinstimmen. Für die übrigen zwei Einsen können beliebige zwei aus den verbleibenden 23 (i 1) Positionen gewählt werden. Gewicht i: Ein solches Codewort überdeckt sich selbst sowie ( )( i 23 i ) i 1 1 weitere Worte vom Gewicht i. Gewicht i + 1: Genau ( ) ( i+1 i + i+1 )( 23 (i+1) ) i 1 1 werden hier überdeckt. Der erste Summand zählt all jene Worte vom Gewicht i, deren i Einsen auf die i + 1 Trägerstellen von c verteilt sind. Der zweite Summand zählt alle jene Worte vom Gewicht i, für die i 1 Einsen auf solchen Positionen stehen, wo c eine Eins enthält, die übrige Eins an einer der verbleibenden 23 (i + 1) Positionen steht. Andere Möglichkeiten gibt es nicht. 20

29 2.2 Der binäre Golay Code Gewicht i + 2: Solch ein Codewort überdeckt offensichtlich genau ( ) i+2 i Worte vom Gewicht i. Gewicht i + 3: Ebenso sieht man, dass hier genau ( ) i+3 i Worte vom Gewicht i überdeckt werden. Das führt insgesamt zu folgendem Gleichungssystem: ( A 23 (i 3) ) ( i (i 2) ) Ai A i 1 [ ( ) ( 23 (i 1) 1 + i 1 )( 23 (i 1) ) i 2 2 ] + Ai [1 + ( )( i 23 i ) i 1 1 ]+ A i+1 [ ( ) ( i+1 i + i+1 )( 23 (i+1) ) ( i 1 1 ] + i+2 ) ( Ai+2 i + i+3 ) ( Ai+3 i = 23 ) i Hier ist i = 0,..., 23 und A j = 0 falls j < 0 oder j > 23. Es handelt sich also um ein Gleichungssystem, welches sich sehr einfach lösen lässt. Da G 23 linear ist und Minimaldistanz 7 hat, gilt ja A 0 = 1 A i = 0 i = 1,..., 6 Somit werden die Gleichungen für i = 0, 1, 2, 3 trivial. Die Gleichung für i = 4 lautet dann: ( ) ( ) 7 23 A 7 = 4 4 woraus sofort A 7 = 253 folgt. So fährt man sukzessive fort und erhält schließlich die Gewichtsverteilung von G 23 : Proposition Die Gewichtsverteilung (A 0,..., A 23 ) des binären Golay Codes G 23 ist gegeben durch A 0 A 7 A 8 A 11 A 12 A 15 A 16 A Die übrigen Gewichte treten nicht auf. { }} { Die Tatsache, dass A 23 = 1, also dass 1 := ( 1,..., 1) G 23 impliziert, dass mit jedem Codewort auch sein Komplement (Nullen und Einsen ausgetauscht) ein Codewort ist. Daher ist auch klar, dass es gleich viele Worte vom Gewicht i wie Worte vom Gewicht n i geben muss. Diese Gewichtsverteilung liefert sofort die Gewichtsverteilung des erweiterten binären Golay Codes (siehe [7], S. 69). Proposition Die Gewichtsverteilung von G 24 ist gegeben durch Die übrigen Gewichte treten nicht auf. 23 A 0 A 8 A 12 A 16 A

30 2 Die Golay Codes Beweis. Da G 24 4-dividierbar ist (2.2.4) und Minimaldistanz 8 hat, kommen nur die Gewichte 0, 8, 12, 16, 20, 24 in Frage. Da G 24 die Erweiterung von G 23 ist, werden alle Worte von ungeradem Gewicht aus G 23 mit einer Eins als Gesamtkontrollsymbol versehen, all jene mit geradem Gewicht mit einer Null. Das heißt, dass die Codeworte vom Gewicht 8 in G 24 aus den Codeworten vom Gewicht 7 und 8 aus G 23 entstanden sind. Analoges gilt für die übrigen möglichen Gewichte. 2.3 Der ternäre Golay Code Für die Anwendung weniger, dafür aus theoretischer Sicht ebenso interessant wie der binäre Golay Code ist der von Marcel Golay in seinem Artikel vorgestellte ternäre Golay Code G 11 (ternary Golay code). Die Matrix (b ij ) (i = 1,..., 5, j = 1,..., 6), die er für diesen Code angab, ist Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Hier ist wieder X X X X X H 11 := (( b ij ) I 5 ) eine Kontrollmatrix für G 11. Eine Erzeugermatrix erhält man, indem man für die Worte e (i), i = 1,..., 6 die Kontrollsymbole berechnet. Das liefert die 6 11 Matrix G 11 := (I 6 (b ij ) T ). Auch hier wies Golay nicht nach, dass die Minimaldistanz des Codes 5 ist. Dazu müsste man zeigen, dass je 4 Spalten von (b ij ) linear unabhängig sind. Dies liefert die folgenden Bedingungen: Die Summe von je vier Spalten ist nicht 0. Die Summe von je drei Spalten enthält mindestens zwei Einsen. Die Summe von je zwei Spalten enthält mindestens drei Einsen. Jede Spalte enthält mindestens vier Einsen. Das sind 472 Gleichungen, die einfach aber langwierig zu überprüfen sind. Auch hier ist der Umweg über den erweiterten ternären Golay Code (extended ternary Golay code) sehr nützlich. Nach (1.5.2) ist eine Kontrollmatrix für G 12 durch H 12 := H

31 2.3 Der ternäre Golay Code gegeben, während man eine Erzeugermatrix durch 0 1 G 12 := 1 G erhält. Die Beweise der folgenden Eigenschaften stammen aus [17], S Proposition G 12 ist selbstdual. Beweis. Es ist G 12 G T 12 = O, denn man sieht leicht, dass je zwei Zeilen von G 12 inneres Produkt 0 in F 3 haben. Es ist also, da rg(g 12 ) = 6, nach (1.4.4) G 24 auch eine Kontrollmatrix von G 24. Daher folgt nach (1.4.3), dass G 24 eine Erzeugermatrix von G12 ist. Proposition G 12 ist 3-dividierbar. Beweis. Nach der vorigen Proposition ist G 12 selbstdual. Da in F 3 außerdem 1 2 = 1 und ( 1) 2 = 1 gilt, erfüllt jedes beliebige Codewort c G 12 in F =< c, c >= c 2 i = 1 = wt(c). Tr(c) i=1 Proposition G 12 hat Minimaldistanz d = 6 Beweis. Da G 12 Zeilen vom Gewicht 6 enthält genügt es nach (2.3.2) zu zeigen, dass G 12 keine Worte vom Gewicht 3 enthält. Ein solches Wort kann keine Zeile von G 12 sein, da diese alle Gewicht 6 haben. Es müsste, da sich die Einsen in den ersten sechs Positionen nicht wegheben können, eine Linearkombination von zwei oder drei solchen Zeilen sein. Wäre es eine Linearkombination von zwei Zeilen, so hätte es in den letzten sechs Stellen genau eine Eins. Dann wäre es aber eine Zeile der Matrix ( B T I 6 ), was ja nach (2.2.5) eine Erzeugermatrix von G 12 ist (Hierbei ist G 12 = (I 6 B)). Diese Zeilen haben jedoch alle Gewicht 6. Wäre es eine Linearkombination von drei Zeilen, so hätte es nur Nullen in den letzten sechs Positionen. Das widerspricht ebenfalls der Tatsache, dass ( B T I 6 ) eine Erzeugermatrix von G 12 ist (2.2.5). Somit ist G 12 ein [12, 6, 6] Code. Diese Tatsache ermöglicht nun die Bestimmung der Minimaldistanz des ternären Golay Codes. 23

32 2 Die Golay Codes Proposition Die Minimaldistanz von G 11 ist d = 5. Beweis. Da die Erzeugermatrix G 11 Zeilen vom Gewicht 5 enthält und die Minimaldistanz von G 11 nur um höchstens 1 kleiner sein kann als die seiner Erweiterung G 12, folgt die Behauptung. Proposition G 11 ist perfekt. Beweis. Das folgt wieder aus der Hamming Schranke (1.3.7): 2 ( ) (3 1) i = 3 6 ( ) = = i i=0 Proposition Die Gewichtsverteilung von G 11 ist gegeben durch Die übrigen Gewichte treten nicht auf. A 0 A 5 A 6 A 8 A 9 A Beweis. Da G 11 Minimaldistanz 5 hat, wird ein Wort u F 11 3 vom Gewicht i von einem Codewort c G 11 mit wt(c) {i 2,..., i + 2} überdeckt. Analog zum binären Fall erhält man ein Gleichungssystem für die unbekannten Gewichte. Gewicht i 2: Ein solches Codewort c überdeckt genau ( ) 11 (i 2) Worte vom Gewicht i, denn die einzige Möglichkeit, dass ein Wort u vom Gewicht i die Bedingung d(u, c) 2 erfüllt, ist, dass es an den i 2 Trägerstellen von c mit diesem übereinstimmt. Aus den verbleibenden 11 (i 2) Stellen können dann noch zwei ausgewählt werden, an denen dann je eine 1 oder eine 1 stehen kann. Gewicht i 1: Hier überdeckt solch ein c genau (11 (i 1)) 2+ ( i 1 i 2) (11 (i 1)) 2 Worte vom Gewicht i. Der erste Summand zählt die Worte, die an den i 1 Trägerstellen von c mit diesem übereinstimmen. An einer der verbleibenden 11 (i 1) Stellen steht dann noch eine 1 oder eine 1. Der zweite Summand erfasst all jene Worte, die an i 2 der Trägerstellen von c mit diesem übereinstimmen, während sie an der verbliebenen Trägerstelle gerade den negativen Eintrag von c enthält. An einer der übrigen 11 (i 1) Stellen kann dann wieder eine 1 oder eine 1 stehen. Gewicht i: Überdeckt werden hier natürlich das Codewort c selbst sowie genau ( i i 1) (1 + (11 i) 2) + ( i i 2) weitere Worte vom Gewicht i. Um die Distanz kleiner oder gleich 2 zu halten kann das Wort an (i 1) der Trägerstellen von c mit diesem übereinstimmen, wobei dann an der verbliebenen Trägerstelle entweder genau der negative Eintrag von c steht, oder jedoch eine Null, was wieder eine 1 oder eine 1 an einer der übrigen 11 i Stellen impliziert. Außerdem kann das Wort auch nur an i 2 der Trägerstellen mit c übereinstimmen, an den beiden verbliebenen Trägerstellen jedoch den negativen Eintrag von c haben. 24

33 2.4 Die Automorphismengruppen der Golay Codes Gewicht i + 1: Hier werden genau ( ) ( i+1 i + i+1 2 i 1)( 1) Worte vom Gewicht i überdeckt, denn entweder stimmt das Wort an i der Trägerstellen mit dem Codewort c überein, oder nur an i 1, was jedoch impliziert, dass an einer der beiden verbliebenen Stellen der negative Eintrag von c steht. An der übrigen Trägerstelle steht dann eine Null. Gewicht i + 2: Ein solches Codewort überdeckt genau ( ) i+2 i Worte vom Gewicht i. Das liefert insgesamt das Gleichungssystem für i = 0,..., 11: ( A 11 (i 2) ) i A i 1 [(11 (i 1)) 2 + ( i 1 i 2) (11 (i 1)) 2]+ A i [1 + ( ) ( i i 1 (1 + (11 i) 2) + i i 2) ]+ A i+1 [ ( ) ( i+1 i + i+1 2 ) ( i 1)( 1 ] + i+2 ) ( Ai+2 i = 11 ) i 2 i Die Lösung dieses Systems liefert die Behauptung. Daraus erhält man auch wieder die Gewichtsverteilung des erweiterten ternären Golay Codes. Proposition Die Gewichtsverteilung von G 12 ist gegeben durch Die übrigen Gewichte treten nicht auf. A 0 A 6 A 9 A Beweis. (analog zu ). Da G 12 3-dividierbar ist (2.3.2) und Minimaldistanz 6 hat, kommen nur die Gewichte 0, 6, 9 oder 12 in Frage. G 12 ist die Erweiterung von G 11 also kann das Gewicht eines Wort aus G 11 höchstens um 1 größer werden. Das heißt, dass die Codeworte vom Gewicht 6 in G 12 aus den Codeworten vom Gewicht 5 und 6 aus G 11 entstanden sind. Analoges gilt für die übrigen möglichen Gewichte. 2.4 Die Automorphismengruppen der Golay Codes Eine besondere Bedeutung haben die Automorphismengruppen der Golay Codes (siehe (1.2.10)). Man kann folgendes zeigen: Satz Die Automorphismengruppen der Golay Codes sind (bis auf Isomorphie) gegeben durch: Aut(G 23 ) = M 23 Aut(G 24 ) = M 24 Aut(G 11 ) = M 11 G Aut(G 24 ) = M 12 G, wobei M 23, M 24, M 11 und M 12 die entsprechenden Mathieu Gruppen bezeichnen, G die Gruppe mit zwei Elementen ist und das direkte Produkt zweier Gruppen meint. 25

34 2 Die Golay Codes Den Beweis hierfür findet man zum Beispiel in [7], S und oder auch in [2], S Dort findet man auch folgendes Resultat: Satz Für die Automorphismengruppen der Golay Codes gilt: Aut(G 23 ) = M 23 = Aut(G 24 ) = M 24 = Aut(G 11 ) = M 11 2 = Aut(G 24 ) = M 12 2 = , Die fünf Mathieu Gruppen (die fünfte wird M 22 genannt) wurden vom französischen Mathematiker Emile Mathieu 1861 und 1873 entdeckt und publiziert, und hatten seither eine Sonderstellung in der Gruppentheorie inne. Sie galten lange Zeit als die einzigen endlichen einfachen Gruppen, die nicht in die 18 Familien endlicher einfacher Gruppen einzuordnen waren. Daher wurden sie auch lange Zeit nicht verstanden. In der Hilfestellung zum Verständnis dieser vier der insgesamt 26 sogenannten sporadischen Gruppen liegt unter anderem die große Bedeutung der Golay Codes. [25] 2.5 Anwendungen Der ternäre Golay Code G 11 findet in der Praxis kaum Anwendung. Eine (in der Praxis bedeutungslose) Anwendung von G 11 ist die folgende im Bereich von Sportwetten: Identifiziert man bei einer Toto-Wette mit 11 Spielen einen Sieg für die Heimmannschaft mit 1, ein Unentschieden mit 0 und einen Sieg der Auswärtsmannschaft mit 1, so ist das Ergebnis einer Spielrunde ein Vektor der Länge 11 über F 3. Da der ternäre Golay Code perfekt ist, hat jeder mögliche Vektor u F 11 3 Distanz kleiner oder gleich 2 zu genau einem Codewort c G 11. Tippt man also jedes Codewort des ternären Golay Codes, so ist gesichert, dass genau einer der Tipps 9 oder mehr richtige Ergebnisse enthält. Wie erwähnt ist dieses System in der Praxis nicht nützlich, da man insgesamt 3 6 = 729 Tippscheine kaufen müsste, was üblicherweise mehr kostet als 9 von 11 korrekte Tipps an Gewinn bringen. Der Aufwand lässt sich natürlich stark verringern wenn man eine gewisse Kenntnis der Spiele mitbringt. So gibt es viele Partien, bei denen eine der Mannschaften stark favorisiert wird. Nimmt man diesen Tipp als gegeben an so kann man mit weit weniger Codeworten auskommen. Offensichtlich verliert man dadurch die Garantie, dass zumindest 9 richtige Ergebnisse getippt werden, doch hat man eine sehr hohe Gewinnchance. Daher ist G 11 (und auch G 12 ) Grundlage für viele Wettsysteme. Dieses Beispiel ist auch geschichtlich interessant, da der Finne Juhani Virtakallio schon im Jahr 1947 in der finnischen Zeitschrift Veikkaaja, die sich mit Wetten auf Fußballspiele beschäftigte, die 729 Codeworte des ternären Golay Codes veröffentlichte. [3] Für die praktische Anwendung ist natürlich der binäre Golay Code wesentlich bedeutsamer als der ternäre, da im Zeitalter des Computers alle Informationen binär gespeichert und weitergeleitet werden. Der erweiterte binäre Golay Code G 24 wurde zum Beispiel im Rahmen der von der NASA im Jahr 1977 gestarteten Voyager I und II Missionen zur Übertragung der Bilder von Jupiter und Saturn verwendet. Aufgrund der großen 26

35 2.5 Anwendungen Distanz, die die Daten von der Raumsonde zur Erde zurücklegen müssen, sind solche Übertragungen stark fehlerbehaftet. Da G 24 nur drei Fehler korrigiert, wurde Mitte der 1980er Jahre die Voyager II Mission auf die Verwendung eines Reed-Solomon Codes umprogrammiert, welcher mehr Fehler korrigiert. Einen weiteren Grund für die Umprogrammierung lieferte die Informationsrate des Golay Codes. Diese ist für beliebige lineare [n, k, d] Codes durch R = k definiert. Sie n ist ein Maß dafür, welcher Anteil der codierten Nachricht die tatsächliche Information enthält. So ist zum Beispiel die Informationsrate des erweiterten binären Golay Codes gerade R = 12 = 1. Das bedeutet, dass nur die Hälfte der übertragenen Symbole die 24 2 eigentliche Information enthält. Anders ausgedrückt muss für jedes Informationssymbol genau ein Kontrollsymbol angehängt werden. Der später zur Bildübertragung von der Voyager II verwendete Reed-Solomon Code hat Informationsrate R = 6, es muss also an 7 je sechs Informationssymbole lediglich ein Kontrollsymbol angehängt werden. Dies spart viel Energie bei der Übertragung da viel weniger Symbole übertragen werden müssen. [27] Abbildung 2.1: Jupiter Heutzutage werden die Golay Codes weltweit zur Vorwärtsfehlerkorrektur im automatischen Verbindungsaufbau (ALE: Automatic Link Establishment) in der Hochfrequenz- Datenübertragung verwendet. [24] Außerdem finden die Golay Codes auch im biomedizinischen Bereich, genauer in speziellen Ultraschallmethoden, Anwendung. [22] 27

36 2 Die Golay Codes 28

37 3 Konstruktionen der Golay Codes Dieser Abschnitt macht sich zu Nutzen, dass die Golay Codes durch ihre Parameter (bis auf Äquivalenz) eindeutig bestimmt sind. Dies wird im nächsten Kapitel 4 gezeigt. In diesem Abschnitt werden auf verschiedene Arten Codes konstruiert, deren Parameter mit denen eines Golay Codes übereinstimmen und daher, wie erwähnt, äquivalent zu diesem sind. Daher ist es legitim von Konstruktionen der Golay Codes zu sprechen. 3.1 Die Golay Codes als Zyklische Codes In diesem Kapitel wird aus sofort ersichtlichen Gründen die Nummerierung der Komponenten eines Vektors bei 0 begonnen. Die Resultate dieses Abschnitts sind aus [17], S übernommen. Definition Es sei C ein [n, k, d] Code über F q. C heißt zyklisch, falls (c 0,..., c n 1 ) C (c n 1, c 0,..., c n 2 ) C. Das bedeutet, dass mit jedem Codewort c C auch jeder zyklische Shift von c ein Codewort ist. Die Bedeutung zyklischer Codes liegt in der zusätzlichen algebraischen Struktur dieser Codes. Um dies einzusehen betrachtet man den Polynomring F q [x]. In diesem bilden die Vielfachen von x n 1 ein Hauptideal, welches mit (x n 1) bezeichnet wird. Im Restklassenring F q [x]/(x n 1) mit der Addition bzw. Multiplikation modulo x n 1 bildet die Menge R n (F q ) := {f F q [x] deg(f) < n} ein Repräsentantensystem. Es gilt offensichtlich: Proposition F n q ist isomorph zu R n (F q ). Das liefert die eindeutige Zuordnung (a 0, a 1,..., a n 1 ) F n q a 0 + a 1 x + + a n 1 x n 1 R n (F q ). Diese Zuordnung ermöglicht es, jeden Code C als einen Teilmenge von R n (F q ) aufzufassen. Satz Ein Code C ist genau dann zyklisch, wenn C ein Ideal in R n (F q ) ist. Beweis. Ein zyklischer Shift (c 0,..., c n 1 ) (c n 1, c 0,..., c n 2 ) entspricht in Polynomdarstellung der Multiplikation mit x, konkret ist (c 0 + c 1 x + + c n 1 x n 1 )x = = c 0 x + + c n 1 x n c n 1 + c 0 x + + c n 2 x n 1 (mod (x n 1)). 29

38 3 Konstruktionen der Golay Codes Ist C zyklisch, so ist nach Definition mit jedem Codewort c C auch jeder zyklische Shift von c ein Codewort, was in Polynomdarstellung bedeutet: c(x) C x i c(x) C für i = 0,..., n 1. Somit ist, da C linear ist, auch a(x)c(x) C für jedes Polynom a(x). Also ist C ein Ideal in R n (F q ). Ist umgekehrt C ein Ideal in R n (F q ), so ist mit jedem Codewort c C auch xc(x) C. Also ist C zyklisch. Satz Es sei C ein zyklischer [n, k, d] Code über F q. Dann gilt: (i) Es gibt ein eindeutig bestimmtes normiertes Polynom g(x) von minimalem Grad in C. (ii) c(x) C g(x) c(x) (iii) g(x) (x n 1) (iv) deg(g(x)) = n k (v) Die Menge {g(x)x i i = 0,..., k 1} bildet eine Basis von C über F q. Beweis. (i) Aus der Algebra ist bekannt, dass R n (F q ) ein Hauptidealbereich ist. Folglich ist jeder zyklische Code ein Hauptideal in R n (F q ) und für dieses existiert ein erzeugendes Element g(x) von minimalem Grad. Durch Normieren wird dieses erzeugende Polynom eindeutig. (ii) Das folgt aus der Tatsache, dass g(x) ein erzeugendes Element von C ist. (iii) Man schreibe x n 1 = g(x)h(x) + r(x) mit deg(r(x)) < deg(g(x)). In R n (F q ) gilt x n 1 = 0, weshalb r(x) = g(x)h(x) gilt, also nach dem vorigen Punkt r(x) C. Das ist aber ein Widerspruch zur Minimalität des Grades von g(x) in C. (iv) deg(g(x)) = dim(r n (F q )/C) = dim(r n (F q )) dim(c) = n k. (v) Die Polynome {g(x)x i i = 0,..., k 1} sind linear unabhängig über F q, da sie alle verschiedenen Grad kleiner oder gleich n haben. Nun sind dies gerade k = dim(c) Polynome, woraus die Behauptung folgt. Definition Es sei C ein zyklischer [n, k, d] Code über F q. Dann nennt man das nach (3.1.4) eindeutig bestimmte Polynom g(x) das Erzeugerpolynom von C (generator polynomial). Das Polynom h(x) = xn 1 heißt das Kontrollpolynom von C (check g(x) polynomial). 30

39 3.1 Die Golay Codes als Zyklische Codes Proposition Es sei C ein zyklischer [n, k, d] Code über F q, g(x) = g g n k x n k das Erzeugerpolynom von C, h(x) = h h k x k sein Kontrollpolynom. Dann ist durch G = eine Erzeugermatrix von C gegeben, und H = liefert eine Kontrollmatrix von C. g 0 g 1... g n k g 0... g n k 1 g n k g 0 g 1 g 2... g n k h k h k 1... h h k... h 1 h h k h k 1 h k 2... h 0 Beweis. Der erste Teil folgt direkt aus dem letzten Punkt des vorigen Satzes (3.1.4 (5)). Um den zweiten Teil zu zeigen, genügt es nach (1.4.4) nachzuweisen, dass GH T = O und rg(h) = n k gilt. x n 1 = g(x)h(x) = n n k ( g j h i j )x i i=0 j=0 wobei h j := 0 falls j / {0,..., k}. Durch Koeffizientenvergleich erhält man: n k g j h i j = 0 i = 1,..., n 1 j=0 g 0 h 0 = 1 Diese Summen sind aber gerade die Einträge der Matrix GH T, also ist GH T = O. Außerdem tritt in H T eine (n k) (n k) Teilmatrix der Gestalt h 0 h h h k h 0 auf. Das ist eine obere Dreiecksmatrix mit Diagonaleintrag h 0. Da g 0 h 0 = 1, muss h 0 0 gelten. Also hat die betrachtete Teilmatrix Rang n k, und somit auch H. Bemerkung Hieraus folgt sofort, dass C := {c(x) c(x)h(x) = 0}. 31

40 3 Konstruktionen der Golay Codes Korollar Es sei C ein zyklischer [n, k, d] Code mit Erzeugerpolynom g(x) und Kontrollpolynom h(x). Dann ist g (x) := 1 h(0) h (x) das Erzeugerpolynom von C und C ist äquivalent zum von h(c) erzeugten Code. Hierbei ist h (x) := x n h( 1 x ) das zu h(x) duale Polynom. Beweis. Nach der vorigen Proposition (3.1.6) ist die Matrix H, die gegeben ist durch h k... h h 0... h k H := =......, h k... h h 0... h k eine Kontrollmatrix von C, also nach (1.4.3) eine Erzeugermatrix von C. Also ist h (x) ein Vielfaches des Erzeugerpolynoms von C. Da das Erzeugerpolynom normiert sein muss, ist g (x) das gesuchte Polynom. H ist eine Erzeugermatrix von C. Ordnet man die Spalten von H in umgekehrter Reihenfolge an, so erhält man eine Erzeugermatrix eines zu C äquivalenten Codes. Diese Matrix erzeugt gerade den von h(x) erzeugten Code. Ein großer Vorteil zyklischer Codes ist das besonders einfache Codieren und Decodieren. Um ein Wort a(x) zu codieren muss es nämlich lediglich mit dem Erzeugerpolynom g(x) multipliziert werden. Es ist offensichtlich, dass eine Polynommultiplikation wesentlich effizienter umzusetzen ist als eine Vektor-Matrix-Multiplikation. Auf konkrete Decodieralgorithmen wird im Kapitel 5 eingegangen. Es sei in Erinnerung gerufen, dass in F 2 die Gleichheit 1 = 1 gilt. Weiters ist x = (x + 1)(x 11 + x 9 + x 7 + x 6 + x 5 + x + 1)(x 11 + x 10 + x 6 + x 5 + x 4 + x 2 + 1). Die beiden Polynome vom Grad 11 erzeugen jeweils einen zyklischen [23, 12, d] Code, wobei später in (3.3.7) gezeigt wird, dass d = 7 ist. Aufgrund der in (4.1.2) gezeigten Eindeutigkeit des binären Golay Codes sind beide Codes äquivalent zu G 23. Es ist x 11 1 = (x 1)(x 5 x 3 + x 2 x 1)(x 5 + x 4 x 3 + x 2 1). Die beiden Polynome vom Grad 5 erzeugen beide einen zyklischen [11, 6, d] Code, wobei ebenfalls später in (3.3.7) gezeigt wird, dass d = 5 ist und daher nach (4.2.10) beide Codes äquivalent zu G 11 sind. Es gilt also: Satz Der binäre Golay Code G 23 ist zyklisch und wird von erzeugt. Es ist g 23 (x) := x 11 + x 9 + x 7 + x 6 + x 5 + x + 1 h 23 (x) := (x + 1)(x 11 + x 10 + x 6 + x 5 + x 4 + x 2 + 1) 32

41 3.2 Die Golay Codes als BCH Codes das Kontrollpolynom von G 23. Analog ist der ternäre Golay Code G 11 zyklisch und wird von g 11 (x) := x 5 x 3 + x 2 x 1 erzeugt. Sein Kontrollpolynom ist h 11 (x) := (x 1)(x 5 + x 4 x 3 + x 2 1). Bemerkung Im obigen Satz können die beiden Polynome vom Grad 11 bzw. Grad 5 ausgetauscht werden. Welches der Polynome als Erzeugerpolynom gewählt wird, ist irrelevant, die jeweils erzeugten Codes sind äquivalent. Bemerkung Aus (3.1.6) folgt, dass man mit Hilfe des Erzeugerpolynoms g 23 (x) eine Erzeugermatrix für den binären Golay Code G 23 durch G (z) 23 := , sowie mit Hilfe des Kontrollpolynoms h 23 (x) eine Kontrollmatrix durch H (z) 23 := erhält. Analog sind Erzeuger- und Kontrollmatrix für den ternären Golay Code G 11 durch G (z) 11 := gegeben. H (z) 11 := Die Golay Codes als BCH Codes Eine wichtige Rolle nehmen die Nullstellen des Erzeugerpolynoms g(x) eines zyklischen [n, k, d] Codes C über F q ein. Es sei m die multiplikative Ordnung von q modulo n, also m minimal, sodass q m 1 (mod n). Dann liegen die n-ten Einheitswurzeln in F q m. Sei α eine primitive n-te Einheitswurzel. Dann gilt bekanntlich n 1 x n 1 = (x α i ). i=0 Es sind also die Potenzen von α gerade die Nullstellen des Polynoms x n 1. Da g(x) ein Teiler von x n 1 ist, sind auch alle Nullstellen von g(x) Potenzen von α. 33

42 3 Konstruktionen der Golay Codes Proposition (BCH-Schranke) Es sei α eine primitive n-te Einheitswurzel über F q. Weiters sei l 0, 2 δ n und r N mit ggt(n, r) = 1. Sind α l, α l+r,..., α l+(δ 2)r Nullstellen des Erzeugerpolynoms g(x) eines zyklischen [n, k, d] Codes über F q, so gilt: d δ Beweis. (siehe [7], S ). Da g(x) ein Teiler von c(x) für jedes Codewort c(x) C ist, ist jede Nullstelle von g(x) auch eine von c(x). Also gilt c(α l ) = c(α l+r ) = = c(α l+(δ 2)r ) = 0. Demnach erfüllt die Matrix H := 1 α l α 2l... α (n 1)l 1 α l+r α 2(l+r)... α (n 1)(l+r) α l+(δ 2)r α 2(l+(δ 2)r)... α (n 1)(l+(δ 2)r) die Gleichung H c T = 0 (dabei muss H nicht eine volle Kontrollmatrix von C sein!). Es bleibt zu zeigen, dass je δ 1 oder weniger Spalten von H linear unabhängig über F q m sind. Sei dazu c(x) C ein Codewort mit w := wt(c(x)) δ 1, also c i 0 genau dann wenn i {a 1,..., a w }. H c T = 0 impliziert dann α a 1l... α awl α a 1(l+r)... α aw(l+r)... α a 1(l+(w 1)r)... α aw(l+(w 1)r) c a1. c aw = 0. Also muss die Determinante der Matrix auf der linken Seite 0 sein. Diese Determinante ist jedoch α (a 1+ +a w)l mal die Determinante von α a 1... α aw..., α a 1(w 1)... α aw(w 1) welche eine Vandermonde Determinante und somit von 0 verschieden ist. Das ist ein Widerspruch. Definition Ein zyklischer Code C der Länge n über F q heißt ein BCH Code von konstruierter Distanz δ (BCH code with designed distance δ), falls es ein l 0 gibt, sodass das Erzeugerpolynom g(x) von C durch g(x) = kgv(m (l) (x), m (l+1) (x),..., m (l+δ 2) (x)) gegeben ist, wobei m (i) (x) das Minimalpolynom von α i über F q und α eine primitive n-te Einheitswurzel über F q ist. Korollar Die Minimaldistanz d eines BCH Codes von konstruierter Distanz δ erfüllt d δ. Beweis. Setze in der vorigen Proposition r = 1. 34

43 3.3 Die Golay Codes als Quadratische Reste Codes Proposition Es sei C ein BCH Code der Länge n zur konstruierten Distanz δ, α die zur Definition von C verwendete primitive n-te Einheitswurzel über F q. Dann ist 1 α l α 2l... α (n 1)l H := 1 α l+1 α 2(l+1)... α (n 1)(l+1) α l+δ 2 α 2(l+δ 2)... α (n 1)(l+δ 2) eine Kontrollmatrix für C. Hierbei ist jeder Eintrag durch eine Spalte aus m Elementen zu ersetzen, die die jeweilige Darstellung des Elements aus F q m über F q ist. Beweis. (siehe [7], S ). Analog zum Beginn des Beweises der BCH Schranke (3.2.1) ist ein Wort c(x) genau dann ein Codewort, wenn es an allen Nullstellen des Erzeugerpolynoms ebenfalls verschwindet. Diese Nullstellen sind aber gerade α l,α l+1,...,α l+δ 2. Satz Die Golay Codes G 23 bzw. G 11 sind BCH Codes zur konstruierten Distanz δ = 5 bzw. δ = 4. Beweis. Es sei α eine primitive 23. Einheitswurzel über F 2. Die multiplikative Ordnung von 2 modulo 23 ist 11, also erzeugt α die multiplikative Gruppe F 2. α besitzt 11 demnach ein Minimalpolynom vom Grad 11 über F 2. Man wähle α so, dass g 23 (x) das Minimalpolynom ist. Aus der Algebra ist bekannt, dass in F q k ein primitives Element β und β q das selbe Minimalpolynom über F q haben. Also haben in unserem Fall α, α 2, α 4, α 8, α 16, α 32 = α 9, α 18, α 36 = α 13, α 26 = α 3, α 6, α 12 das selbe Minimalpolynom über F 2. Da das gerade 11 Stück sind, müssen dies schon alle Nullstellen von g 23 (x) sein. Die längste arithmetische Progression in den Potenzen von α unter den Nullstellen von g 23 (x) hat Länge 4 (zum Beispiel α, α 2, α 3 und α 4 ). Es ist nun also kgv(m (1) (x), m (2) (x), m (3) (x), m (4) (x)) = = kgv(g 23 (x), g 23 (x), g 23 (x), g 23 (x)) = g 23 (x), was zeigt, dass G 23 ein BCH Code zur konstruierten Distanz δ = 5 ist.([7], S. 205) Analog wählt man eine primitive 11. Einheitswurzel α über F 3, die dann in F 3 liegt, da = 1 (mod 11), sodass g 11 (x) sein Minimalpolynom ist. Dann haben α 1, α 3, α 4, α 5, α 9 wieder das selbe Minimalpolynom g 11 (x) über F 3, also ist G 11 ein BCH Code zur konstruierten Distanz δ = 4. Bemerkung Die Golay Codes sind Beispiele dafür, dass die BCH Schranke (3.2.1) auch für BCH Codes nicht exakt angenommen werden muss. 3.3 Die Golay Codes als Quadratische Reste Codes Es sei n eine ungerade Primzahl. Die Menge Q n bezeichne die Menge aller quadratischen Reste modulo n, das heißt { ( ) } a Q n := a F n = 1, n 35

44 3 Konstruktionen der Golay Codes die Menge N n bezeichne die Menge der quadratischen Nichtreste modulo n, also { ( ) } b N n := b F n = 1. n Hierbei sei das Legendre Symbol in Erinnerung gerufen, das definiert ist durch ( ) a = n 1 x 2 = a (mod n) ist lösbar 1 x 2 = a (mod n) ist nicht lösbar 0 n a Es sei nun q Q n eine Primzahl, α eine primitive n-te Einheitswurzel in einem Erweiterungskörper F q m von F q. Dann gilt: Proposition Die Koeffizienten der Polynome q(x) := i Q n (x α i ) und n(x) := liegen in F q. Beweis. Es ist also ist ( ) qi = n ( q n )( ) i = n ( ) i, n j N n (x α j ) Q n = {qa a Q n } und N n = {qb b N n }. Daher sind q(x) und n(x) normierte, separable Polynome aus F q m[x], deren Nullstellen von x x q permutiert werden. Die beiden Polynome sind demnach invariant unter Anwendung des Frobenius Automorphismus, welcher die Galoisgruppe Gal(F q m : F q ) erzeugt. Also sind q(x) und n(x) Polynome über dem Fixkörper von Gal(F q m : F q ), welcher gerade F q ist (nach dem Hauptsatz der Galoistheorie). Definition Es sei n eine ungerade Primzahl, q Q n eine beliebige von n verschiedene Primzahl. Dann heißen die von q(x), (x 1)q(x), n(x), (x 1)n(x) erzeugten zyklischen Codes Q, Q, N, N Quadratische Reste Codes. Die folgenden beiden Resultate stammen aus [17], S Proposition Es gilt (i) dim(q) = dim(n ) = n+1 2 (ii) dim(q) = dim(n ) = n 1 2 (iii) Q und N sind äquivalent (iv) Q und N sind äquivalent 36

45 3.3 Die Golay Codes als Quadratische Reste Codes Beweis. (i) deg(q(x)) = deg(n(x)) = n 1, da Q 2 n = N n = n 1 n 1. Also ist dim(q) = n = 2 2 n+1 = dim(n ). 2 (ii) deg((x 1)q(x)) = deg((x 1)n(x)) = n+1 n+1, also dim(q) = n = n 1 = dim(n ) (iii) Es sei b N n. Dann ist ( bi n) = ( b n)( i n) = ( i n). Also ist die Abbildung i bi (mod n) eine Permutation von F n, die Q n mit N n vertauscht und 0 als Fixpunkt hat. Demnach sind Q und N äquivalent. (iv) Analog zu (3). Proposition Es sei n 1 (mod 4) und Q der quadratische Reste Code der Länge n über F q. Dann gilt (i) Q = Q (ii) ˆQ = ˆQ Beweis. (i) Es sei q(x) das Erzeugerpolynom von Q. Dann ist (x 1)n(x) das Kontrollpolynom von Q. Nach (3.1.8) gilt für das Erzeugerpolynom q (x) von Q : ( ) ( ) q (x) = n(0) 1 x n n x x 1 = n(0) 1 (1 α j x)(1 x). j N n Aus dem Satz von Vieta folgt j N n α j = n(0) 1, also ist q (x) = (α j x)(1 x). j N n Aus dem 1. Ergänzungssatz zum quadratischen Reziprozitätsgesetzes folgt ( ) 1 n = 1, da n 1 (mod 4) gilt. Daher sind die quadratischen Reste modulo n gerade die negativen quadratischen Nichtreste. Da es eine ungerade Anzahl quadratischer Reste modulo n gibt, gilt: q (x) = (α i x)(1 x) = (x α i )(x 1) = q(x)(x 1). i Q n i Q n Dieses Polynom ist gerade das Erzeugerpolynom von Q. 37

46 3 Konstruktionen der Golay Codes (ii) Es sei G eine Erzeugermatrix von Q. Es gilt n 1 x i = xn 1 x 1 = q(x)n(x). i=0 Das zum Wort 1 = (1,..., 1) gehörige Polynom ist gerade n 1 i=0 xi, welches von q(x), nicht jedoch von (x 1) geteilt wird. Daher ist 1 Q \ Q. Demnach ist ( G ) eine Erzeugermatrix von Q. Es sei Ĝ := G γ. Nach dem ersten Teil der Proposition ist Q = Q, also gilt Q = (Q ) = Q Q. Daher ist jede Zeile von G orthogonal zu sich selbst und den anderen Zeilen. Außerdem ist jede solche Zeile orthogonal zu 1, da 1 Q = Q. Demnach ist Ĝ eine Erzeugermatrix von ˆQ, wenn man γ entsprechend wählt. Es ist nun jede Zeile von Ĝ orthogonal zu allen Zeilen von Ĝ, und somit ˆQ ( ˆQ). Da nun aber offensichtlich Ĝ den Rang n+1 hat, gilt dim( ˆQ) = n+1. Weiters gilt dim( ˆQ ) = n+1 n+1 = n Somit folgt ˆQ = ˆQ. Die Erweiterung eines Quadratischen Reste Codes der Länge n 1 (mod 4) ist folglich immer selbstdual. Proposition Es sei d die Minimaldistanz von Q oder N. Dann gilt: (i) d 2 n (ii) Ist n 1 (mod 4), so gilt d 2 d + 1 n. Beweis. (siehe [7], S. 483). (i) Sei dazu c(x) Q ein Codewort von minimalem positivem Gewicht d in Q. Ist b N n, so ist c (x) = c(x b ) ein Wort von minimalem positivem Gewicht in N. Dann ist c(x)c (x) Q N, also ein Vielfaches von q(x)n(x) = n 1 n 1 (x α i ) (x α j ) = (x α k ) = x k. i Q n j N n Daher hat c(x)c (x) Gewicht n. Da c(x) Gewicht d hat, hat c(x)c (x) höchstens d 2 Koeffizienten ungleich Null, also gilt d 2 n. k=1 k=0 38

47 3.3 Die Golay Codes als Quadratische Reste Codes (ii) Es ist wieder 1 N n, da n 1 (mod 4). Im Produkt c(x)c(x 1 ) sind d Terme von x unabhängig, also hat es höchstens Gewicht d 2 d + 1. Nun kommen wir zurück zu den von g 23 (x) bzw. g 11 (x) erzeugten zyklischen Codes. Satz Der von g 23 (x) erzeugte zyklische Code ist der binäre Quadratische Reste Code der Länge 23. Der von g 11 (x) erzeugte Code ist der ternäre Quadratische Reste Code der Länge 11. Beweis. Man sieht leicht, dass Q 23 = {1, 2, 3, 4, 6, 8, 9, 12, 13, 16, 18} und Q 11 = {1, 3, 4, 5, 9}. Im Beweis von (3.2.5) wurde gezeigt, dass g 23 (x) = i Q 23 (x α i ) und g 11 (x) = i Q 11 (x α i ). Also ist der von g 23 (x) erzeugte Code der binäre Quadratische Reste Code der Länge 23 und der von g 11 (x) erzeugte Code der ternäre Quadratische Reste Code der Länge 11. In Satz wurde behauptet, dass diese beiden Codes äquivalent zu den beiden perfekten Golay Codes G 23 bzw. G 11 sind. Um den Beweis dieses Satzes zu vervollständigen muss noch die Minimaldistanz der beiden zyklischen Codes überprüft werden. Satz Die Minimaldistanzen der von g 23 (x) bzw. g 11 (x) erzeugten zyklischen Codes sind durch d 23 = 7 bzw. d 11 = 5 gegeben. Beweis. Es seien C 23 bzw. C 11 die von g 23 (x) bzw. g 11 (x) erzeugten zyklischen Codes, C 24 bzw. C 12 die jeweiligen Erweiterungen mit Minimaldistanzen d 24 bzw. d 12. Nach (3.3.6) ist C 23 ein Quadratischer Reste Code, daher gilt nach (3.3.5 (ii)) für seine Minimaldistanz d 2 23 d , also d Daher erfüllt auch die Minimaldistanz der Erweiterung C 24 die Ungleichung d Weiters ist nach (3.3.4) C 24 selbstdual. In (3.1.11) wurde eine Erzeugermatrix für C 23 angegeben, die durch Anhängen eines Kontrollsymbols zu einer Erzeugermatrix von C 24 gemacht werden kann. Die Zeilen dieser Matrix haben alle ein durch 4 teilbares Gewicht, und da die Zeilen der Erzeugermatrix eine Basis für den Code bilden, ist C 24 nach (2.2.3) 4-dividierbar. Daher ist d Aus der Hamming Schranke folgt d 24 = 8. Da die erwähnte Erzeugermatrix von C 23 Zeilen vom Gewicht 7 enthält, ist d 23 = 7. Die Minimaldistanz von C 11, und damit auch jene von C 12, ist nach (3.3.5 (ii)) mindestens 4. Da C 12 nach (3.3.4) selbstdual ist, ist er 3-dividierbar (dazu betrachte man den Beweis von (2.3.2)). Also muss d 12 6, und nach der Hamming Schranke wieder d 12 = 6 und analog zum binären Fall d 11 = 5 gelten. Das liefert nun auch den folgenden Satz. Satz Der binäre Golay Code G 23 ist äquivalent zum binären Quadratischen Reste Code der Länge 23. Der ternäre Golay Code G 11 ist äquivalent zum ternären Quadratischen Reste Code der Länge

48 3 Konstruktionen der Golay Codes 3.4 Weitere Konstruktionen von G 24 Eine der Besonderheiten des erweiterten binären Golay Codes G 24 ist, dass er auf sehr viele verschiedene Arten konstruiert werden kann. Hierbei wird immer ein binärer [24, 12, 8] Code konstruiert, der aufgrund der Eindeutigkeit von G 24, die später in (4.1.3) gezeigt wird, äquivalent zu diesem ist. Konstruktion über Designs Die Designtheorie ist ein interessantes Teilgebiet der Kombinatorik. Designs können als Verallgemeinerungen von Graphen angesehen werden. Für einen tieferen Einblick in dieses Gebiet empfiehlt sich zum Beispiel [5] oder [14]. Aus [5], S. 3-4 stammen auch die folgenden grundlegenden Resultate. Definition Es sei S eine Menge mit v Elementen und B eine Teilmenge der Potenzmenge von S, für die gilt: (i) Jede Menge B B besitzt genau k Elemente, also B = k B B. (ii) Jede t-elementige Teilmenge T von S ist in genau λ Mengen B B enthalten. Dann heißt das Paar (S, B) ein t (v, k, λ) Design (design). Die Elemente von S heißen Punkte (points), die Elemente von B Blöcke (blocks) des Designs. Ist λ = 1, so spricht man von einem Steiner System (Steiner system). Proposition Es sei λ(u) die Anzahl der Blöcke eines t (v, k, λ) Designs, die eine gegebene Menge U S mit U = u enthalten, wobei 0 u t. Dann gilt ( ) ( ) k u v u λ(u) = λ. t u t u Beweis. λ(u) zählt die Anzahl der Blöcke, die U enthalten. Für jeden solchen Block gibt es ( k u t u) Möglichkeiten, U zu einer t-elementigen Menge fortzusetzen. Die linke Seite zählt also die Anzahl der Blöcke, die eine Teilmenge von S enthalten, welche t Elemente besitzt, von welchen aber nur u vorgegeben sind. Für solche t-elementige Mengen gibt es ( v u t u) Möglichkeiten. Jede dieser Mengen ist nach Definition des Designs in genau λ Blöcken enthalten. Dies beweist die Behauptung. Es folgt insbesondere, dass λ(u) nicht direkt von U, sondern nur von U abhängt. Daher schreibt man dafür kurz λ u. Korollar Jedes t (v, k, λ) Design ist auch ein s (v, k, λ ) Design für 0 s t. Man bezeichnet üblicherweise λ 0, also die Gesamtanzahl der Blöcke des Designs, mit b, sowie λ 1, also die Anzahl der Blöcke, die einen gegebenen Punkt enthalten, mit r. Proposition Für ein t (v, k, λ) Design gilt bk = vr 40

49 3.4 Weitere Konstruktionen von G 24 Beweis. Nach (3.4.3) ist das gegebene Design auch ein 1 (v, k, r) Design. Setzt man also in erwähnter Proposition U =, so erhält man ( ) ( ) k v b = r. 1 1 Ein Design kann auch durch eine Matrix beschrieben werden. Definition Es sei (S, B) ein t (v, k, λ) Design mit den Punkten s 1,..., s v und den Blöcken B 1,..., B b. Die b v Matrix A mit den Einträgen { 1 falls sj B a ij := i 0 falls s j / B i heißt Inzidenzmatrix (incidence matrix) des Designs. Jede Zeile der Inzidenzmatrix entspricht also der charakteristischen Funktion eines Blocks. Die Inzidenzmatrix eines Designs hängt natürlich von der Nummerierung der Punkte und Blöcke ab. Verschiedene Nummerierungen verändern jedoch die Eigenschaften des Designs nicht und daher werden Designs, die sich nur in der Nummerierung der Punkte und Blöcke unterscheiden, miteinander identifiziert (allgemein identifiziert man Designs miteinander, wenn es eine bijektive Abbildung zwischen den Punkten der Designs gibt, die Blöcke des einen Designs eins zu eins in Blöcke des anderen überführt). Im Spezialfall eines 2 (v, k, λ) Designs lassen sich die Bedingungen an ein Design mit Hilfe seiner Inzidenzmatrix A einfach umformulieren. Die Tatsache, dass jeder Block genau k Elemente enthält entspricht offensichtlich der Gleichung AJ = kj, wobei J jene Matrix ist, deren Einträge alle 1 sind. Da jeder Punkt in genau r Blöcken liegt, gilt JA = rj. Die Bedingung, dass jedes Paar von Punkten in genau λ Blöcken liegt, wird zu Z := A T A = (r λ)i + λj. Das sieht man folgendermaßen: Der Diagonaleintrag z ii von Z ergibt sich aus dem inneren Produkt der i-ten Zeile von A T, also der i-ten Spalte von A, mit sich selbst und kann daher als die Anzahl der Blöcke aufgefasst werden, die den Punkt s i enthalten. Diese ist nach (3.4.2) vom gewählten Punkt unabhängig und es gilt daher z ii = r. Der Eintrag z ij geht aus dem inneren Produkt der Zeilen i und j von A T, also der Spalten i und j von A, hervor. Dieses zählt, wie viele Blöcke sowohl s i als auch s j enthalten. Diese Anzahl ist wieder nach (3.4.2) unabhängig von der Wahl der Punkte und ist nach Definition des Designs gleich λ. Also ist z ij = λ für i = 1,..., v, j = 1,..., v und i j. ([5], S. 4) Ist b = v, so gilt nach (3.4.4) auch r = k. Also ist nach den eben beschriebenen Gleichungen für die Inzidenzmatrix eines solchen 2 (v, k, λ) Designs AJ = JA. Daher kommutiert A mit (r λ)i + λj, also auch mit ((r λ)i + λj)a 1 = A T. Es folgt AA T = (r λ)i+λj. Die Einträge dieser Produktmatrix gehen aus den inneren Produkten einer Zeile von A mit einer weiteren hervor. Dass in der Diagonale gerade r steht bedeutet, dass jeder Block genau r = k Punkte enthält. Die übrigen Einträge zählen die Anzahl der Punkte, die je zwei Blöcke gemeinsam haben, welche folglich gerade λ ist. ([5], S. 5) Mit Hilfe eines Designs lässt sich der erweiterte binäre Golay Code G 24 erzeugen. Es sei dazu A die Inzidenzmatrix eines 2 (11, 6, 3) Designs. Man überprüft leicht per Hand, 41

50 3 Konstruktionen der Golay Codes dass dieses Design eindeutig ist. Setzt man in (3.4.2) U =, so erhält man ( 11 ) 2 b = 3 ( 6 ) = = Weiters folgt aus (3.4.4), dass r = 11 6 = 6. Die obigen Überlegungen liefern somit 11 AT A = 3I + 3J. Fasst man A als eine Matrix über F 2 auf, so erhält man für ihre Gram-Matrix A T A = I + J. Da eine Matrix denselben Rang wie ihre Gram-Matrix hat, gilt rg(a) = 10. Der einzige Vektor x 0, der xa = O erfüllt, ist x = 1. Da jeder Block des Designs genau 6 Punkte enthält, hat jede Zeile von A Gewicht 6. Nach den gerade hergeleiteten Eigenschaften von 2 (v, k, λ) Designs mit b = v haben je zwei Blöcke gerade λ = 3 Punkte gemeinsam. Das bedeutet, dass die Summe zweier Zeilen von A wieder Gewicht 6 hat. Weiters ist aufgrund der Rangeigenschaft von A die Summe von drei oder vier Zeilen nicht 0. Nun betrachte man die Matrix G = (I 12 P ) über F 2, wobei P := Dann hat jede Zeile von G ein Gewicht, das durch 4 teilbar ist. Man sieht leicht, dass je zwei Zeilen von G eine gerade Anzahl von Einsen gemeinsam haben, also ist das innere Produkt je zweier Zeilen immer 0. Analog zum Beweis von (2.2.1) sieht man, dass C selbstdual ist. Man verfährt schließlich wie im Beweis von (2.2.4) um zu zeigen, dass der von G erzeugte Code C 4-dividierbar ist. Das wiederum ermöglicht es, analog zum Beweis von (2.2.6) zu zeigen, dass C Minimaldistanz 8 hat. Es gilt daher: Satz Der von G erzeugte binäre Code ist ein [24, 12, 8] Code. Dieser ist aufgrund der Eindeutigkeit des erweiterten binären Golay Codes (siehe (4.1.3)) äquivalent zu diesem. Der obige Beweise folgt [15], S. 48. Die Konstruktion nach R.J. Turyn Es sei H der binäre [7, 4, 3] Hamming Code (siehe (1.6)). Man überprüft leicht, dass dieser durch 0, die sieben zyklischen Shifts von (1, 1, 0, 1, 0, 0, 0) sowie den Komplementen dieser acht Worte gegeben ist. Weiters bestehe H aus jenen Worten, die aus den Worten von H hervorgehen, indem die Reihenfolge der Komponenten umgekehrt wird. Man sieht sofort, dass die Erweiterungen H und H selbstduale [8, 4, 4] Codes sind. Nach (2.2.3) sind beide 4-dividierbar. Außerdem gilt offensichtlich H H = {0, 1}. Nun betrachtet man den binären Code C der Länge 24, der gegeben ist durch A. C := {(a + x, b + x, a + b + x) a H, b H, x H }. Lässt man a und b eine Basis von H, sowie x eine Basis von H durchlaufen, so erkennt man, dass die Worte (a, 0, a), (0, b, b) und (x, x, x) eine Basis von C bilden. Also hat C Dimension

51 3.4 Weitere Konstruktionen von G 24 Weiters sind alle Basisvektoren orthogonal zu allen anderen solchen und zu sich selbst, also ist C selbstdual. Da alle Basisvektoren 4-dividierbar sind, ist C nach (2.2.3) 4- dividierbar. ([15], S. 49) Zur Überprüfung der Minimaldistanz sei c = (a+x, b+x, a+b+x) C ein Codewort mit Gewicht größer als 0. Da die zugrunde liegenden Hamming Codes 4-dividierbar sind, haben a, b und x Gewicht 0, 4 oder 8. Hat nur einer der Vektoren a, b, x Gewicht 4, so hat c jedenfalls Gewicht mindestens 8, denn dann sind die beiden anderen Vektoren entweder gleich 0 oder 1. Haben zwei dieser drei Vektoren Gewicht 4, so hat ihre Summe mindestens Gewicht 2, und das dritte Wort wieder Gewicht 0 oder 8. Dann hat c wieder Gewicht größer oder gleich 8. Es bleibt der dritte Fall, nämlich dass a, b und x Gewicht 4 haben. Angenommen a = b, so hat c offensichtlich wieder mindestens Gewicht 8. a = x oder b = x sind nicht möglich, da ja Gewicht 4 vorausgesetzt wurde und H H = {0, 1} gilt. Ist also letztlich a b, so gilt wt(a + b) 6, da a, b H und dieser Code Minimaldistanz 4 hat. Also hat auch in diesem Fall c mindestens Gewicht 8 und es ist gezeigt: Satz Der eben konstruierte Code C ist ein binärer [24, 12, 8] Code und daher nach (4.1.3) äquivalent zum erweiterten binären Golay Code G 24. Der hier angeführte Beweis folgt [7], S Die Konstruktion nach J.H. Conway Die Einzelheiten des folgenden Abschnittes stammen aus [20]. Es sei F 4 = {0, 1, ω, ω} der endliche Körper mit vier Elementen. Weiters sei C der Code der Länge 6 und Dimension 3 über F 4, der gegeben ist durch C := {(a, b, c, f(1), f(ω), f( ω)) a, b, c F 4 }, wobei f(x) := ax 2 + bx + c. Man überprüft leicht dass dieser Code Minimalgewicht 4 hat und keine Worte vom Gewicht 5 enthält. C heißt Hexacode. Bei jedem Codewort treten genau 0, 2 oder 6 Nullen auf. Sei dazu c = (a, b, f(0), f(1), f(ω), f( ω)) C. Ist a = b = 0, dann ist f(α) = c für alle α F 4, also treten bei c genau 2 oder 6 Nullen auf. Ist a = 0 aber b 0, dann ist f(x) = ax + b eine lineare Funktion mit genau einer Nullstelle. Also treten bei c genau 2 Nullen auf. Ist b = 0 aber a 0, dann ist f(α) = g(α) 2, wobei g(x) = a 2 x + c 2 wieder linear ist und daher genau eine Nullstelle hat. Daher treten bei c auch in diesem Fall genau 2 Nullen auf. Seien schließlich a 0 und b 0. Dann hat f(x) höchstens zwei Nullstellen. Hätte es nur eine Nullstelle in F 4, so wäre f(x) = ax 2 + bx + c = a(x α) 2, also b = 0. Das ist ein Widerspruch zur Voraussetzung. Daher treten bei c in diesem Fall genau 0 oder 2 Nullen auf. Also hat jedes Wort in C Gewicht 0, 4 oder 6. Es sei nun G ein binärer Code der Länge 24, dessen Worte durch binäre 4 6 Matrizen A über F 2 repräsentiert werden. Die Zeilen einer solchen Matrix seien a 0, a 1, a ω, a ω. Die Parität einer Zeile ist die Summe ihrer Einträge in F 2, die Auswertung einer Matrix A ist gegeben durch a 1 + ωa ω + ωa ω. Eine Matrix A gehöre genau dann zu G, wenn folgende Bedingungen erfüllt sind: (i) Jede Spalte von A hat die selbe Parität wie die erste Zeile a 0 von A. 43

52 3 Konstruktionen der Golay Codes (ii) Die Auswertung von A liegt in C, also a 1 + ωa ω + ωa ω C. Dann ist G offensichtlich ein linearer Code. Die erste Bedingung gibt 6 lineare Bedingungen für G, während die zweite höchstens 6 weitere gibt, da die Dimension von F 6 4 \ C über F 2 gerade 6 ist. Also ist dim(g) 12. Es gilt sogar dim(g) = 12. Sei zur Bestimmung der Minimaldistanz A O C. Alle Spalten von A haben die selbe Parität. Angenommen diese Parität ist 0. Ist die Auswertung von A nicht 0, dann hat sie zumindest Gewicht 4 und somit hat A zumindest 4 Spalten, die nicht 0 sind. Daher enthält jede dieser Spalte mindestens 2 Einsen. Also ist das Gewicht von A zumindest 8. Ist die Auswertung von A jedoch 0, dann muss jede Spalte entweder nur Nullen oder nur Einsen beinhalten. Es gibt dann genau so viele Spalten bestehend aus ausschließlich Einsen, wie die erste Zeile Einsen hat. Besteht die erste Zeile ausschließlich aus Nullen, so ist A = O, was ein Widerspruch zur Voraussetzung ist. Da die erste Zeile nach Voraussetzung jedoch gerade Parität hat, gibt es mindestens zwei Spalten, die nur aus Einsen bestehen. Daher ist das Gewicht von A wieder mindestens 8. Sei nun angenommen, die Parität der ersten Zeile von A ist 1. Dann enthält jede Spalte 1 oder 3 Einsen. Somit hat A mindestens Gewicht 8 so lange nicht alle Spalten nur eine Eins enthalten. In diesem Fall hat die Auswertung von A ein ungerades Gewicht. Das widerspricht der Tatsache, dass die Worte in C nur Gewicht 0, 4 oder 6 haben können. Somit ist gezeigt, dass G Minimalgewicht 8 hat. Das liefert den folgenden Satz: Satz Der soeben konstruierte Code G ist ein [24, 12, 8] Code und daher nach (4.1.3) äquivalent zum erweiterten binären Golay Code G 24. Die lexikographische Konstruktion Eine verhältnismäßig einfache Konstruktionsmethode ist die Folgende, ebenfalls aus [20] Entnommene: Man beginnt mit 0 F Dann erzeugt man einen Code der Länge 24, indem man sukzessive das lexikographisch kleinste noch nicht verwendete Wort nimmt, das mindestens Distanz 8 zu allen bisherigen Worten hat. Das nächste Wort wäre also { }} { (0,..., 0, 1,..., 1). Nach 2 12 Schritten erhält man 1. Es ist der so konstruierte Code gerade G 24. Es gibt noch viele weitere Methoden, G 24 zu konstruieren. Erwähnt seien hier noch die der Konstruktion von Conway (3.4) zugrunde liegende Konstruktion über den Miracle Octad Generator (MOG) von R.T. Curtis, sowie jene von G. Pasquier bzw. eine weitere Konstruktion von R.T. Curtis. [20] 8 44

53 4 Die Golay Codes sind eindeutig Eine Besonderheit der Golay Codes ist, wie schon erwähnt, dass sie durch ihre Parameter eindeutig bestimmt sind. Das bedeutet, dass jeder andere lineare Code mit den Parametern eines Golay Codes schon äquivalent zu diesem ist. Die in diesem Abschnitt angegebenen Beweise für die Eindeutigkeit der Golay Codes stammen von Vera Pless (siehe [10]). 4.1 Der binäre Golay Code G 23 ist eindeutig Zum Beweis der Eindeutigkeit des binären Golay Codes benötigt man folgenden Satz aus der Designtheorie, den wir hier nicht beweisen werden (zur Definition eines Designs und eines Steiner Systems siehe (3.4.1)). Satz (Witt) Das 5 (24, 8, 1) Steiner System ist eindeutig. Genauer: Sind A, B zwei 5 (24, 8, 1) Steiner Systeme, so gibt es eine Permutation der 24 Punkte, welche die Blöcke von A in die Blöcke von B überführt. Analog gilt: Das 4 (23, 7, 1) Steiner System ist eindeutig. Der originale Satz von Witt liefert auch die Eindeutigkeit weiterer Steiner Systeme. Man findet ihn in [18] (S. 274). Satz Ist C ein binärer [23, 12, 7] Code, so ist C äquivalent zum binären Golay Code G 23. Beweis. Nach der Hamming Schranke (1.3.7) ist C perfekt. Damit ist die Gewichtsverteilung von C gegeben durch A 0 A 7 A 8 A 11 A 12 A 15 A 16 A Die übrigen Gewichte treten nicht auf, wie der Beweis von (2.2.9) zeigt. Da C Minimaldistanz 7 hat, stimmen zwei Codeworte vom Gewicht 7 an höchstens 3 Stellen miteinander überein. Außerdem wird jedes Wort vom Gewicht 4 von genau einem Wort vom Gewicht 7 überdeckt. Nun definiert man ein Design auf die folgende Weise: Die Koordinatenpositionen S := {1,..., 23} seien die Punkte des Designs, die Träger der Codeworte vom Gewicht 7 von C seien die Blöcke des Designs. Wie gerade erwähnt wird jedes Wort vom Gewicht 4 von genau einem Codewort vom Gewicht 7 überdeckt, es hat also mit genau einem Codewort vom Gewicht 7 alle 4 Stellen gemeinsam. Demnach ist das so definierte Design ein 4 (23, 7, 1) Steiner System. 45

54 4 Die Golay Codes sind eindeutig Da der Golay Code die selben Parameter wie C hat, bilden natürlich auch seine Codeworte vom Gewicht 7 ein 4 (23, 7, 1) Steiner System. Nach dem Satz von Witt (4.1.1) gibt es eine Permutation π der Koordinaten, welche die Codeworte vom Gewicht 7 von G 23 in jene vom Gewicht 7 von C überführt. In [9] findet man eine Basis für den binären Golay Code, die nur aus Codeworten vom Gewicht 7 besteht. Da die durch π gegebene lineare Abbildung eine Basis wieder in eine Basis abbildet, bildet sie G 23 in C ab. Somit sind die beiden Codes äquivalent. Satz Ist C ein binärer linearer [24, 12, 8] Code, so ist C äquivalent zum erweiterten binären Golay Code G 24. Beweis. Hierzu streicht man eine Koordinate i in C, sodass der punktierte Code C i Dimension 12 beibehält. Dann ist C i immer noch ein linearer Teilraum, nun von F 23 2, also ein [23, 12, d] Code mit d = 7 oder d = 8. Die Hamming Schranke (1.3.7) liefert d = 7 und somit ist C i nach obigem Satz (4.1.2) äquivalent zum binären Golay Code G 23. Daher hat C i die selbe Gewichtsverteilung wie G 23 (2.2.9). Aus dem Beweis von (4.1.2) folgt weiters, dass es Worte vom Gewicht 7 gibt, die den Code C i aufspannen. Da C Minimalgewicht 8 hat, muss jedes Wort vom Gewicht 7 in C i von einem Wort vom Gewicht 8 in C stammen, das an der Position i eine Eins hat. Es stammen daher alle Worte vom Gewicht 8 in C i von Worten vom Gewicht 8 in C, die an der Stelle i eine Null haben. Da C i perfekt ist, hat jedes Wort vom Gewicht 4 in F 23 2 Distanz 3 zu genau einem Codewort vom Gewicht 7 in C i. Daher wird jedes Wort vom Gewicht 5, für welches i im Träger ist, von genau einem Wort vom Gewicht 8 in C überdeckt. Jedes beliebige Wort vom Gewicht 5 in F 23 2 hat entweder Distanz 2 zu einem Codewort vom Gewicht 7 in C i oder Distanz 3 zu einem Codewort vom Gewicht 8 in C i. Daher wird jedes beliebige Wort vom Gewicht 5 in F 24 2 von genau einem Codewort vom Gewicht 8 in C überdeckt. Es bilden also die Codeworte vom Gewicht 8 in C ein 5 (24, 8, 1) Steiner System. Da C i eine Basis aus Codeworten vom Gewicht 7 besitzt, gibt es eine Basis aus Codeworten vom Gewicht 8 für C. Da auch der erweiterte binäre Golay Code G 24 das bisher gezeigte erfüllt und nach dem Satz von Witt (4.1.1) das 5 (24, 8, 1) Steiner System eindeutig ist, ist C äquivalent zu G 24 (analoge Vorgehensweise wie im Beweis des vorigen Satzes 4.1.2). 4.2 Der ternäre Golay Code G 11 ist eindeutig Es ist wesentlich schwieriger, die Eindeutigkeit des ternären Golay Codes zu zeigen, da der in diesem Fall zugrunde liegende Körper F 3 ist, also drei Elemente besitzt. Für den Beweis benötigt man einige Ergebnisse aus der endlichen Geometrie, welche hier nicht bewiesen werden. Man findet die Beweise in [10] (S ). Es sei hier V ein Vektorraum der Dimension n über dem endlichen Körper F q mit einer orthonormalen Basis. Hilfssatz Es sei v die Dimension eines maximalen selbstorthogonalen Teilraums von V. Ist n gerade, so ist v = n, falls ( 1) n 2 ein Quadrat in F 2 q ist, oder v = n 1, falls 2 ( 1) n 2 kein Quadrat in F q ist. Ist n ungerade, so ist v = n

55 4.2 Der ternäre Golay Code G 11 ist eindeutig Hilfssatz Es sei σ n,k die Anzahl der selbstorthogonalen Teilräume der Dimension k von V. Weiters sei a k := k 1=1 (qi 1). Dann gilt: 1. Fall. Ist n ungerade, so gilt σ n,k = k 1 i=0 (qn 1 2i 1) a k, (n = 2v + 1). 2. Fall. Ist n gerade und q gerade, so gilt σ n,k = (qn k 1) k 1 i=1 (qn 2i 1) a k, (n = 2v), k Fall. Ist n gerade, q ungerade und ( 1) n 2 ein Quadrat in F q, so gilt σ n,k = (qn k q n 2 k + q n 2 1) k 1 i=1 (qn 2i 1) a k, (n = 2v), k Fall. Ist n gerade, q ungerade und ( 1) n 2 kein Quadrat in F q, so gilt σ n,k = (qn k + q n 2 k q n 2 1) k 1 i=1 (qn 2i 1) a k, (n = 2v + 2). Hilfssatz Es sei σ n,v die Anzahl der maximalen selbstorthogonalen Teilräume (oder Codes) in V mit Dimension v.dann gilt: 1. Fall. Ist n ungerade, so gilt v 1 σ n,v = (q v i + 1), (n = 2v + 1). i=0 2. Fall. Ist n gerade und q gerade, so gilt v 1 σ n,v = (q v i + 1), (n = 2v). 3. Fall. Ist n gerade, q ungerade und ( 1) n 2 ein Quadrat in F q, so gilt i=1 v 1 σ n,v = 2 (q v i + 1), (n = 2v). 4. Fall. Ist n gerade, q ungerade und ( 1) n 2 kein Quadrat in F q, so gilt i=1 v 1 σ n,v = (q v+1 i + 1), (n = 2v + 2). i=0 47

56 4 Die Golay Codes sind eindeutig Weiters benötigt man die folgenden Propositionen. Proposition Es sei C ein [12, 6, 6] Code über F 3. Dann ist C selbstdual. Beweis. Sei H := (I 6 A) eine Kontrollmatrix eines zu C äquivalenten Codes C in Standardform. Da C (und damit auch C ) Minimalgewicht 6 hat, sind nach (1.2.7) je 5 Spalten von H linear unabhängig. Das liefert: (i) Keine Spalte s i von A kann Gewicht kleiner als 5 haben, denn hätte s i zum Beispiel Gewicht 4, so wäre s i gemeinsam mit den 4 entsprechenden Spalten der vorderen Hälfte von H linear abhängig. (ii) Keine zwei Spalten s i und s j vom Gewicht 5 können eine Null an der selben Stelle haben, denn sonst hätte entweder s i + s j oder s i s j Gewicht kleiner oder gleich 2 und die beiden Spalten zusammen mit den entsprechenden Spalten aus der vorderen Hälfte von H wären linear abhängig. (iii) Keine Spalte kann Gewicht 6 haben. Denn haben s i und s j Gewicht 6, so hat entweder s i + s j oder s i s j Gewicht kleiner oder gleich 3. Hat s i Gewicht 6 und s k Gewicht 5, so hat wieder entweder s i + s k oder s i s k Gewicht kleiner oder gleich 3. Die beiden Spalten zusammen mit den drei entsprechenden Spalten der vorderen Hälfte von H sind dann wieder linear abhängig. Es haben also alle Spalten s i, i = 1,..., 6, von A Gewicht 5. Nach (i) und (iii) hat jede Spalte Gewicht 5 1 (mod 3). Es sei λ ij die Anzahl der Koordinaten, in denen die Spalten s i und s j miteinander übereinstimmen (nach (ii) können diese Koordinaten nur +1 oder 1 sein). Ebenfalls nach (ii) ist 4 λ ij die Anzahl der Stellen, an denen eine der beiden Spalten eine +1, die andere eine 1 enthält. Da je fünf Spalten linear unabhängig sind, ist wt(s i +s j ) 4 und wt(s i s j ) 4. Nun ist aber wt(s i +s j ) = 2+λ ij, da an jeder Stelle der Summe, an der die beiden Spalten den selben Eintrag haben, nicht 0 steht, an jeder Stelle der Summe, an der die eine Spalte eine +1 enthält und die andere eine 1, eine 0 steht, und die beiden Stellen der Summe, an denen genau eine der beiden Spalten eine 0 enthält, wiederum nicht 0 sind. Analog sieht man, dass wt(s i s j ) = 2+(4 λ ij ) = 6 λ ij ist. Es gilt also 2 + λ ij 4 und 6 λ ij 4. Das liefert λ ij = 2. Es ist dann < s i, s j >= λ ij (4 λ ij ) = 2λ ij 4 = 0 für i j und < s i, s i >= 5 1 (mod 3). Also ist AA T = I 6. Daher gilt ( ) HH T I6 = (I 6 A) A T = I 6 I 6 = O. Daher ist nach (1.4.3) ist H eine Erzeugermatrix von (C ) = C. Da H auch eine Erzeugermatrix von C ist, ist C selbstorthogonal. Da dim(c ) = 12 6 = 6 = dim(c ) gilt, ist C = C. Offensichtlich erhält Äquivalenz die Orthogonalität, weshalb auch C selbstdual ist. Ein analoges Resultat erhält man für einen [11, 6, 5] Code. Proposition Es sei C ein [11, 6, 5] Code über F 3. Dann ist C selbstorthogonal mit Minimalgewicht 6. 48

57 4.2 Der ternäre Golay Code G 11 ist eindeutig Beweis. Auch hier betrachtet man die Kontrollmatrix H eines zu C äquivalenten Codes C, wobei nun H := (D A) mit einer nichtsingulären 5 5 Diagonalmatrix D und einer 5 6 Matrix A ist. Um zu zeigen, dass C selbstorthogonal ist, genügt es zu zeigen, dass HH T = DD T + AA T = O gilt, da ja H nach (1.4.3) eine Erzeugermatrix von C ist und Äquivalenz die Orthogonalität erhält. In F 3 gilt 1 2 = 1 und ( 1) 2 = 1, somit ist DD T = I 5. Es muss also gezeigt werden, dass AA T = I 5 gilt. Da C (und damit auch C ) Minimalgewicht 5 hat, sind nach (1.2.7) je 4 Spalten von H linear unabhängig. Daher muss jede Spalte von A zumindest Gewicht 4 haben (die Argumentation hierfür ist analog zu der im Beweis der vorigen Proposition 4.2.4). Außerdem können keine zwei Spalten von A eine Null an der selben Position haben. Also haben fünf Spalten von A Gewicht 4, und eine Spalte hat Gewicht 5. Da H = (D A) ist, kann man A durch monomiale Transformationen in folgende Gestalt bringen: a 21 0 a 23 a 24 a 25 A = (a ij ) = 1 a 31 a 32 0 a 34 a 35 1 a 41 a 42 a 43 0 a a 51 a 52 a 53 a 54 0 Es seien s i, i = 0,..., 5 die Spalten von A und z j, j = 1,..., 5 die Zeilen von A. Weiters sei λ ij für i = 0,..., 5 und j = 0,..., 5 die Anzahl der Stellen, an denen die Spalten s i und s j den selben Eintrag (ungleich 0) haben. Analog zur vorigen Proposition kann man zeigen: (i) λ 0j = 2, j = 1,..., 5 (ii) 1 λ ij 2, i j, i, j = 1,..., 5. Aussage (i) bedeutet, dass jede Spalte außer der ersten genau zwei Einträge +1, zwei Einträge 1 und einen Eintrag 0 hat. Es sei ρ ij die Anzahl der Positionen, an denen die Zeilen z i und z j den selben Eintrag haben. Es wird sich zeigen, dass ρ ij = 2 für alle i und j gilt. Dazu genügt es zu zeigen, dass ρ 12 = 2 ist, da zwei beliebige Zeilen so an die ersten beiden Stellen gebracht werden können, dass ein zu C äquivalenter Code mit einer Erzeugermatrix H = (D A ) in der selben Form entsteht. Da offensichtlich 1 ρ 12 4 gilt, müssen die Möglichkeiten ρ 12 = 1, 3 oder 4 ausgeschlossen werden. Ist ρ 12 3, so gibt es i, j mit 3 i, j 5, sodass a 2i = a 2j = 1 gilt. Ist z k mit k 1, 2, i, j, so liefert (i), dass a ki = a kj = 1 gilt. Nun ist aber λ ij = 3, was ein Widerspruch zu (ii) ist. Ist ρ 12 = 1, so gilt a 23 = a 24 = a 25 = 1. Es sei x := a 34 { 1, 1}. Dann ist a 35 = x, da im anderen Fall λ 45 > 2 wäre, was nach (ii) nicht möglich ist. Daher muss nun a 45 = x sein, da nach (i) jede Spalte je 2 Einträge +1, zwei Einträge 1 und einen Eintrag 0 besitzt. Wiederum nach (ii) muss dann a 43 = x gelten. Weiters erhält man a 53 = x und a 54 = x. Wäre nun a 32 = x, so würde λ 24 2 implizieren, dass a 52 = x gilt. Ist x = 1, so widerspricht das (i). Ist x = 1, dann ist a 42 = x nach (i). Das liefert λ 23 = 3, was wiederum ein Widerspruch zu (ii) ist. Also muss a 32 = x sein. Dann liefert λ 25 2, dass a 42 = x gilt. Ist x = 1, so widerspricht das (i). Ist x = 1, dann liefert (i), dass a 52 = x ist. Das wiederum führt zu λ 23 = 3, was ein Widerspruch zu (ii) ist. 49

58 4 Die Golay Codes sind eindeutig Es muss also ρ 12 = 2 gelten, und damit auch ρ ij = 2 für i j und 1 i, j 5. Es ist demnach < z i, z j >= ρ ij (4 ρ ij ) = 2ρ ij 4 = 0 für i j und < z i, z i >= 5 1 (mod 3). Also ist AA T = I 5, und somit ist C selbstorthogonal. Es gilt also für jedes beliebige Codewort c C : 11 0 =< c, c >= c 2 i = i=1 i Tr(c) 1 = wt(c). Also ist C 3-dividierbar. Da C (C ) = C und C Minimaldistanz 5 hat, ist die Minimaldistanz von C gerade 6. Proposition Jeder selbstorthogonale [12, 6, 6] Code über F 3 ist äquivalent zum erweiterten ternären Golay Code G 12. Beweis. Das kann man mit einem Abzählargument zeigen. Dazu verwendet man den Hilfssatz (4.2.3). In diesem Fall ist n = 12, also gerade, und ( 1) 6 = 1, was offensichtlich ein Quadrat in F 3 ist. Daher ist nach (4.2.1) die Dimension des maximalen selbstorthogonalen Teilraums von V gerade v = 6. Somit befinden wir uns im 3. Fall von (4.2.3). Es gibt also 5 2 (3 6 i + 1) = = i=1 selbstorthogonale [12, 6, d] Codes in V über F 3. Nach (2.4.1) ist die Automorphismengruppe von G 12 durch das direkte Produkt der Mathieu Gruppe M 12 mit der Gruppe mit zwei Elementen gegeben, welches nach (2.4.2) Ordnung hat. Die Gruppe aller monomialen Abbildungen auf F 12 3 hat Ordnung !, denn jeder solchen Abbildung entspricht genau ein Produkt einer Diagonalmatrix mit Diagonaleinträgen +1 oder 1 mit einer Permutationsmatrix darstellen(siehe (1.2.9)). Die Anzahl der Codes, die äquivalent zu G 12 sind, ist gerade der Quotient dieser beiden Mächtigkeiten, also ! = Es gibt daher [12, 6, d] Codes, die nicht äquivalent zum erweiterten ternären Golay Code sind. Es wird nun gezeigt, dass das gerade die Anzahl der selbstorthogonalen [12, 6, 3] Codes in F 12 3 ist. Dazu betrachtet man zwei Fälle: 1. Fall. Zuerst zählt man all jene selbstorthogonalen [12, 6, d] Codes, die ein direktes Produkt dreier selbstorthogonaler [4, 2, d i ] Codes sind und somit Minimalgewicht 3 haben. Sei dazu σ n,k wie im Hilfssatz die Anzahl der selbstorthogonalen Teilräume der Dimension k von F n 3. Dann gibt es gerade ( 12 ) ( 8 4 4) 3 2 σ3 4,2 = solcher [12, 6, d] Codes, da die Binomialkoeffizienten die Anzahl jener Koordinatenpositionen zählen, die für den jeweiligen [4, 2, d i ] Code gewählt werden können, und der Divisor miteinbezieht, dass es nicht auf die Reihenfolge der Codes ankommt. 50

59 4.2 Der ternäre Golay Code G 11 ist eindeutig 2. Fall. Nun zählt man all jene selbstorthogonalen Codes, die vier Vektoren vom Gewicht 3 enthalten, von denen keine zwei eine gemeinsame Trägerstelle haben. Gibt man die Trägerstellen vor, so gibt es 8 mögliche Vektoren vom Gewicht 3 mit diesen Trägerstellen. Da hier Teilräume über F 3 betrachtet werden, kommen für die gegebenen Trägerstellen nur 4 Vektoren in Frage (die übrigen vier sind gerade die mit 1 multiplizierten ursprünglichen vier Vektoren). Für die Trägerstellen des ersten Vektors gibt es ( ) 12 3 Möglichkeiten, für die des zweiten Vektors ( ( 9 3), für die des dritten Vektors 6 3) womit jene des vierten Vektors festgelegt sind. Da es jedoch nicht auf die Reihenfolge der vier Vektoren ankommt, gibt es insgesamt ( 12 ) ( 9 ( 6 3 3) 3) Teilräume, die von je vier solchen Vektoren vom Gewicht 3 aufgespannt werden. Es sei U ein solcher von u 1,..., u 4 aufgespannter Teilraum. Es ist die Dimension von U gerade 12 4 = 8 und U ist die orthogonale Summe von U und einem nichtsingulären vier-dimensionalen Teilraum W. Die Anzahl der selbstorthogonalen sechs-dimensionalen Teilräume, in denen U enthalten ist, ist gerade die Anzahl der selbstorthogonalen zweidimensionalen Teilräume von W, welche 8 ist. Die Vektoren u 1,..., u 4 sowie ihre Negative u 1,..., u 4 sind die einzigen Vektoren vom Gewicht 3, die in einem selbstorthogonalen Teilraum auftreten können, der diese enthält, denn wäre ein Vektor v vom Gewicht 3 nur an ein oder zwei Stellen ungleich Null, an denen ein u i ungleich Null ist, so gäbe es ein u j (1 j 4) das an genau einer der Stellen ungleich Null ist, an denen v es ist und somit wäre < v, u j > 0. Daher müssen verschiedene Räume U verschiedene sechs-dimensionale selbstorthogonale Erweiterungen haben. Daher ist die die Anzahl solcher Codes gerade ( 12 ) ( 9 ( 6 3 3) 3) 4 3 Die beiden Fälle zusammen ergeben = = [12, 6, 3] Codes. Diese können offensichtlich nicht zu G 12 äquivalent sein. Das sind jedoch genau so viele, wie es [12, 6, d] Codes gibt, die nicht äquivalent zum erweiterten ternären Golay Code sind, da = gilt. Also ist jeder selbstorthogonale [12, 6, 6] Code über F 3 äquivalent zu G 12. Bemerkung Der Beweis zeigt insbesondere, dass jeder selbstorthogonale ternäre [12, 6, 3] Code in V unter einen der beiden erwähnten Fälle fällt. Proposition Jeder selbstorthogonale [11, 5, 6] Code über F 3 Dualen des ternären Golay Codes, also zu G11. ist äquivalent zum Beweis. Dazu betrachtet man den elf-dimensionalen Raum V eingebettet in einen zwölf-dimensionalen Raum V, indem man jedem Vektor in V eine Null anhängt. Es sei nun C ein fünf-dimensionaler Code mit Minimalgewicht 3, der in V enthalten ist. Weiters sei C der zu C duale Code in V. Dann ist C die orthogonale Summe von C und 51

60 4 Die Golay Codes sind eindeutig einem nichtsingulären zwei-dimensionalen Teilraum W. Die Anzahl der selbstorthogonalen sechs-dimensionalen Erweiterungen von C ist genau die Anzahl der selbstorthogonalen ein-dimensionalen Teilräume von W, welche 2 ist (nach [1], S. 146). Es sei nun C 1 ein fünf-dimensionaler selbstorthogonaler Teilraum mit Minimalgewicht 3, der in V enthalten und ungleich C ist. Weiters seien < C, w > und < C 1, w 1 > sechsdimensionale Erweiterungen der jeweiligen Codes in V. Da nach (4.2.1) die maximale Dimension eines selbstorthogonalen Teilraums von V nur 5 ist, können w und w 1 nicht in V liegen. Das liefert < C, w > < C 1, w 1 >, denn sonst könnte man ein c C, c / C 1 als c = c 1 + αw 1 für ein c 1 C 1 und ein α F q schreiben, was w 1 V implizieren würde. Also haben verschiedene fünf-dimensionale selbstorthogonale Teilräume in V verschiedene sechs-dimensionale selbstorthogonale Erweiterungen in V. Da das Gewicht eines jeden selbstorthogonalen Vektors in V ein Vielfaches von 3 sein muss, haben diese Erweiterungen Minimalgewicht 3, falls die ursprünglichen Räume Minimalgewicht 3 haben. Es müssen demnach zumindest doppelt so viele selbstorthogonale [12, 6, 3] Codes in V wie selbstorthogonale [11, 5, 3] Codes in V existieren. Es sei nun C ein sechs-dimensionaler selbstorthogonaler Code in V. Dann gilt dim(v + C ) + dim(v C ) = dim(v ) + dim(c ) = 17. Da V C ein selbstorthogonaler Teilraum von V ist, gilt dim(v C ) 5. Weiters ist dim(v + C ) dim(v ) = 12, also gilt dim(v C ) = 5. Nach (4.2.7) kennen wir die Form aller selbstorthogonalen [12, 6, 3] Codes in V. Demnach hat V C Minimalgewicht 3, falls C Minimalgewicht 3 hat. Also ist jeder selbstorthogonale [12, 6, 3] Code in V eine Erweiterung eines selbstorthogonalen [11, 5, 3] Codes in V. Somit ist gezeigt, dass die Anzahl der selbstorthogonalen [11, 5, 3] Codes in V genau die Hälfte der Anzahl der selbstorthogonalen [12, 6, 3] Codes in V, also gerade ist (nach dem Beweis von Proposition 4.2.6). Von nun an geht man analog zum Beweis der vorigen Proposition vor. Nach (4.2.3) ist die Anzahl der maximalen selbstorthogonalen Teilräume des elf-dimensionalen Raums V über F 3 gegeben durch σ 11,5 = 4 (3 5 i + 1) = = i=0 Die Mächtigkeit der Automorphismengruppe des ternären Golay Codes ist nach (2.4.2) gegeben durch Hingegen ist die Anzahl aller monomialen Transformationen auf F 11 3 gerade !. Es sei hier erwähnt, dass genau dieselben monomialen Abbildungen, die einen Code invariant lassen, auch dessen dualen Code invariant lassen. Es gibt daher ! = selbstorthogonale [11, 5, d] Codes, die äquivalent zu G 11 sind, und somit = selbstorthogonale [11, 5, d] Codes, die nicht äquivalent zu diesem sind. Das ist nun aber gerade die Anzahl all jener selbstorthogonaler [11, 5, d] Codes, für die d = 3 gilt. 52

61 4.3 Perfekte Codes Satz Ist C ein ternärer linearer [12, 6, 6] Code, so ist C äquivalent zum erweiterten ternären Golay Code G 12. Beweis. Nach (4.2.4) ist C selbstdual, also insbesondere auch selbstorthogonal. Proposition liefert dann die gewünschte Aussage. Satz Ist C ein ternärer linearer [11, 6, 5] Code, so ist C äquivalent zum ternären Golay Code G 11. Beweis. Nach Proposition ist C selbstorthogonal und hat Minimalgewicht 6. Somit ist C nach Proposition äquivalent zum Dualen des ternären Golay Codes, also zu G11. Da die Äquivalenz die Orthogonalität erhält, ist C äquivalent zum G Perfekte Codes Das Ziel dieses Abschnittes ist es zu zeigen, dass jeder lineare perfekte Code entweder ein binärer Wiederholungscode ungerader Länge, ein Code mit nur einem Codewort oder der ganze Raum ist, oder die Parameter eines Hamming Codes oder eines Golay Codes besitzt. Insbesondere wird gezeigt, dass es neben den Golay Codes keine weiteren perfekten lineare Codes geben kann, die mehr als einen Fehler korrigieren. Definition Es sei q eine Primzahl, n > 0. Dann heißen die Polynome P k (x; n) = P k (x) := k ( )( ) x n x ( 1) j (q 1) k j j k j j=0 für k = 0, 1,..., n die Krawtschukpolynome. Sie haben die erzeugende Funktion (1 + (q 1)z) n x (1 z) x = P k (x)z k. k=0 Ist x eine natürliche Zahl mit 0 x n, so kann die obere Grenze der Summe durch n ersetzt werden. Die Krawtschukpolynome sind also Polynome vom Grad k. Sie können auch auf folgende Weise dargestellt werden. Proposition (i) P k (x) = (ii) P k (x) = k j=0 k j=0 ( )( ) n j x ( q) j (q 1) k j k j j ( 1) j q k j ( n k + j j )( ) n x k j 53

62 4 Die Golay Codes sind eindeutig Dies sieht man nach Umformen der erzeugenden Funktion und anschließendem Koeffizientenvergleich. Der vollständige Beweis ist in [7] (S. 151) zu finden. Definition Das Polynom heißt das Lloydpolynom. L e (x) := P 0 (x) + + P e (x) Das Lloydpolynom hat offensichtlich Grad e. Proposition Es gilt L e (x) = P e (x 1; n 1) = e j=0 ( 1) j (q 1) e j ( x 1 j )( n x e j ). Auch dies ist leicht nachzurechnen. Eine Anleitung dazu ist zum Beispiel in [15] (S. 17) zu finden. Das für den weiteren Verlauf grundlegende Resultat liefert der Satz von Lloyd. Satz (Lloyd) Gibt es einen perfekten [n, k, 2e + 1] Code über F q, so hat das Lloydpolynom L e (x) genau e verschiedene ganzzahlige Nullstellen 0 < σ 1 < < σ e < n. Der Beweis dieses Satzes ist nicht schwer, bedarf aber einiger zusätzlicher Resultate und Notationen. Er ist in [21], S zu finden. Nun kommen wir zum eigentlichen Resultat dieses Abschnitts: Satz (Tietäväinen und Van Lint) Es sei C ein perfekter [n, k, 2e + 1] Code über F q. Dann trifft einer der folgenden Fälle zu: (i) C = 1, e = n; (ii) C = q n, e = 0; (iii) C = 2, q = 2, n = 2e + 1; (iv) C = q n r, e = 1, n = qr 1 q 1 für ein r > 0; (v) C = 3 6, q = 3, e = 2, n = 11; (vi) C = 2 12, q = 2, e = 3, n = 23. Fall (i) beschreibt den Code, der nur aus einem Wort besteht, also C = {0}. Der Code in Fall (ii) ist der ganze Raum, also C = F n q. In diesen beiden Fällen spricht man von einem trivialen perfekten Code. Im Fall (iii) ist von einem binären Wiederholungscode ungerader Länge die Rede, also C = {0, 1}. Fall (iv) beschreibt einen Hamming Code, Fall (v) den ternären Golay Code und Fall (vi) den binären Golay Code. 54

63 4.3 Perfekte Codes Der hier dargestellte Beweis, der dem ursprünglichen Beweis in [13] folgt, stammt aus [7] (S ) und wird in die Beweise der folgenden Sätze bis aufgeteilt. Hierbei sei immer C ein perfekter [n, k, 2e + 1] Code über F q, und σ 1 < < σ e seien die nach dem Satz von Lloyd (4.3.5) verschiedenen ganzzahligen Nullstellen von L e (x). Zuerst sei die Hamming Schranke (1.3.7) für den Fall eines perfekten Codes in Erinnerung gerufen: e ( ) n (q 1) i = q n k. i i=0 Proposition Es ist L e (0) = q n k. Ist C nichttrivial, so gilt L e (1) 0 und L e (2) 0. ( 1 j Beweis. ) Verwendet man die Darstellung von L e (x) aus (4.3.4) und beachtet man, dass = ( 1) j gilt, so bekommt man mit Hilfe der Hamming Schranke (1.3.7) L e (0) = Weiters gilt e ( )( ) 1 n ( 1) j (q 1) e j = j e j j=0 L e (1) = j=0 Da e < n gilt, ist L e (1) 0. e ( )( ) 1 n 2 L e (2) = ( 1) j (q 1) e j j e j j=0 e j=0 ( ) n (q 1) e j e j e ( )( ) ( ) 0 n 1 n ( 1) j (q 1) e j = (q 1) e. j e j e = (q 1) e 1 (n 2)! (e 1)!(n 1 e)! ( (q 1)e 1 n 2 = e e 1 = q n k. ( ) ( n 2 n 2 = (q 1) e (q 1) e 1 e e 1 ) ( (q 1) n 1 e 1 e ) (q(n e 1) n + 1). Dieser Ausdruck kann nur Null sein, wenn entweder q = 1, was wegen q 2 nicht möglich ist, oder q = n 1 gilt. Da q 2 gilt, impliziert die zweite Bedingung, dass n 2e + 1 n e 1 ist. Doch dann ist C trivial, was ein Widerspruch zur Voraussetzung ist. Proposition Es gilt σ σ e = e(n e)(q 1) q σ 1 σ 2 σ e = e!q n k e. + e(e + 1), sowie 2 Beweis. Nach (4.3.4) ist L e (x) = P e (x 1; n 1) := l e x e + + l 0, sowie e ( ) n 1 j (x 1)(x 2) (x j) P e (x 1; n 1) = ( q) j (q 1) e j = e j j! j=0 e ( ) ( ( ) ) ( q) j n 1 j (j + 1)j = (q 1) e j x j x j 1 + g j (x), j! e j 2 j=0 ) 55

64 4 Die Golay Codes sind eindeutig wobei g j (x) Polynome in x vom Grad höchstens j 2 sind. Das konstante Glied von L e (x) ist nach der vorigen Proposition gegeben durch l 0 = L e (0) = q n k. Der Koeffizient von x e ist gegeben durch l e = ( q)e, und der Koeffizient von x e 1 ist e! l e 1 = ( q)e 1 (e 1)! (q 1) ( n e 1 ) (e + 1)e ( q) e 2 e! = ( q)e e! ( e(q 1)(n e) q ) (e + 1)e. 2 Nach dem Satz von Vieta ergibt die Summe aller Nullstellen von L e (x) gerade l e 1 l e, also σ σ e = ( q) e e! ( e(q 1)(n e) q ( q) e e! ) + (e+1)e 2 ( e(q 1)(n e) = + q Weiters ist das Produkt aller Nullstellen gerade ( 1) e l 0 le, also ) (e + 1)e. 2 σ 1 σ 2 σ e = ( 1) e qn k ( q) e e! = e!q n k e. Satz Ein perfekter 1-fehlerkorrigierender [n, k, d] Code C über F q Parameter wie der Hamming Code. hat die selben Beweis. Die Hamming Schranke (1.3.7) wird in diesem Fall zu und der Satz von Lloyd liefert, dass 1 + (q 1)n = q n k, L 1 (x) = (q 1)(n x) (x 1) = 1 + ((q 1)n qx) eine ganzzahlige Nullstelle σ 1 besitzt. Es ist also 1 + (q 1)n qσ 1 = 0, woraus folgt, dass σ 1 = 1+(q 1)n = q n k 1 ist. Somit ist n = qn k 1. Die Minimaldistanz ist q q 1 nach Voraussetzung 3, die Dimension stimmt nun wieder aufgrund der Hamming Schranke mit der des Hamming Codes überein. Satz Es gibt keinen nichttrivialen binären perfekten 2-fehlerkorrigierenden Code. Beweis. Die Hamming Schranke (1.3.7) liefert ( ) n 1 + n + = 2 n k, 2 oder gleichbedeutend (2n + 1) 2 = 2 n k

65 4.3 Perfekte Codes Das Lloydpolynom ist hier gegeben durch (n x)(n x 1) (x 1)(x 2) L 2 (x) = (x 1)(n x) + = ( = x ) ( (1 2n) + x (n + 1) 3 ) ( n(n 1) = 2x 2 2(n + 1)x + 2 n k. ) + n + 1 = Setzt man nun y := 2x, so erhält man 2L 2 (y) = y 2 2(n+1)y +2 n k+1, welches nach dem Satz von Lloyd (4.3.5) zwei verschiedene ganzzahlige Nullstellen y 1 = 2σ 1 und y 2 = 2σ 2 besitzt. Diese sind beide nach (4.3.7) größer als 4. Nach dem Satz von Vieta ist y 1 y 2 = 2 n k+1, also y 1 = 2 a und y 2 = 2 b mit 3 a < b. Dann ist y 1 + y 2 = 2 a + 2 b = 2(n + 1), also wird die umformulierte Hamming Schranke zu Aus b > a folgt (2 a + 2 b 1) 2 = 2 n k+3 7 = 2 a+b a (1 + 2 b+1 a + 2 2b 2a ) 2 a+1 (1 + 2 b a ) + 1 = 2 a+b+2 7. Da 2a 4, a+1 4 und a+b+2 4 ist, kann man diese Gleichung modulo 2 4 reduzieren und erhält 1 7 (mod 16), und somit den gewünschten Widerspruch. Satz Ist C ein nichttrivialer, perfekter, 2-fehlerkorrigierender [n, k, d] Code über F q, so muss C die selben Parameter wie der der ternäre Golay Code G 11 haben. Beweis. Nach (4.3.8) gilt σ 1 σ 2 = 2q n k 2 σ 1 + σ 2 = 2(n 2)(q 1) q Weiters liefert (4.3.7), dass σ 1, σ 2 > 2. Ist q = p r so folgt (o.b.d.a.) σ i = p λ, σ j = 2p µ für i j {1, 2}, λ, µ 1 und λ + µ = r(n k 2). Die Hamming Schranke (1.3.7) liefert hier ( ) n 1 + (q 1)n + (q 1) 2 = q n k Dies impliziert nach Ausmultiplizieren, Umklammern und Multiplizieren mit 4 0 = (2n(q 1)) n(q 1)(3 q)+8 8q n k = (2n(q 1)+(3 q)) q n k (3 q) 2, und somit Das wiederum liefert 2n(q 1) = q 3 + q 2 6q + 1 8q n k. q(σ 1 + σ 2 ) = 2(n 2)(q 1) + 3q = 1 + q 2 6q + 1 8q n k. 57

66 4 Die Golay Codes sind eindeutig Setzt man hier nun σ 1, σ 2 ein, so erhält man nach Quadrieren und Division durch q q(p λ + 2p µ ) 2 2(p λ + 2p µ ) = q 6 + 8q n k 1. ( ) In dieser Gleichung enthält jeder Term außer 6 den Faktor p. Demnach muss p = 2 oder p = 3 sein. Ist p = 2, so ist q 6 durch 4 teilbar, also q 6 (mod 4). Aus q = 2 r folgt 2 r 2 3 (mod 2 2 ), also 2 r 1 1 (mod 2) und somit r = 1, also q = 2. Das ist jedoch ein Widerspruch zum vorigen Satz Also muss p = 3 gelten. Ist q = 3, so wird ( ) zu 3(3 λ µ ) 2 2(3 λ µ ) = n k 1. Diese Gleichung hat für n k 3 keine Lösung, also gilt n k 4. Dividiert man nun die Gleichung durch 3, so erhält man 3 2λ λ+µ µ 2 3 λ µ 1 = n k 2. In dieser Gleichung enthält jeder Term bis auf 1 den Faktor 3, weshalb µ = 1 sein muss. Setzt man das ein, so erhält man nach Division durch 3 3 2λ λ λ 2 1 = 8 3 n k 3, woraus wiederum λ = 2 folgt. Das liefert n k = 5. Aufgrund der Hamming Schranke (1.3.7) folgt nun n = 11, somit k = 6. Die Minimaldistanz ist nach Voraussetzung 5. Das sind gerade die Parameter des ternären Golay Codes. Es sei nun also q = 3 r mit r > 1. Betrachtet man die Gleichung ( ) modulo 3 2, so erhält man 7(3 λ µ ) 3 q n k 1 (mod 9), was n k > 1 zeigt, da sonst 7(3 λ µ ) 2 56 (mod 9), und somit 3 λ µ 8 (mod 9) gelten würde, was jedoch nicht möglich ist. Somit erhält man und nach Multiplikation mit 4 7(3 λ µ ) 3 (mod 9), 3 λ µ 3 (mod 9). Demnach ist λ = 1 (dividiere obige Kongruenz durch 3) und µ > µ = r(n k 2) impliziert 3 1+µ = q n k 2. Somit wird ( ) zu 3 r ( µ ) 2 2( µ ) = 3 r r+µ+1, 8 3 r 4 3 µ = 4 3 r+µ µ+r. In dieser letzten Gleichung ist die rechte Seite durch 3 r+µ+1, die linke Seite jedoch nur durch 3 min(r,µ) teilbar. Das ist ein Widerspruch und somit ist der Satz gezeigt. Zum Beweis der nächsten und letzten beiden Sätze benötigt man das folgende Resultat. Die Hamming Schranke (1.3.7) liefert als notwendige Bedingung für die Existenz eines perfekten [n, k, 2e + 1] Codes eine Gleichung in den Parametern n, k und e. Van Lint ([16]) stellte 1969 mit Hilfe eines Computers folgendes fest: 58

67 4.3 Perfekte Codes Proposition Die Gleichung e i=0 ( ) n (q 1) i = q n k i hat im Bereich e 1000, q 100 (q eine Primzahlpotenz) und n 1000 nur die folgenden Lösungen: (i) n = e und k = 0, was den Code C := {0} liefert. (ii) n = k und e = 0, was den Code C := F n q liefert. (iii) q = 2 und n = 2e + 1, was den Code C := {0, 1} liefert. (iv) n = qr 1 für ein r > 0, k = n r und e = 1, was die Parameter eines Hamming q 1 Codes sind. (v) q = 3, n = 11 und e = 2, was die Parameter des ternären Golay Codes sind. (vi) q = 2, n = 23 und e = 3, was die Parameter des binären Golay Codes sind. (vii) q = 2, n = 90 und e = 2, was nach dem obigen Satz keinen perfekten Code liefert. Satz Es gibt keinen nichttrivialen, perfekten, e-fehlerkorrigierenden [n, k, 2e + 1] Code über F q mit q = p r > 2 und e > 2. Beweis. Dieser Satz wird in mehreren Schritten bewiesen. (i) Zuerst wird 2σ 1 σ e gezeigt. Es sei dazu s eine ganze Zahl, s = p α t mit ggt(p, t) = 1. Weiters definiert man a p (s) = t. Offensichtlich gilt a p (s 1 s 2 ) = a p (s 1 )a p (s 2 ) und a p (s) s. Proposition liefert σ 1 σ 2 σ e = e!q n k e, also a p (σ 1 )a p (σ 2 ) a p (σ e ) = a p (e!) e!. Es sind daher entweder zwei der a p (s i ) gleich, also zum Beispiel a p (σ i ) = a p (σ j ), oder die Zahlen a p (σ 1 ),..., a p (σ e ) sind gerade die Zahlen 1,..., e in irgendeiner Reihenfolge und p > e 3, da aus p e folgt, dass a p (σ i ) = p für ein i gilt, was nicht erlaubt ist. Im ersten Fall sei σ i = p α t und σ j = p β t. Ist i < j, so ist α < β und, da p > 2 ist, gilt 2σ 1 < σ e. Im zweiten Fall gibt es i und j, sodass a p (σ i ) = 1 und a p (σ j ) = 2 gilt. Somit ist σ i = p α und σ j = 2p β. Ist α β, so gilt 2σ i σ j. Ist α > β, so ist 2σ j = 4p β p β+1 p α = σ i. Insgesamt ist 2σ 1 2σ i σ j σ e. (ii) Nun betrachtet man die Ungleichung x 2(1 + 9 x)2, welche äquivalent zu 2x 2 5x ist. Diese quadratischen Funktion ist rechts vom Minimum x = 5 monoton 4 wachsend und hat an der Stelle x = 2 eine Nullstelle. Somit ist die Ungleichung für alle x 2 erfüllt. Es sei nun x = σe σ 1. Dann gilt nach (i) x 2. Somit gilt ( σ e σ ( ) ) 2 e σe +, σ 1 9 σ 1 σ 1 59

68 4 Die Golay Codes sind eindeutig und nach Multiplikation mit σ1 2 σ e σ (σ σ e σ 1 + σe). 2 Erweitert man noch die rechte Seite mit 4, so erhält man ( ) 2 σ1 + σ e. σ 1 σ e (iii) Nach (4.3.8) gilt σ 1 σ 2 σ e = e ( ) e!q n k e n = e!q e (q 1) e j e j j=0 > e!q e (q 1) e n(n 1) (n e + 1) ( ) > e!q e (q 1) e n e e(e 1) 1, 2n wobei die erste Ungleichung folgt, wenn man nur den Summanden für j = 0 heranzieht. Die zweite Ungleichung folgt, wenn man das Produkt n(n 1) (n e + 1) ausführt und aus der so entstandenen Summe nur die ersten beiden Summanden zählt (der Restterm ist positiv, da n d > 2e gilt). (iv) Nun verwendet man die Ungleichung vom gewichteten arithmetischen und geometrischen Mittel. Diese besagt, dass für i = 1,..., N die reellen Zahlen x i 0 und die Gewichte α i, welche N α i = 1 erfüllen, die Ungleichung N i=1 i=1 x α i i N a j x j gilt. Man erhält nach Anwendung von (ii) und zweimaliger Anwendung dieser Ungleichung e ( ) 2 ( ) e 2 σ1 + σ e σ2 + + σ e 1 j=1 i=1 σ i = (σ 1 σ e )(σ 2 σ e 1 ) 8 9 ( ) e σ1 + + σ e. 2 e e Nun gilt nach (4.3.8) ( ) e 8 σ1 + + σ e = 8 ( (n e)(q 1) + e + 1 ) e 8 9 e 9 q 2 9 q e (q 1) e n e, wobei die letzte Ungleichung nach einigen wenigen Umformungen folgt, wenn man q > 2 verwendet. Kombiniert man nun diese Ungleichung mit der aus (iii), so erhält man 1 e(e 1) 2n < 8 9, 60

69 4.3 Perfekte Codes und somit n < 9 e(e 1). 2 (v) Es ist nach dem Beweis von (4.3.7) e (σ i 1) = e! q L e(1) = (q 1)e (n 1) (n e). e q e i=1 Da dies eine ganze Zahl sein muss, gilt p re (n 1)(n 2) (n e). Es sei p α die höchste Potenz von p, die einen der Faktoren (n i) für ein 1 i e teilt. Dann ist die höchste Potenz von p, die das Produkt dieser Faktoren teilt, höchstens A = p α+[ e p ]+[ e p 2 ]+ und es muss A p re sein. Also gilt α re [ e p ] [ e ( p ] e r 1 ) 2 p 1 er 2. Daher muss p r[ e 2 ] = q [ e 2 ] den Faktor n i für ein 1 i e teilen, was schließlich n > q [ e 2 ] liefert. (vi) Aus (iv) und (v) folgt nun 3 [ e 2 ] q [ e 2 ] < n < 9 e(e 1). 2 Das impliziert e 11, q 8 und n < 495. Nach Proposition gibt es in diesem Fall keine nichttrivialen perfekten Codes, die den Voraussetzungen dieses Satzes genügen. Satz Ist C ein nichttrivialer, perfekter, e-fehlerkorrigierender [n, k, d] Code über F 2 mit e > 2, so müssen seine Parameter mit denen des binären Golay Codes übereinstimmen. Beweis. Nach dem Beweis von (4.3.7) gilt e (σ i 2) = e!l e(2) = 2 e i=1 (n 2)(n 3) (n e)(n 2e 1) 2 e. Da (σ i 1)(σ i 2) gerade ist, folgt aus dieser Gleichung sowie aus jener für e i=1 (σ i 1) aus (v) des vorigen Beweises (4.3.13), dass 2 3e (n 1)(n 2) 2 (n e) 2 (n 2e 1), und daher n > 2 2 e 2 gilt. Der Rest des Beweises folgt dem des vorigen Satzes (4.3.13), wobei e analog zu den Gleichungen in (iii) und (iv) des vorigen Beweises eine obere Schranke für n gewonnen werden kann. 61

70 4 Die Golay Codes sind eindeutig Die in diesem Abschnitt bewiesenen Eigenschaften der Golay Codes, sowie perfekter Codes im Allgemeinen, sind wohl Hauptursachen für die Berühmtheit und Wichtigkeit der Golay Codes. Die Tatsache, dass sie durch ihre Parameter bis auf Äquivalenz eindeutig bestimmt sind erlaubt es, sie auf viele verschiedene Weisen, von denen einige im vorigen Kapitel 3 dargestellt wurden, zu konstruieren. Dies wiederum schafft dem Anwender viele Möglichkeiten, von denen er sich die für die gegebene Situation am besten passende aussuchen kann. Weiters folgt aus der Eindeutigkeit, dass durch Punktieren eines erweiterten Golay Codes (G 24 oder G 12 ) an einer beliebigen Stelle ein perfekter Golay Code entsteht (G 23 oder G 11 ). Aus theoretischer Sicht ist es natürlich bemerkenswert, dass keine weiteren perfekten Codes existieren, die mehr als einen Fehler korrigieren. Denn wie eben bewiesen muss ein perfekter Code, der zwei oder drei Fehler korrigiert, die Parameter des ternären oder binären Golay Codes besitzen. Dadurch ist er aber schon der ternäre oder binäre Golay Code. Perfekte Codes haben auch aus theoretischer Sicht eine besondere Bedeutung, da sie sehr eng mit sogenannten Kugelpackungen in Vektorräumen verbunden sind. Für weitere Informationen hierzu empfiehlt sich [12]. 62

71 5 Codieren und Decodieren der Golay Codes In der Praxis sind mehrere Schritte notwendig, um eine Nachricht von einem Sender an einen Empfänger zu übermitteln. Soll die Nachricht in digitaler Form übermittelt werden, so muss sie zuallererst zu einer Folge von Nullen und Einsen umgewandelt werden, da die digitale Verarbeitung ausschließlich diese zwei Symbole kennt. Um bei der Übertragung auftretende Fehler entdecken und korrigieren zu können, wird diese Folge mit Hilfe eines fehlerkorrigierenden Codes codiert. Hierbei entsteht eine im Allgemeinen längere Folge von Nullen und Einsen, welche schließlich über den Kanal zum Empfänger gesandt wird, welcher sie wiederum decodiert und schlussendlich zurück in ihre urpsrüngliche Gestalt verwandelt. Sowohl das Codieren als auch das Decodieren kann auf sehr vielfältige Art und Weise realisiert werden. Nicht jeder Algorithmus lässt sich auf jeden beliebigen Code anwenden, so gibt es etwa Codieralgorithmen, die speziell für zyklische Codes entwickelt wurden und daher die Polynomdarstellung dieser Codes ausnützen. In diesem Abschnitt werden verschiedene Algorithmen dargestellt, die alle auf die Golay Codes angewandt werden können. 5.1 Codieren und Decodieren linearer Codes In diesem Abschnitt sei immer C ein linearer [n, k, d] Code über F q, a F k q das zu codierende Wort, c C das bereits codierte Wort und u F n q das empfangene Wort. Codier-Algorithmus 1 Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G. Dann wird das Wort a F k q zu c := ag codiert. Dieser Algorithmus ist sehr einfach realisierbar, doch gibt es effizientere Algorithmen. So kann etwa viel Rechenaufwand gespart werden, falls die Erzeugermatrix in Standardform gegeben ist (siehe 1.2.8). Man spricht dann von systematischer Codierung. Codier-Algorithmus 2 Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G = (I k G ) in Standardform. Dann kann das Wort a F k q in zwei Schritten zum Codewort c C codiert werden: (i) c := ag (ii) c := (a, c ) 63

72 5 Codieren und Decodieren der Golay Codes Alternativ zur Erzeugermatrix kann auch eine Kontrollmatrix des Codes zum Codieren verwendet werden. Codier-Algorithmus 3 Es sei C ein [n, k, d] Code über F q mit Kontrollmatrix H. Das Wort a := (a 1,..., a k ) F k q kann zum Codewort c := (c 1,..., c n ) C codiert werden, indem man das Gleichungssystem Hc T = 0 löst. Hierbei setzt man c 1 = a 1,..., c k = a k. Diese Codierung ist systematisch. Das Decodieren besteht eigentlich aus drei Teilen. (i) Fehlererkennung (error detection) (ii) Fehlerkorrektur (error correction) (iii) Decodieren (decoding) Fehlererkennung Es sei C ein [n, k, d] Code über F q mit Kontrollmatrix H. Weiters sei u F n q das empfangene Wort. Ist u C so kann man davon ausgehen, dass kein Übertragungsfehler aufgetreten ist (das gilt mit sehr hoher Wahrscheinlichkeit). Ist u / C, so muss zumindest ein Fehler geschehen sein. Um Übertragungsfehler zu erkennen genügt es demnach festzustellen, ob das empfangene Wort u ein Codewort ist oder nicht. Nach (1.2.6) ist dies genau dann der Fall, wenn Hu T = 0 ist. Im Falle einer systematischen Codierung werden dazu die empfangenen Informationssymbole u 1,..., u k einfach neu codiert und die so gewonnenen Kontrollsymbole mit den empfangenen verglichen. Stimmen sie überein, so ist u ein Codewort und es sind wahrscheinlich keine Fehler aufgetreten. Stimmen sie jedoch nicht überein, so sind mit Sicherheit Fehler bei der Übertragung geschehen. Diese müssen nun, wenn möglich, korrigiert werden. Fehlerkorrektur Hierzu definiert man den Fehlervektor e := u c, wobei wieder c C das gesendete Codewort, u F n q das empfangene Wort ist. Eine Komponente e i von e ist genau dann 0, wenn in dieser Komponente kein Fehler aufgetreten ist. Dies geschieht nach (1.3.1) mit Wahrscheinlichkeit 1 p, wobei p die Wahrscheinlichkeit einer Verfälschung des gesendeten Buchstabens ist. Mit Wahrscheinlichkeit p ist also e i 0. Es sei nun v + C := {v + c c C} die Nebenklasse von v bezüglich C. Es ist offensichtlich jeder Vektor v F n q in einer Nebenklasse bezüglich C (nämlich in v + C), und je zwei Nebenklassen sind entweder gleich oder disjunkt. F n q zerfällt demnach disjunkt in Nebenklassen bezüglich C. 64

73 5.1 Codieren und Decodieren linearer Codes Ist u das empfangene Wort, so muss es in einer Nebenklasse v+c liegen, also u = v+c für ein c C. Ist c das gesendete Codewort, so erfüllt das Fehlerwort e = u c = v + c c = v + c, wobei c = c c C. Die möglichen Fehlerworte sind also gerade die Worte in der Nebenklasse des empfangenen Wortes. Da der Empfänger grundsätzlich nach dem Prinzip des Maximum Likelihood Decoding (siehe (1.3.2)) vorgeht und ein q-när symmetrischer Kanal vorausgesetzt ist, hat er das Wort vom kleinsten Gewicht ê in der Nebenklasse des empfangenen Wortes u zu bestimmen und u zu ĉ = u ê zu korrigieren. Dieses Wort von minimalem Gewicht nennt man den Anführer der Nebenklasse (coset leader). Gibt es mehr als ein Wort von minimalem Gewicht in einer Nebenklasse, so wählt man eines dieser Worte zufällig (es gibt Strategien, welches der Worte auszuwählen ist, wie zum Beispiel das Miteinbeziehen sogenannter Fehlerbündel (burst errors), auf die hier nicht näher eingenangen wird). Dieser Vorgang lässt sich sehr gut mit dem sogenannten Standarkorrekturschema (standard array) beschreiben. Dazu schreibt man in die erste Zeile eines rechteckigen Schemas die Codeworte, beginnend mit dem Nullwort 0, also: c (1) = 0 c (2)... c (s) (s = q k ) In die weiteren Zeilen schreibt man die Nebenklassen u (i) + C, in derselben Reihenfolge angeordnet wie die erste Zeile mit dem Nebenklassenanführer ganz links: a (i) + c (1) a (i) + c (2)... a (i) + c (s). Der Empfänger sucht dann das empfangene Wort u in diesem Schema, bestimmt den Anführer der entsprechenden Nebenklasse e (das Wort in der ersten Spalte der betreffenden Zeile), und korrigiert schließlich u zu c = u e. Die Schwierigkeit liegt nun darin festzustellen, in welcher Nebenklasse das empfangene Wort u liegt. Hierfür steht folgendes Hilfsmittel zur Verfügung. Definition Es sei C ein [n, k, d] Code über F q mit Kontrollmatrix H. Weiters sei c C das gesendete Codewort, u F n q das empfangene Wort. Dann nennt man das Syndrom von u bezüglich H. S H (u) := Hu T Aus der Definition der Kontrollmatrix eines linearen Codes C (1.2.6) folgt unmittelbar, dass jedes Codewort c C Syndrom 0 hat. Proposition Zwei Worte u, v F n q liegen in der selben Nebenklasse bezüglich des Codes C, wenn sie das selbe Syndrom bezüglich einer Kontrollmatrix H von C besitzen, also S H (u) = S H (v). Beweis. u und v liegen genau dann in der selben Nebenklasse w + C bezüglich C, wenn u = w + c und v = w + c für zwei Codeworte c, c C gilt. Dann ist S H (u) = Hu T = H(w + c) T = Hw T + Hc T = Hw T = S H (w) 65

74 5 Codieren und Decodieren der Golay Codes und analog S H (v) = S H (w). Empfängt man also ein Wort u F n q, so muss das Fehlerwort e = u c das selbe Syndrom wie u haben. Ist e der Anführer der entsprechenden Nebenklasse, so korrigiert man das empfangene Wort u zu c = u e. Decodieren Zum Decodieren muss im Allgemeinen eine n k Matrix G gefunden werden, die GG = I k erfüllt. Diese Matrizengleichung ist aus Dimensionsgründen stets lösbar, wenn auch nicht eindeutig. Das Decodieren geschieht schließlich durch Multiplikation des Codewortes mit G, also a = cg. Wie schon in (1.2.8) erwähnt wird das Decodieren wesentlich vereinfacht, wenn das Codieren systematisch vorgenommen wurde. Dann genügt es nämlich, die Kontrollsymbole am Ende des Codewortes wegzustreichen. Ist also c = (c 1,..., c n ), so ist die ursprüngliche Nachricht durch a = (c 1,..., c k ) gegeben. Decodier-Algorithmus 1 Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G und Kontrollmatrix H. Weiters sei G eine n k Matrix, die GG = I k erfüllt. Ist u F n q das empfangene Wort, so wird dieses in drei Schritten decodiert: (i) Man berechnet das Syndrom S H (u) := Hu T. (ii) a) Ist S H (u) = 0, so ist u ein Codewort und man fährt mit Schritt (iii) mit c := u fort. b) Ist S H (u) 0, so bestimmt man den Anführer e F n q jener Nebenklasse bezüglich C, deren Syndrom gerade S H (u) ist und korrigiert u zu c := u e. (iii) Man decodiert c zu a := cg. Im Falle einer systematischen Codierung lässt sich dieser Algorithmus vereinfachen. Decodier-Algorithmus 2 Es sei C ein [n, k, d] Code über F q mit Kontrollmatrix H. Wurde die Codierung systematisch vorgenommen, so kann das empfangene Wort u F n q in drei Schritten decodiert werden: (i) Man berechnet das Syndrom S H (u) = Hu T. (ii) a) Ist S H (u) = 0, so ist u ein Codewort und man fährt mit Schritt (iii) mit c := u fort. b) Ist S H (u) 0, so bestimmt man den Anführer e F n q jener Nebenklasse bezüglich C, deren Syndrom gerade S H (u) ist und korrigiert u zu c := u e. (iii) Man decodiert c := (c 1,..., c n ) zu a := (c 1,..., c k ). 66

75 5.2 Codieren zyklischer Codes 5.2 Codieren zyklischer Codes Ist der verwendete Code zyklisch, so können natürlich weiterhin alle eben dargestellten Algorithmen zum Codieren und Decodieren verwendet werden. Darüber hinaus werden nun Algorithmen präsentiert, die die Polynomdarstellung linearer Codes ausnützen und somit effizienter sind. In diesem Abschnitt sei C der verwendete zyklische [n, k, d] Code über F q mit Erzeugerpolynom g(x) und Kontrollpolynom h(x). Weiters sei a(x) F k q[x] das zu codierende Wort, c(x) C das bereits codierte Wort, sowie u(x) F n q [x] das empfangene Wort. Nach (3.1.4) ist ein Wort c(x) F n q [x] genau dann ein Codewort, wenn es von g(x) geteilt wird. Das liefert: Codier-Algorithmus 4 Es sei C ein zyklischer [n, k, d] Code über F q mit Erzeugerpolynom g(x). Dann kann a(x) F k q[x] zu codiert werden. c(x) := a(x)g(x) Es ist nach (3.1.7) ein Wort c(x) F n q [x] auch genau dann ein Codewort, wenn c(x)h(x) = 0 gilt. Das liefert (siehe [7], S. 212): Codier-Algorithmus 5 Es sei C ein zyklischer [n, k, d] Code über F q mit Kontrollpolynom h(x). Dann kann a(x) := a 0 + a 1 x + + a k 1 x k 1 F k q[x] zum Codewort c(x) := c 0 + c 1 x + + c n 1 x n 1 C codiert werden, indem das Gleichungssystem c(x)h(x)x i = 0 i = 0,..., n k 1 gelöst wird. Dabei setzt man c j := a j für j = 0,..., k 1. Diese Codierung ist systematisch. Eine weitere Charakterisierung für Codeworte eines zyklischen Codes ist die folgende (siehe [15], S. 83): Dividiert man x i für i n k durch g(x) mit Rest, so erhält man x i = g(x)q i (x) + r i (x), wobei deg(r i (x)) < n k ist. Die so gewonnenen Worte x i r i (x) sind Codeworte von C und bilden sogar eine Basis von C. Dies liefert eine Erzeugermatrix in Standardform (wobei hier die Einheitsmatrix am hinteren Ende der Matrix steht). Verwendet man diese zur Codierung, so erhält man den folgenden Algorithmus: Codier-Algorithmus 6 Es sei C ein zyklischer [n, k, d] Code über F q mit Erzeugerpolynom g(x). Dann kann a(x) F k q[x] zum Codewort c(x) C auf die folgende Art codiert werden: (i) Man dividiert a(x)x n k durch g(x) mit Rest: (ii) c(x) := a(x)x n k r(x) Diese Codierung ist systematisch. a(x)x n k = g(x)q(x) + r(x) Zum Decodieren können die bereits dargestellten Decodieralgorithmen (1) und (2) verwendet werden. Ist h(x) das Kontrollpolynom des zyklischen Codes C, so zieht man zur Berechnung des Syndroms die in (3.1.6) gegebene Kontrollmatrix H heran. 67

76 5 Codieren und Decodieren der Golay Codes 5.3 Decodieren von BCH Codes Es sei nun C ein BCH Code der Länge n über F q mit konstruierter Distanz δ = 2t+1, und α eine primitive n-te Einheitswurzel in F q m. Ist c(x) C das gesendete Wort, u(x) F n q [x] das empfangene Wort und e(x) = u(x) c(x) = e 0 + e 1 x + + e n 1 x n 1 das Fehlerwort, dann definiert man: M := {i e i 0}, E := M, die Positionen, an denen ein Fehler aufgetreten ist, die Anzahl der Fehler, σ(z) := i M(1 α i z), das Fehlerlokatorpolynom, und ω(z) := i M e i α i z j M\{i} (1 α j z), das Fehlerauswertungspolynom. Es ist genau dann ein Fehler an Position i geschehen, wenn σ(α i ) = 0 ist. Der Fehler ist in diesem Fall durch e i = ω(α i )α i gegeben, denn σ (α i ) σ (z) = i M( α i ) (1 α i z) und daher j M\{i} ω(α i )α i σ (α i ) = αi k M e kα k α i l M\{k} (1 αl α i ) m M ( αm ) n M\{m} (1 αn α i ) = e iα i l M\{i} (1 αl α i ) α i n M\{i} (1 αn α i ) = e i, = da in den Summen all jene Terme wegfallen, in denen i nicht aus der Indexmenge des Produkts ausgenommen wird. Es genügt demnach, die Polynome σ(z) und ω(z) zu kennen, um das empfangene Wort zu korrigieren. ([15], S und [7], S ) Das Korrigieren eines Fehlers kann folgendermaßen umgesetzt werden: Decodier-Algorithmus 3 Es sei C ein BCH Code der Länge n über F q zur konstruierten Distanz δ. Das empfangene Wort u(x) F n q [x] kann in fünf Schritten decodiert werden: (i) Man berechnet das Syndrom S H (u) für eine Kontrollmatrix H von C. (ii) Man bestimmt das Fehlerlokatorpolynom σ(z) und das Fehlerauswertungspolynom ω(z). (iii) Man sucht die Nullstellen von σ(z). (iv) Man berechnet den Fehler e i = ω(α i )α i σ (α i ) und korrigiert u(x) zu c(x) = u(x) e(x). (v) Man decodiert c(x). 68

77 5.3 Decodieren von BCH Codes (i) Zur Berechnung des Syndroms kann man zum Beispiel die Kontrollmatrix 1 α α 2... α n 1 H := 1 α 2 α 4... α 2(n 1) α δ 1 α 2(δ 1)... α (n 1)(δ 1) verwenden (falls in (3.2.4) l = 1). Somit erhält man das Syndrom 1 α α 2... α n 1 S H (u) = 1 α 2 α 4... α 2(n 1) α δ 1 α 2(δ 1)... α (n 1)(δ 1) = n 1 i=0 u iα i n 1 i=0 u iα 2i... n 1 i=0 u iα (δ 1)i = u(α) u(α 2 )... u(α δ 1 ) = u 0 u 1. u n 1 A 1 A 2... A δ 1 = wobei man A i := u(α i ) definiert. Zur Berechnung dieser A i dividiert man u(x) durch das Minimalpolynom m (i) (x) von α i mit Rest, also u(x) = q(x)m (i) (x) + r(x), wobei deg(r(x)) < deg(m (i) (x)) gilt. Dann ist A i = u(α i ) = r(α i ). (ii) Zur Bestimmung des Fehlerlokatorpolynoms σ(z) = i M(1 α i z) = 1 + E σ j z j kann man in dieser Gleichung z = 1 für ein m M setzen und sie mit e α m m α m(j+e) für ein j {1,..., E} multiplizieren. So erhält man j=1 0 = e m α m(j+e) + σ 1 e m α m(j+e 1) + + σ E e m α mj. Summiert man diese Gleichung über m M, so erhält man A j+e + σ 1 A j+e σ E A j = 0 für alle j = 1,..., E. Diese Gleichungen werden die verallgemeinerten Newtongleichungen genannt und sie lassen sich auch in folgender Form anschreiben: A E A E 1... A 1 σ 1 A E+1 A E+1 A E... A 2 σ = A E+2.. A 2E A 2E 1... A E σ E A 2E+1 Dieses Gleichungssystem versucht man nun zu lösen und so das Fehlerlokatorpolynom zu bestimmen. Ist das System nicht lösbar, so reduziert man es, indem man E durch E i für ein i ersetzt. Dies macht man so lange, bis das System lösbar ist., 69

78 5 Codieren und Decodieren der Golay Codes Dann bestimmt man das Fehlerauswertungspolynom durch ω(z) σ(z) = i M e i α i z 1 α i z (iii) Zur Bestimmung der Nullstellen des Fehlerlokatorpolynoms setzt man die Potenzen von α in aufsteigender Reihenfolge in σ(z) ein und überprüft, welche davon die gesuchten Nullstellen sind. Man spricht hierbei von der Chiensuche (Chien search). Dieser Algorithmus stammt aus [7], S Das Problem hierbei ist, dass nur t = δ 1 2 Fehler korrigiert werden, δ aber nur eine untere Schranke für die Minimaldistanz eines BCH Codes ist (3.2.3). Verwendet man diesen Algorithmus zum Decodieren des binären Golay Codes, so werden nur 2 anstatt der möglichen 3 Fehler korrigiert, da hier δ = 5 gilt (3.2.5). 5.4 Decodieren von Codes mit großer Automorphismengruppe Die in diesem Abschnitt vorgestellten Algorithmen stammen aus [7], S Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G := (G I k ) und Kontrollmatrix H := (I k G T ). Die Codierung sei also systematisch vorgenommen worden, wobei hier die Informationsstellen am Ende und die Kontrollstellen am Anfang eines Wortes stehen. Es sei wieder c := (c 1,..., c n ) das gesendete Codewort, wobei nun c 0,..., c n k die Kontrollstellen, c n k+1,..., c n die Informationsstellen sind, u F n q das empfangene Wort und e = u c das Fehlerwort. Die Grundlage für diese Decodiermethode ist die folgende Proposition, die in [7], S. 513, nachgelesen werden kann: Proposition Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G und Kontrollmatrix H wie oben. Weiters sei u das empfangene Wort mit Syndrom S H (u) = Hu T, e der Fehler vom Gewicht t, wobei 2t + 1 d. (i) Ist wt(s H (u)) t, so sind die Informationsstellen u n k+1,..., u n korrekt. (ii) Ist wt(s H (u)) > t, so ist zumindest ein Informationssymbol u i für (n k+1 i n) inkorrekt. Beweis. Es sei e (1) := (e 1,..., e n k ) und e (2) := (e n k+1,..., e n ). Sind die Informationssymbole korrekt, also e (2) = 0, so gilt S H (u) = S H (e) = (I k G T )e T = e T (1) und somit wt(s H (u)) t, da wt(e) = t vorausgesetzt ist. Ist e (2) 0, so betrachte man das Codewort c := e (2) G = e (2) (G I k ) = (e (2) G e (2) ). Da offensichtlich c 0, gilt wt(c ) 2t + 1 = d(c). Also gilt wt(e (2) G ) + wt(e (2) ) 2t + 1. Es ist S H (u) = S H (e) = He T = e (1) + G T e (2), daher gilt wt(s H u) wt(g e T (2)) wt(e T (1)) 2t + 1 wt(e (1) ) wt(e (2) ) 2t + 1 t = t

79 5.4 Decodieren von Codes mit großer Automorphismengruppe Bemerkung Setzt man in obiger Proposition q = 2 voraus, also einen binären Code, so liefert der Beweis, dass der Fehler im Fall (i) gerade durch e := (S H (u) 0) gegeben ist. Mit Hilfe dieser Proposition lässt sich ein einfacher Decodieralgorithmus finden. Um alle Fehlerworte e vom Gewicht kleiner oder gleich t für ein fixes t [ d 1] korrigieren 2 zu können, muss man eine Menge P := {π 1 = id, π 2,..., π s } von Permutationen der Koordinatenpositionen finden, welche folgende Eigenschaften besitzt: (i) P Per(C), (ii) für jedes beliebige Fehlerwort e vom Gewicht kleiner oder gleich t gibt es eine Permutation π i P, die alle Trägerstellen von e aus den Informationsstellen herausführt. Das liefert den folgenden Algorithmus für binäre Codes, das sogenannte Permutationsdecodieren (permutation decoding). Decodier-Algorithmus 4 Es sei C ein binärer [n, k, d] Code mit Erzeugermatrix G und Kontrollmatrix H wie oben. Das empfangene Wort u kann folgendermaßen decodiert werden: Berechne π i (u) und S H (π i (u)) für 1 i s solange, bis ein i gefunden ist, für welches wt(s H (π i (u))) t gilt. Hat man ein solches i gefunden, so korrigiert man u zu c := (π i (u) + (S H (π i (u)) 0)). Ist jedoch wt(s H (π i (u))) > t für alle 1 i s, so müssen mehr als t Fehler aufgetreten sein und das Wort kann nicht korrigiert werden. π 1 i Ein Spezialfall hiervon, der zum Decodieren jedes beliebigen zyklischen Codes verwendet werden kann, ist das sogenannte Error Trapping. Hierbei wird P = {id, S, S 2,..., S n 1 } gesetzt, wobei S der zyklische Shift um eine Position ist. So können alle Fehlerworte e korrigiert werden, die eine (zyklische) Folge von zumindest k Nullen enthalten. Somit ist diese Methode besonders dann sinnvoll, wenn ein großer Abstand zwischen den Einsen im Fehlerwort vorhanden ist. Eine ähnliche Methode ist die Folgende. Man wählt eine Menge von sogenannten Überdeckungspolynomen (covering polynomials), Q := {Q 0 (x) = 0, Q 1 (x),..., Q s (x)}, sodass es für jedes beliebige Fehlerwort e(x) vom Gewicht kleiner oder gleich t ein Q i (x) Q gibt, mit welchem ein zyklischer Shift von e(x) an den Informationsstellen übereinstimmt. Analog zur vorigen Proposition (5.4.1) beweist man die Folgende: Proposition Es sei C ein [n, k, d] Code über F q mit Erzeugermatrix G und Kontrollmatrix H wie oben. Weiters sei u das empfangene Wort mit Syndrom S H (u) = Hu T, e der Fehler vom Gewicht t, wobei 2t + 1 d. Die Informationsstellen von u(x) + Q i (x) sind genau dann korrekt, wenn wt(s H (u) T + S H (Q i )) t wt(q i (x)). Ist das der Fall und ist q = 2, so ist der Fehler von u(x) + Q i (x), der nur in den ersten n k Stellen auftritt, gegeben durch (e 0,..., e n k ) = S H (u) T + S H (Q i ). Der Fehler in u(x) ist dann durch Q i + S H (u) T + S H (Q i ) gegeben. 71

80 5 Codieren und Decodieren der Golay Codes Das liefert den folgenden Algorithmus für binäre zyklische [n, k, d] Codes C mit Kontrollmatrix H wie oben. Decodier-Algorithmus 5 Ist u(x) das empfangene Wort, so führt man so lange zyklische Shifts x i u(x) durch und berechnet deren Syndrome S H (x i u(x)), bis ein i gefunden ist, für welches wt(s H (x i u(x)) + S H (Q i (x))) t wt(q i (x)) gilt. Man korrigiert schließlich u(x) zu c(x) := x n i (x i u(x) + Q T i + S H (u) T + S H (Q i )). Die in diesem Abschnitt beschriebenen Algorithmen machen sich Permutationen eines Codes zu nutzen, die den Code unverändert lassen. Sie lassen sich daher besonders auf jene Codes gut anwenden, für die sehr viele solche Permutationen existieren, die also eine sehr große Automorphismengruppe besitzen. Dies gilt im allgemeinen für zyklische Codes, speziell für Quadratische Reste Codes. Die Golay Codes besitzen sehr große Automorphismengruppen, weshalb die hier beschriebenen Algorithmen für diese sehr gut geeignet sind. 5.5 Ein praktisches Beispiel Im Folgenden wird, in Anlehnung an die Anwendung des erweiterten binären Golay Codes zur Bildübertragung von der Voyager I Mission zur Erde (siehe 2.5), ein Bild mit Hilfe von G 23 codiert. Anschließend wird zur codierten Nachricht ein zufälliger Fehlervektor addiert, der die fehlerbehaftete Datenübertragung simuliert. Danach werden die Fehler, die dann nicht mehr bekannt sind, so weit wie möglich korrigiert und die Nachricht decodiert. Ziel dieses Abschnittes ist es, zu veranschaulichen, wie nützlich fehlerkorrigierende Codes in der Praxis sein können und warum man den Mehraufwand in der Datenübertragung in Kauf nimmt. Dazu werden das ursprüngliche Bild, das uncodierte, aber durch einen zufälligen Fehler gestörte Bild, sowie das codierte, gestörte und danach decodierte Bild miteinander verglichen. Die Umsetzung erfolgte in der Programmiersprache C#. Eine gute Einführung hierfür findet man zum Beispiel in [23]. Der komplette Programmcode ist im Anhang an diese Arbeit zu finden. In diesem Abschnitt werden nur die verwendeten Algorithmen sowie die Ergebnisse dargestellt. Das verwendete Bild jupiter_gany.jpg zeigt den Jupiter und seinen Mond Ganymede ([26]). Es wurde von der Raumsonde Voyager I zu Beginn der 1980er Jahre aufgenommen. Dieses Bild wird zunächst als RGB-Bitmap gespeichert. Dabei wird jedem Pixel je ein Rot-, ein Grün- und ein Blauwert zwischen 0 und 255 zugeordnet, der die Intensität der jeweiligen Farbe angibt. In weiterer Folge werden diese Werte in ihre binären Darstellungen der Länge 8 umgewandelt und schließlich aneinandergereiht in einem langen Vektor gespeichert. Dieser Informationsvektor von Nullen und Einsen stellt die zu übertragene Information dar. Für das Codieren werden je 12 Stellen des Informationsvektors als ein Wort aufgefasst und mit Hilfe des Codier-Algorithmus 5 codiert. Es wird also die Tatsache ausgenutzt, dass jedes Codewort c die Gleichung h 23 (x)c(x) = 0 erfüllen muss. Der Vorteil dieses Algorithmus ist, neben der einfachen Umsetzung, die Tatsache, dass systematisch codiert wird. Das erleichtert das Decodieren, da dann lediglich die angehängten Kontrollsymbole weggestrichen werden müssen. 72

81 5.5 Ein praktisches Beispiel Die so entstandenen Codeworte der Länge 23 werden schließlich wieder aneinandergereiht in einem Nachrichtenvektor gespeichert. Zur Simulation der Übertragung wird ein Vektor der Länge des Nachrichtenvektors erzeugt, dessen Einträge zufällige Werte zwischen 0 und enthalten. Ist eine Komponente dieses Vektors kleiner als 10000p, wobei p die vorgegebene Fehlerwahrscheinlichkeit ist, so wird die Nachricht an dieser Stelle verfälscht. Zur Fehlerkorrektur wird der Decodier-Algorithmus 2 verwendet. Dazu werden zuerst alle möglichen Syndrome berechnet. Dabei wird ausgenutzt, dass im binären Fall die Syndrome gerade die Spalten der Kontrollmatrix, bzw. Summen der Spalten der Kontrollmatrix sind. Ist nämlich H := (h (1),..., h (n) ) eine Kontrollmatrix des binären Codes C, wobei h (i) die i-te Spalte von H bezeichnet, so gilt ja für das empfangene Wort u = c + e S H (u) = S H (e) = He T. Der Fehler e enthält nun genau w := wt(e) Einsen und genau n w Nullen, also e i1 = = e iw = 1 und e j = 0 für j / {i 1,..., i w }. Demnach gilt S H (u) = He T = h (i 1) + + h (iw). Im Falle des binären Golay Codes können alle Fehler vom Gewicht kleiner oder gleich 3 eindeutig korrigiert werden. Also kommen für die Syndrome genau 0, die Spalten der Kontrollmatrix H, die Summen je zweier Spalten von H sowie die Summen je dreier Spalten von H in Frage. Die in diesem Programm verwendete Kontrollmatrix ist jene aus (3.1.11), welche durch das Kontrollpolynom h 23 (x) definiert ist. Anschließend an die Berechnung aller möglichen Syndrome wird für jedes Wort, das heißt für je 23 Stellen des Nachrichtenvektors, das tatsächliche Syndrom berechnet und dann in der Liste der möglichen Syndrome gesucht. Ist das Syndrom nicht 0, das heißt ist das Wort kein Codewort, so wird aus der Position des Syndroms in dieser Liste zurückgerechnet, mit welcher Spalte oder mit der Summe welcher Spalten von H das gegebene Syndrom übereinstimmt. Daraufhin kann das Wort korrigiert werden, denn ist das gegebene Syndrom etwa gleich der Summe der 4., 9. und 17. Spalte von H, so sind gerade an Positionen 4, 9 und 17 Fehler passiert. Schließlich wird der korrigierte Vektor (wieder in Blöcken zu je 23 Komponenten) decodiert und das Ergebnis zu einem Bitmap verwandelt, indem je 8 Bits zu einer Zahl zwischen 0 und 255 umgerechnet und den Farbwerten der einzelnen Pixel zugeordnet werden. Um zu zeigen, dass die Verwendung von fehlerkorrigierenden Codes einen erheblichen Vorteil in der Bildqualität liefert, werden im Programm neben dem Originalbild, welches, wie schon erwähnt, den Jupiter und seinen Mond Ganymede zeigt, sowohl das uncodierte, als auch das mittels G 23 codierte Bild mit einem Fehler versehen und angezeigt. Eine für die Datenübertragung aus dem All aus entsprechender Entfernung realistische Fehlerwahrscheinlichkeit beträgt p = 0, 05. Dabei erhält man folgende Bilder: 73

82 5 Codieren und Decodieren der Golay Codes Abbildung 5.1: Originalbild Abbildung 5.2: Gesto rtes, uncodiertes Bild Abbildung 5.3: Gesto rtes, codiertes Bild nach der Fehlerkorrektur Das Ergebnis dieses praktischen Beispiels ist eindru cklich, man erkennt eine deutliche Verbesserung der Bildqualita t. Da der bina re Golay Code perfekt ist, korrigiert er jedes empfangene Wort zu jenem eindeutigen Codewort, welches diesem am na chsten liegt. Diese Korrektur ist jedoch nur genau dann auch korrekt, wenn in einem Wort nicht mehr als drei Fehler aufgetreten sind. Wurde ein Codewort durch die U bertragung an vier Stellen verfa lscht, so gibt es ein vom urspru nglichen Codewort verschiedenes Codewort, welches sich an ho chstens drei Stellen vom empfangenen Wort unterscheidet. Daher wird in solch einem Fall das empfangene Wort falsch korrigiert. Ist nun die Fehlerwahrscheinlichkeit recht hoch, so ist dies auch recht ha ufig der Fall und daher sieht man auch im decodierten Bild viele fehlerhafte Pixel. 74

83 5.5 Ein praktisches Beispiel Trotz der fehlerhaften Korrektur mancher Bits ist eine dramatische Verbesserung der Bildqualita t gegeben, was den Mehraufwand beim Codieren, in der Datenu bertragung und beim Decodieren mehr als rechtfertigt. In der Praxis gibt es noch viele weitere Methoden das nach der Fehlerkorrektur immer noch leicht fehlerhafte Bild weiter zu korrigieren (z.b. durch Interpolation zwischen den umliegenden Pixel). Um nun noch die Kraft der Fehlerkorrektur zu demonstrieren wurde im Programm auch das nach der Codierung gesto rte Bild ausgegeben. Abbildung 5.4 zeigt das nach der (simulierten) U bertragung empfangene Bild, wa hrend Abbildung 5.5 zum Vergleich wieder das nach der Fehlerkorrektur erhaltene Bild zeigt. Abbildung 5.4: Gesto rtes, codiertes Bild vor der Fehlerkorrektur Abbildung 5.5: Gesto rtes, codiertes Bild nach der Fehlerkorrektur Konkret besteht das gegebene Bild aus Pixel, was insgesamt Farbwerten entspricht. Die bina re Darstellung entha lt somit Bits. Nach der Codierung besteht der Nachrichtenvektor demnach aus Bits, die u bertragen werden sollen. Im vorliegenden Beispiel wurden Bits verfa lscht, von welchen Bits korrekt korrigiert wurden (das entspricht etwa 89%). Bei einem weiteren Aufruf des Programms mit Fehlerwahrscheinlichkeit p = 0, 01 wurden nur noch Bits verfa lscht. Korrekt korrigiert wurden hier Bits, was schon 99, 8% der verfa lschten Bits entspricht. Bei einer Fehlerwahrscheinlichkeit von p = 0, 001 wurden bei neuerlicher Ausfu hrung des Programms alle Fehler korrekt korrigiert und das decodierte Bild entsprach exakt dem gesendeten. Diese Fehlerwahrscheinlichkeit ist fu r Datenu bertragungen auf der Erde nicht unrealistisch. Verwendet man also den bina ren Golay Code bei einer Datenu bertragung auf der Erde, so kann man mit sehr hoher Wahrscheinlichkeit davon ausgehen, dass alle Fehler korrekt korrigiert werden. Alles in allem wurde, so denke ich, die Sinnhaftigkeit der Verwendung fehlerkorrigierender Codes, zumindest in diesem speziellen Beispiel, gerechtfertigt. Die Bilder zeigten, dass es einen deutlichen Unterschied macht ob man fu r die Datenu bertragung Codes verwendet oder nicht. Außerdem wurde veranschaulicht, wie ma chtig die Fehlerkorrektur im Fall des bina ren Golay Codes G23 ist. 75

Einführung in die Kodierungstheorie

Einführung in die Kodierungstheorie Einführung in die Kodierungstheorie Einführung Vorgehen Beispiele Definitionen (Code, Codewort, Alphabet, Länge) Hamming-Distanz Definitionen (Äquivalenz, Coderate, ) Singleton-Schranke Lineare Codes Hamming-Gewicht

Mehr

2.1 Codes: einige Grundbegriffe

2.1 Codes: einige Grundbegriffe Gitter und Codes c Rudolf Scharlau 2. Mai 2009 51 2.1 Codes: einige Grundbegriffe Wir stellen die wichtigsten Grundbegriffe für Codes über dem Alphabet F q, also über einem endlichen Körper mit q Elementen

Mehr

3 Der Hamming-Code. Hamming-Codes

3 Der Hamming-Code. Hamming-Codes 3 Der Hamming-Code Hamming-Codes Ein binärer Code C heißt ein Hamming-Code Ha s, wenn seine Kontrollmatrix H als Spalten alle Elemente in Z 2 s je einmal hat. Die Parameter eines n-k-hamming-codes sind:

Mehr

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

4. Woche Decodierung; Maximale, Perfekte und Optimale Codes. 4. Woche: Decodierung; Maximale, Perfekte und Optimale Codes 69/ 140 4 Woche Decodierung; Maximale, Perfekte und Optimale Codes 4 Woche: Decodierung; Maximale, Perfekte und Optimale Codes 69/ 140 Szenario für fehlerkorrigierende Codes Definition (n, M)-Code Sei C {0, 1}

Mehr

6 Fehlerkorrigierende Codes

6 Fehlerkorrigierende Codes 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.

Mehr

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s Nachtrag zur allgemeinen Vektorraum-Theorie. 1.5.15. Direkte Summen. Sei V ein Vektorraum, seien U 1,..., U t Unterräume, wir schreiben V = U 1 U 2 U t = t i=1 U i falls die folgenden beiden Bedingungen

Mehr

Fehlerkorrigierende Codes

Fehlerkorrigierende Codes Fehlerkorrigierende Codes SS 2013 Gerhard Dorfer 2 Inhaltsverzeichnis 1 Fehlerkorrigierende Codes 4 1.1 Einführende Beispiele................................. 4 1.2 Mathematische Grundlagen..............................

Mehr

Codes und Codegitter. Katharina Distler. 27. April 2015

Codes und Codegitter. Katharina Distler. 27. April 2015 Codes und Codegitter Katharina Distler 7. April 015 Inhaltsverzeichnis 1 Codes 4 Codegitter 14 Einleitung Die folgende Seminararbeit behandelt das Konzept von Codes und Codegittern. Da sie bei der Informationsübertragung

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Zusammenfassung zu Codierungstheorie

Zusammenfassung zu Codierungstheorie Zusammenfassung zu Codierungstheorie Proseminar Mathematische Modelle in den Naturwissenschaften WS 09/10 Thomas Holzer 0755600 Sandra Sampl 0755049 Kathrin Oberradter 0755123 1 Inhaltsverzeichnis 1. Einführung

Mehr

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

Lineare Codes. Dipl.-Inform. Wolfgang Globke. Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 19 Lineare Codes Dipl.-Inform. Wolfgang Globke Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 19 Codes Ein Code ist eine eindeutige Zuordnung von Zeichen

Mehr

Lineare Algebra - alles was man wissen muß

Lineare Algebra - alles was man wissen muß Statistik für Bioinformatiker SoSe 3 Rainer Spang Lineare Algebra - alles was man wissen muß Der Titel ist natürlich gelogen, aber was wir hier zusammengetragen haben ist zumindest ein Anfang. Weniger

Mehr

Empfänger. Sender. Fehlererkennung und ggf. Fehlerkorrektur durch redundante Informationen. Längssicherung durch Paritätsbildung (Blockweise)

Empfänger. Sender. Fehlererkennung und ggf. Fehlerkorrektur durch redundante Informationen. Längssicherung durch Paritätsbildung (Blockweise) Datensicherung Bei der digitalen Signalübertragung kann es durch verschiedene Einflüsse, wie induktive und kapazitive Einkopplung oder wechselnde Potentialdifferenzen zwischen Sender und Empfänger zu einer

Mehr

Mathematik II für Studierende der Informatik Kapitel. Kodierungstheorie

Mathematik II für Studierende der Informatik Kapitel. Kodierungstheorie Mathematik II für Studierende der Informatik Kapitel Kodierungstheorie Markus Junker Sommersemester 2011 (korrigierte Version vom Sommersemester 2012) Einführung, Beispiele, Definitionen Ausgangspunkt

Mehr

Zusammenfassung zu Codierungstheorie

Zusammenfassung zu Codierungstheorie Zusammenfassung zu Codierungstheorie Sara Adams 5. Juli 2005 Diese Zusammenfassung basiert auf der Vorlesung Codierungstheorie gehalten im Sommersemester 2005 von Prof. Dr. Hans-Dietrich Gronau an der

Mehr

Grundlagen der Technischen Informatik. 2. Übung

Grundlagen der Technischen Informatik. 2. Übung Grundlagen der Technischen Informatik 2. Übung Christian Knell Keine Garantie für Korrekt-/Vollständigkeit Organisatorisches Übungsblätter zuhause vorbereiten! In der Übung an der Tafel vorrechnen! Bei

Mehr

Einführung in die Vektor- und Matrizenrechnung. Matrizen

Einführung in die Vektor- und Matrizenrechnung. Matrizen Einführung in die Vektor- und Matrizenrechnung Matrizen Definition einer Matrix Unter einer (reellen) m x n Matrix A versteht man ein rechteckiges Schema aus reellen Zahlen, die wie folgt angeordnet sind:

Mehr

Single Parity check Codes (1)

Single Parity check Codes (1) Single Parity check Codes (1) Der Single Parity check Code (SPC) fügt zu dem Informationsblock u = (u 1, u 2,..., u k ) ein Prüfbit (englisch: Parity) p hinzu: Die Grafik zeigt drei Beispiele solcher Codes

Mehr

Theoretische Grundlagen der Informatik WS 09/10

Theoretische Grundlagen der Informatik WS 09/10 Theoretische Grundlagen der Informatik WS 09/10 - Tutorium 6 - Michael Kirsten und Kai Wallisch Sitzung 13 02.02.2010 Inhaltsverzeichnis 1 Formeln zur Berechnung Aufgabe 1 2 Hamming-Distanz Aufgabe 2 3

Mehr

KANALCODIERUNG AUFGABEN. Aufgabe 1. Aufgabe 2

KANALCODIERUNG AUFGABEN. Aufgabe 1. Aufgabe 2 AUFGABEN KANALCODIERUNG Aufgabe Wir betrachten den Hamming-Code mit m = 5 Prüfbits. a) Wie gross ist die Blocklänge n dieses Codes? b) Wie viele gültige Codewörter umfasst dieser Code? c) Leiten Sie die

Mehr

Kapitel 1: Codierungstheorie. 1.2 Quellcodierung 1.3 Fehlererkennende Codes 1.4 Fehlerkorrigierende Codes

Kapitel 1: Codierungstheorie. 1.2 Quellcodierung 1.3 Fehlererkennende Codes 1.4 Fehlerkorrigierende Codes Inhalt: 1.1 Einführung 1.2 Quellcodierung 1.3 Fehlererkennende Codes 1.4 Fehlerkorrigierende Codes 1.1 Einführung In In der der Codierungstheorie unterscheidet man man Quellcodierung und und Kanalcodierung.

Mehr

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

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 1 Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 1 Woche: Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 5/ 44 Unser Modell Shannon

Mehr

3.3 Eigenwerte und Eigenräume, Diagonalisierung

3.3 Eigenwerte und Eigenräume, Diagonalisierung 3.3 Eigenwerte und Eigenräume, Diagonalisierung Definition und Lemma 3.3.1. Sei V ein K-Vektorraum, φ End K (V ), λ K. Wir defnieren den zu λ gehörigen Eigenraum von φ als Dies ist ein Unterraum von V.

Mehr

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

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema 2x 4 + x 3 + x + 3 div x 2 + x 1 = 2x 2 x + 3 (2x 4 + 2x 3 2x 2 ) x 3 + 2x 2 + x + 3 ( x

Mehr

Seminararbeit für das SE Reine Mathematik- Graphentheorie

Seminararbeit für das SE Reine Mathematik- Graphentheorie Seminararbeit für das SE Reine Mathematik- Graphentheorie Der binäre Rang, der symplektische Graph, die Spektralzerlegung und rationale Funktionen Vortrag am 24.01.2012 Heike Farkas 0410052 Inhaltsverzeichnis

Mehr

Codierung zur Fehlerkorrektur und Fehlererkennung

Codierung zur Fehlerkorrektur und Fehlererkennung Codierung zur Fehlerkorrektur und Fehlererkennung von Dr.-techn. Joachim Swoboda Mit 39 Bildern und 24 Tafeln R. OLDENBOURG VERLAG MÜNCHEN WIEN 1973 Inhalt Vorwort 9 1. Einführung 11 1.1 Redundante Codierung

Mehr

Thema: Hamming-Codes. Titelblatt anonymisiert

Thema: Hamming-Codes. Titelblatt anonymisiert Thema: Hamming-Codes Titelblatt anonymisiert Hamming-Codes.Einführung in die Kodierungstheorie... 3. Grundlegendes über Codewörter... 3. Matrizen... 4.3 Die maßgebliche Stelle... 5.Grundlegende Ideen...5

Mehr

0, v 6 = 2 2. 1, v 4 = 1. 2. 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 )

0, v 6 = 2 2. 1, v 4 = 1. 2. 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 ) Aufgabe 65. Ganz schön span(n)end. Gegeben sei folgende Menge M von 6 Vektoren v, v,..., v 6 R 4 aus Aufgabe P 6: M = v =, v =, v =, v 4 =, v 5 =, v 6 = Welche der folgenden Aussagen sind wahr? span(v,

Mehr

Elemente der Analysis II

Elemente der Analysis II Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel

Mehr

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Codierung Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Ein bisschen Informationstheorie Betrachten wir das folgende Problem: Wie lautet eine sinnvolle Definition für das quantitative

Mehr

Lineare Codes. 17.1 Linearcodes

Lineare Codes. 17.1 Linearcodes Teil IV Codes 17 Lineare Codes Lineare Codes werden in Kommunikationssystemen zur sicheren Übertragung von Nachrichten eingesetzt, etwa in der Telekommunikation und bei der Speicherung von Daten auf Compact

Mehr

Das Kryptosystem von McEliece. auf der Basis von linearen Codes

Das Kryptosystem von McEliece. auf der Basis von linearen Codes Das Kryptosystem von McEliece auf der Basis von linearen Codes Anforderungen Public-Key Kryptosysteme E e (m) = c Verschlüsselung D d (c) = m Entschlüsselung mit Schl. effizient effizient 2/25 Anforderungen

Mehr

Harm Pralle. Codierungstheorie WS 2005/06. Institut Computational Mathematics Technische Universität Braunschweig

Harm Pralle. Codierungstheorie WS 2005/06. Institut Computational Mathematics Technische Universität Braunschweig Harm Pralle Codierungstheorie WS 2005/06 Institut Computational Mathematics Technische Universität Braunschweig II Literatur: A. Beutelspacher und U. Rosenbaum. Projektive Geometrie. Vieweg, Wiesbaden

Mehr

1 Das Lemma von Burnside und seine Anwendungen

1 Das Lemma von Burnside und seine Anwendungen Das Lemma von Burnside und seine Anwendungen Mit dem Lemma von Burnside lassen sich Zählprobleme lösen, bei denen Symmetrien eine Rolle spielen. Betrachten wir als einführendes Beispiel die Anzahl der

Mehr

(2) (x 2 1 + x 2 2 + + x 2 n)(y 2 1 + y 2 2 + + y 2 n) = z 2 1 + z 2 2 + + z 2 n

(2) (x 2 1 + x 2 2 + + x 2 n)(y 2 1 + y 2 2 + + y 2 n) = z 2 1 + z 2 2 + + z 2 n Über die Komposition der quadratischen Formen von beliebig vielen Variablen 1. (Nachrichten von der k. Gesellschaft der Wissenschaften zu Göttingen, Mathematisch-physikalische Klasse, 1898, S. 309 316.)

Mehr

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

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt - 17 - Die Frage ist hier also: Für welche x R gilt x = x + 1? Das ist eine quadratische Gleichung für x. Es gilt x = x + 1 x x 3 = 0, und man kann quadratische Ergänzung machen:... ( ) ( ) x x + = 3 +

Mehr

9 Codes. Hochschule für Angewandte Wissenschaften Hamburg FACHBEREICH ELEKTROTECHNIK UND INFORMATIK DIGITALTECHNIK 9-1

9 Codes. Hochschule für Angewandte Wissenschaften Hamburg FACHBEREICH ELEKTROTECHNIK UND INFORMATIK DIGITALTECHNIK 9-1 9 Codes 9.1 Charakterisierung und Klassifizierung Definition: Das Ergebnis einer eindeutigen Zuordnung zweier Zeichen- bzw. Zahlenmengen wird Code genannt. Die Zuordnung erfolgt über eine arithmetische

Mehr

2 Die Darstellung linearer Abbildungen durch Matrizen

2 Die Darstellung linearer Abbildungen durch Matrizen 2 Die Darstellung linearer Abbildungen durch Matrizen V und V seien Vektorräume über einem Körper K. Hom K (V, V ) bezeichnet die Menge der K linearen Abbildungen von V nach V. Wir machen Hom K (V, V )

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

Mehr

Formelsammlung. Wahrscheinlichkeit und Information

Formelsammlung. Wahrscheinlichkeit und Information Formelsammlung Wahrscheinlichkeit und Information Ein Ereignis x trete mit der Wahrscheinlichkeit p(x) auf, dann ist das Auftreten dieses Ereignisses verbunden mit der Information I( x): mit log 2 (z)

Mehr

Teil II. Nichtlineare Optimierung

Teil II. Nichtlineare Optimierung Teil II Nichtlineare Optimierung 60 Kapitel 1 Einleitung In diesem Abschnitt wird die Optimierung von Funktionen min {f(x)} x Ω betrachtet, wobei Ω R n eine abgeschlossene Menge und f : Ω R eine gegebene

Mehr

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

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren. Basis und Dimension Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren. Definition. Sei V ein K-Vektorraum und (v i ) i I eine Familie von Vektoren

Mehr

Der Zwei-Quadrate-Satz von Fermat

Der Zwei-Quadrate-Satz von Fermat Der Zwei-Quadrate-Satz von Fermat Proseminar: Das BUCH der Beweise Fridtjof Schulte Steinberg Institut für Informatik Humboldt-Universität zu Berlin 29.November 2012 1 / 20 Allgemeines Pierre de Fermat

Mehr

Grundlagen der Technischen Informatik. Codierung und Fehlerkorrektur. Kapitel 4.2

Grundlagen der Technischen Informatik. Codierung und Fehlerkorrektur. Kapitel 4.2 Codierung und Fehlerkorrektur Kapitel 4.2 Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software-Co-Design Technische Informatik - Meilensteine Informationstheorie Claude Elwood Shannon (geb. 1916)

Mehr

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

Codierungsverfahren SS 2011. Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur Wie die zyklischen BCH-Codes zur Mehrbitfehler-Korrektur eignen sich auch die sehr verwandten Reed-Solomon-Codes (= RS-Codes) zur Mehrbitfehler-Korrektur.

Mehr

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

Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011 Rechnernetze Übung 5 Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011 Ziel: Nachrichten fehlerfrei übertragen und ökonomisch (wenig Redundanz) übertragen Was ist der Hamming-Abstand?

Mehr

Codierungstheorie. Anton Betten Harald Fripertinger Adalbert Kerber Alfred Wassermann Karl-Heinz Zimmermann. Konstruktion und Anwendung linearer Codes

Codierungstheorie. Anton Betten Harald Fripertinger Adalbert Kerber Alfred Wassermann Karl-Heinz Zimmermann. Konstruktion und Anwendung linearer Codes Anton Betten Harald Fripertinger Adalbert Kerber Alfred Wassermann Karl-Heinz Zimmermann Codierungstheorie Konstruktion und Anwendung linearer Codes Springer-Verlag Berlin Heidelberg New York London Paris

Mehr

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008 Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008 Alexander Bobenko und Ivan Izmestiev Technische Universität Berlin 1 Hausaufgaben vom 12.09.2007 Zahlentheorie 1 Aufgabe 1.1 Berechne die (quadratischen)

Mehr

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

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Einführung in die Codierungstheorie. Rudolf Schürer

Einführung in die Codierungstheorie. Rudolf Schürer Einführung in die Codierungstheorie Rudolf Schürer 8. Februar 2008 Vorwort Dieses Skript entstand im Zuge der gleichnamigen Vorlesung, die ich im Wintersemester 2007/08 am Fachbereich Mathematik der Universität

Mehr

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

GF(2 2 ) Beispiel eines Erweiterungskörpers (1) GF(2 2 ) Beispiel eines Erweiterungskörpers (1) Im Kapitel 2.1 wurde bereits gezeigt, dass die endliche Zahlenmenge {0, 1, 2, 3} q = 4 nicht die Eigenschaften eines Galoisfeldes GF(4) erfüllt. Vielmehr

Mehr

Sprechen wir über Zahlen (Karl-Heinz Wolff)

Sprechen wir über Zahlen (Karl-Heinz Wolff) Sprechen wir über Zahlen (Karl-Heinz Wolff) Die Überschrift ist insoweit irreführend, als der Autor ja schreibt und nicht mit dem Leser spricht. Was Mathematik im allgemeinen und Zahlen im besonderen betrifft,

Mehr

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:

Mehr

Ein neuer Beweis, dass die Newton sche Entwicklung der Potenzen des Binoms auch für gebrochene Exponenten gilt

Ein neuer Beweis, dass die Newton sche Entwicklung der Potenzen des Binoms auch für gebrochene Exponenten gilt Ein neuer Beweis, dass die Newton sche Entwicklung der Potenzen des Binoms auch für gebrochene Exponenten gilt Leonhard Euler 1 Wann immer in den Anfängen der Analysis die Potenzen des Binoms entwickelt

Mehr

Codierung. H.-G. Hopf

Codierung. H.-G. Hopf Codierung H.-G. Hopf Inhalt Informationsübermittlung Codierung von Zeichen GDI: Codierung / 2 Inhalt Informationsübermittlung Codierung von Zeichen GDI: Codierung / 3 Ideale Kommunikation Übertragungskanal

Mehr

3. Zusammenhang. 22 Andreas Gathmann

3. Zusammenhang. 22 Andreas Gathmann 22 Andreas Gathmann 3. Zusammenhang Eine der anschaulichsten Eigenschaften eines topologischen Raumes ist wahrscheinlich, ob er zusammenhängend ist oder aus mehreren Teilen besteht. Wir wollen dieses Konzept

Mehr

Codierung, Codes (variabler Länge)

Codierung, Codes (variabler Länge) Codierung, Codes (variabler Länge) A = {a, b, c,...} eine endliche Menge von Nachrichten (Quellalphabet) B = {0, 1} das Kanalalphabet Eine (binäre) Codierung ist eine injektive Abbildung Φ : A B +, falls

Mehr

Codierungstheorie. Skript zur Vorlesung im WS 2005/06

Codierungstheorie. Skript zur Vorlesung im WS 2005/06 Codierungstheorie Skript zur Vorlesung im WS 2005/06 Prof. Peter Hauck Arbeitsbereich Diskrete Mathematik Wilhelm-Schickard-Institut Universität Tübingen L A TEX-Fassung von Daniel Raible 2 Inhaltsverzeichnis

Mehr

Beispiel 11.2. Wenn p ein Polynom vom Grad größer gleich 1 ist, ist q : C Ĉ definiert durch q (z) =

Beispiel 11.2. Wenn p ein Polynom vom Grad größer gleich 1 ist, ist q : C Ĉ definiert durch q (z) = Funktionentheorie, Woche Funktionen und Polstellen. Meromorphe Funktionen Definition.. Sei U C offen und sei f : U gilt, nennt man f meromorph auf U: Ĉ eine Funktion. Wenn folgendes. P := f hat keine Häufungspunkte;.

Mehr

OPERATIONS-RESEARCH (OR)

OPERATIONS-RESEARCH (OR) OPERATIONS-RESEARCH (OR) Man versteht darunter die Anwendung mathematischer Methoden und Modelle zur Vorbereitung optimaler Entscheidungen bei einem Unternehmen. Andere deutsche und englische Bezeichnungen:

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

Kryptologie und Kodierungstheorie

Kryptologie und Kodierungstheorie Kryptologie und Kodierungstheorie Alexander May Horst Görtz Institut für IT-Sicherheit Ruhr-Universität Bochum Lehrerfortbildung 17.01.2012 Kryptologie Verschlüsselung, Substitution, Permutation 1 / 18

Mehr

Übungen zur Ingenieur-Mathematik III WS 2009/10 Blatt 10 21.12.2009

Übungen zur Ingenieur-Mathematik III WS 2009/10 Blatt 10 21.12.2009 Übungen zur Ingenieur-Mathematik III WS 2009/10 Blatt 10 21.12.2009 Aufgabe 35: Thema: Singulärwertzerlegung und assoziierte Unterräume Sei A eine m n Matrix mit Rang r und A = UDV T ihre Singulärwertzerlegung.

Mehr

Codierungstheorie. Carsten Damm. Stand: 2. Juli 2010. Vorlesungsskript

Codierungstheorie. Carsten Damm. Stand: 2. Juli 2010. Vorlesungsskript Codierungstheorie Carsten Damm Stand: 2. Juli 2010 Vorlesungsskript Carsten Damm Institut für Informatik Georg-August-Universität Göttingen c Carsten Damm Vorwort Die Codierungstheorie untersucht Verfahren

Mehr

Vorlesung. Funktionen/Abbildungen 1

Vorlesung. Funktionen/Abbildungen 1 Vorlesung Funktionen/Abbildungen 1 1 Grundlagen Hinweis: In dieser Vorlesung werden Funktionen und Abbildungen synonym verwendet. In der Schule wird eine Funktion häufig als eindeutige Zuordnung definiert.

Mehr

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 9.. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 Die Grundfrage bei der Anwendung des Satzes über implizite Funktionen betrifft immer die folgende Situation: Wir haben eine Funktion f : V W und eine Stelle x

Mehr

Werkstatt Multiplikation Posten: 8-Bit Multiplikation. Informationsblatt für die Lehrkraft. 8-Bit Multiplikation

Werkstatt Multiplikation Posten: 8-Bit Multiplikation. Informationsblatt für die Lehrkraft. 8-Bit Multiplikation Informationsblatt für die Lehrkraft 8-Bit Multiplikation Informationsblatt für die Lehrkraft Thema: Schultyp: Vorkenntnisse: Bearbeitungsdauer: 8-Bit Multiplikation (im Binärsystem) Mittelschule, technische

Mehr

Kochen mit Jordan. Vorbereitungen. Schnellzubereitung. JNF für Genießer wenn s noch etwas mehr sein darf

Kochen mit Jordan. Vorbereitungen. Schnellzubereitung. JNF für Genießer wenn s noch etwas mehr sein darf Kochen mit Jordan Vorbereitungen Man nehme eine Matrix A R n n und bestimme ihr charakteristisches Polynom p(λ) = (λ c ) r (λ c j ) rj C[X] Dabei gilt: algebraische Vielfachheit r j ˆ= Länge des Jordanblocks

Mehr

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Also kann nur A ist roter Südler und B ist grüner Nordler gelten. Aufgabe 1.1: (4 Punkte) Der Planet Og wird von zwei verschiedenen Rassen bewohnt - dem grünen und dem roten Volk. Desweiteren sind die Leute, die auf der nördlichen Halbkugel geboren wurden von denen auf

Mehr

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt:

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt: Informatik 13: Gierhardt Theoretische Informatik III Berechenbarkeit Nicht-berechenbare Funktionen Nach der Church-Turing-These kann alles, was berechenbar ist, mit einer Turing-Maschine oder einer While-Maschine

Mehr

Lehrveranstaltung Speichersysteme Sommersemester 2009

Lehrveranstaltung Speichersysteme Sommersemester 2009 Lehrveranstaltung Speichersysteme Sommersemester 2009 Kapitel 6: Double Disk Failures André Brinkmann Data CorrupDon in the Storage Stack Was sind Latent Sector Errors Was ist Silent Data CorrupDon Checksum

Mehr

Leitung 1 Leitung 2 0 0 0 1 1 0 1 1

Leitung 1 Leitung 2 0 0 0 1 1 0 1 1 1 1 Vorbetrachtungen Wie könnte eine Codierung von Zeichen im Computer realisiert werden? Der Computer arbeitet mit elektrischem Strom, d. h. er kann lediglich zwischen den beiden Zuständen Strom an und

Mehr

LINEARE ALGEBRA Ferienkurs. Hanna Schäfer Philipp Gadow

LINEARE ALGEBRA Ferienkurs. Hanna Schäfer Philipp Gadow LINEARE ALGERA Ferienkurs Hanna Schäfer Philipp Gadow INHALT Eigenwerte und Eigenvektoren. asiswechsel.2 Eigenwertgleichung 2.3 Diagonalisierbarkeit 5.4 Trigonalisierung 8.5 Zusatzmaterial 8 Aufgaben 9

Mehr

Besser sehen, besser hören! Fehlerkorrigierende Codes

Besser sehen, besser hören! Fehlerkorrigierende Codes Besser sehen, besser hören! Fehlerkorrigierende Codes Ringvorlesung Technische Mathematik 20. Mai 2010 Hermann Kautschitsch Institut für Mathematik Universität Klagenfurt Vorwort Der stetig zunehmende

Mehr

Informationstheorie und Codierung. Prof. Dr.-Ing. Lilia Lajmi l.lajmi@ostfalia.de

Informationstheorie und Codierung. Prof. Dr.-Ing. Lilia Lajmi l.lajmi@ostfalia.de Informationstheorie und Codierung Prof. Dr.-Ing. Lilia Lajmi l.lajmi@ostfalia.de Inhaltsverzeichnis 3. Kanalcodierung 3.1 Nachrichtentheorie für gestörte Kanäle 3.1.1 Transinformation 3.1.2 Kanalkapazität

Mehr

ax 2 + bx + c = 0, (4.1)

ax 2 + bx + c = 0, (4.1) Kapitel 4 Komplexe Zahlen Wenn wir uns auf die reellen Zahlen beschränken, ist die Operation des Wurzelziehens (also die Umkehrung der Potenzierung) nicht immer möglich. Zum Beispiel können wir nicht die

Mehr

DIGITALTECHNIK 04 ZAHLEN CODES

DIGITALTECHNIK 04 ZAHLEN CODES Seite 1 von 22 DIGITALTECHNIK 04 ZAHLEN CODES Inhalt Seite 2 von 22 1 CODIERUNG... 3 1.1 NUMERISCHE CODES... 4 1.2 WORTCODES... 4 1.3 DER DUALCODE... 5 1.4 DER GRAY-CODE... 5 1.5 ZIFFERNCODES (BCD-CODES)...

Mehr

FEHLERKORRIGIERENDE CODES

FEHLERKORRIGIERENDE CODES FEHLERKORRIGIERENDE CODES Inhalt der Vorlesung Jürgen Koslowski @ Institut für Theoretische Informatik Technische Universität Braunschweig Juli 2009 INHALTSVERZEICHNIS -1 Inhaltsverzeichnis 0 Einführung

Mehr

RSA Verfahren. Kapitel 7 p. 103

RSA Verfahren. Kapitel 7 p. 103 RSA Verfahren RSA benannt nach den Erfindern Ron Rivest, Adi Shamir und Leonard Adleman war das erste Public-Key Verschlüsselungsverfahren. Sicherheit hängt eng mit der Schwierigkeit zusammen, große Zahlen

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Codierungstheorie und Kryptographie

Codierungstheorie und Kryptographie Codierungstheorie und Kryptographie Udo Hebisch SS 2015 Dieses Skript enthält nur den roten Faden der Vorlesung. Wesentliche Inhalte werden ausschließlich in der Vorlesung vermittelt. Daher ist dieses

Mehr

1 Kryptosysteme 1 KRYPTOSYSTEME. Definition 1.1 Eine Kryptosystem (P(A), C(B), K, E, D) besteht aus

1 Kryptosysteme 1 KRYPTOSYSTEME. Definition 1.1 Eine Kryptosystem (P(A), C(B), K, E, D) besteht aus 1 RYPTOSYSTEME 1 ryptosysteme Definition 1.1 Eine ryptosystem (P(A), C(B),, E, D) besteht aus einer Menge P von lartexten (plaintext) über einem lartextalphabet A, einer Menge C von Geheimtexten (ciphertext)

Mehr

4. Relationen. Beschreibung einer binären Relation

4. Relationen. Beschreibung einer binären Relation 4. Relationen Relationen spielen bei Datenbanken eine wichtige Rolle. Die meisten Datenbanksysteme sind relational. 4.1 Binäre Relationen Eine binäre Relation (Beziehung) R zwischen zwei Mengen A und B

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

194 Beweis eines Satzes von Tschebyschef. Von P. E RDŐS in Budapest. Für den zuerst von T SCHEBYSCHEF bewiesenen Satz, laut dessen es zwischen einer natürlichen Zahl und ihrer zweifachen stets wenigstens

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Projektive Moduln. Lemma/Definition 1.1. Folgende Aussagen für einen R-Modul P sind äquivalent: (i) P erfüllt folgende Liftungseigenschaft:

Projektive Moduln. Lemma/Definition 1.1. Folgende Aussagen für einen R-Modul P sind äquivalent: (i) P erfüllt folgende Liftungseigenschaft: Seminar Summen von Quadraten und K-Theorie Projektive Moduln Im Folgenden sei R ein assoziativer Ring mit Eins, nicht notwendigerweise kommutativ. R-Modul ist im Folgenden stets ein Rechts-R-Modul. Ein

Mehr

17. Penalty- und Barriere-Methoden

17. Penalty- und Barriere-Methoden H.J. Oberle Optimierung SoSe 01 17. Penalty- und Barriere-Methoden Penalty- und Barriere Methoden gehören zu den ältesten Ansätzen zur Lösung allgemeiner restringierter Optimierungsaufgaben. Die grundlegende

Mehr

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011 Graphen: Einführung Vorlesung Mathematische Strukturen Zum Ende der Vorlesung beschäftigen wir uns mit Graphen. Graphen sind netzartige Strukturen, bestehend aus Knoten und Kanten. Sommersemester 20 Prof.

Mehr

Vorlesung. Komplexe Zahlen

Vorlesung. Komplexe Zahlen Vorlesung Komplexe Zahlen Motivation Am Anfang der Entwicklung der komplexen Zahlen stand ein algebraisches Problem: die Bestimmung der Lösung der Gleichung x 2 + 1 = 0. 1 Mit der Lösung dieses Problems

Mehr

Der Huffman Algorithmus

Der Huffman Algorithmus Der Huffman Algorithmus Für das Folgende setzen wir voraus, dass die Quellensymbole q ν einem Alphabet {q μ } = {A, B, C,...} mit dem Symbolumfang M entstammen und statistisch voneinander unabhängig seien.

Mehr

Code-Arten und Code-Sicherung. Literatur: Blieberger et.al.: Informatik (Kap. 3 und 4), Springer-Verlag R.-H. Schulz: Codierungstheorie, Vieweg

Code-Arten und Code-Sicherung. Literatur: Blieberger et.al.: Informatik (Kap. 3 und 4), Springer-Verlag R.-H. Schulz: Codierungstheorie, Vieweg Codierungstheorie Code-Arten und Code-Sicherung Inhaltsübersicht und Literatur Informationstheorie Was ist eine Codierung? Arten von Codes Informationsgehalt und Entropie Shannon'sches Codierungstheorem

Mehr

A.1 Schaltfunktionen und Schaltnetze

A.1 Schaltfunktionen und Schaltnetze Schaltfunktionen und Schaltnetze A. Schaltfunktionen und Schaltnetze 22 Prof. Dr. Rainer Manthey Informatik II Bedeutung des Binärsystems für den Rechneraufbau Seit Beginn der Entwicklung von Computerhardware

Mehr

3 Codierung ... 3.3 Code-Sicherung. 3.3.1 Stellendistanz und Hamming-Distanz. 60 3 Codierung

3 Codierung ... 3.3 Code-Sicherung. 3.3.1 Stellendistanz und Hamming-Distanz. 60 3 Codierung 60 3 Codierung 3 Codierung... 3.3 Code-Sicherung Oft wählt man absichtlich eine redundante Codierung, so dass sich die Code-Wörter zweier Zeichen (Nutzwörter) durch möglichst viele binäre Stellen von allen

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

Mehr

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

Codierung. Codierung. EAN Europäische Artikelnummer Ziffern 1 und 2 codieren das Hersteller-Land. Ziffer 2 bis 12 codieren Händler und Ware Codierung Codierung Haydn: Streichquartett op 54.3 aus Largo, Violine I 1 2 Ziffern 1 und 2 codieren das Hersteller-Land Ziffer 2 bis 12 codieren Händler und Ware Die letzte Ziffer ist eine Prüfziffer

Mehr

Satz 25 A sei eine (n n)-matrix über K

Satz 25 A sei eine (n n)-matrix über K Satz 25 Satz 25 A sei eine (n n)-matrix über K Satz 25 A sei eine (n n)-matrix über K mit paarweise verschiedenen Eigenwerten λ 1,...,λ m. Satz 25 A sei eine (n n)-matrix über K mit paarweise verschiedenen

Mehr

Der Bipolar-Transistor und die Emitterschaltung Gruppe B412

Der Bipolar-Transistor und die Emitterschaltung Gruppe B412 TECHNISCHE UNIVERSITÄT MÜNCHEN Der Bipolar-Transistor und die Emitterschaltung Gruppe B412 Patrick Christ und Daniel Biedermann 16.10.2009 1. INHALTSVERZEICHNIS 1. INHALTSVERZEICHNIS... 2 2. AUFGABE 1...

Mehr

Grundlagen der Informatik 1

Grundlagen der Informatik 1 Grundlagen der Informatik 1 Prof. Dr. J. Schmidt Fakultät für Informatik GDI1 WS 2013/14 Kodierung, Kompression, Verschlüsselung Kodierung Überblick Vorlesung Kapitel 1: Einführung in die Informatik Kapitel

Mehr