In diesem Abschnitt beschreibtF/Fqeinen Funktionenk¨orper vom Geschlecht g mit exaktem Konstantenk¨orperFq.
Definition
Seien P1, . . . , Pn Stellen vom Grad eins und A=Pn
i=1Pi. Sei G ein weiterer Divisor mit supp(G)∩supp(A) = ∅. Der Goppa-Code zu A und G (mittels Auswertung) ist
C(A, G) ={(x(P1), . . . , x(Pn))|x∈ L(G)}.
1 Satz. Der Goppa-CodeC(A, G) ist ein (n, k, d)q-Code mit n= deg(A),
k = dim(G)−dim(G−A), d= deg(A)−deg(G) +cG,
wobei cG = min{deg(C)|C≥0 und C ∼G−B f¨ur ein 0≤B ≤A}.
Beweis. Die Aussage n = deg(A) ist klar. Weiter ist ev : L(G) →C(A, G), x 7→ (x(P1), . . . , x(Pn)) ein Epimorphismus mit Kern L(G−A). Also folgt C(A, G)∼=L(G)/L(G−A) und darausk = dim(G)−dim(G−A).
F¨ur x ∈ L(G)\{0} sei 0 ≤ B ≤ A definiert als Summe der Stellen Pi
mit x(Pi) = 0 und C ≥ 0 definiert als C = (x) + G−B. Dann gilt C ∼ G−B und C kommt in der Minimumsbildung vor. Umgekehrt seien C und B aus der Minimumsbildung. W¨ahle x ∈ F× mit (x) = C −G+B. Dann gilt x ∈ L(G)\{0}. Wir sehen, daß die Abbildungen (x) 7→ (B, C) und (B, C)7→(x) zueinander invers sind. Nun giltw(ev(x)) = deg(A)−deg(B) = deg(A)−deg(G) + deg(C) und die Minimumsbildungen ¨uber x ∈L(G) auf der linken und C mit den obigen Bedingungen auf der rechten Seite liefern dasselbe Ergebnisd.
1
2 Korollar. F¨ur deg(G−A)<0 gilt k = dim(G), d≥n−k+ 1−g.
F¨ur deg(G−A)≥2g−1 gilt k =n.
Beweis. Folgt aus dem Satz von Riemann Roch, siehe Matzat Skript Korol- lar 11.4.
Goppa-Codes mit deg(G−A) < 0 erf¨ullen nach der Singleton-Schranke also
n+ 1−g ≤d+k≤n+ 1.
Vergleich mit Reed-Solomon Codes
In diesem Abschnitt sei F = Fq(t). Wir zeigen, daß die Klasse der Goppa- Codes C(A, G) mit deg(A) ≤ q gleich der Klasse der Reed-Solomon Codes RSk(a, b) ist.
F¨ur z ∈F mit F =Fq(z),u∈F× und k≤0 definieren wir Vz,u,k =
k−1
X
i=0
Fqziu.
Dies ist einFq-Untervektorraum von F mit dim(Vz,u,k) =k.
3 Lemma. Sei z ∈F mit F =Fq(z).
F¨ur jedes D ∈ Div(F/Fq) gibt es ein bis skalare Vielfache eindeutig be- stimmtes u∈F× und ein eindeutig bestimmtes k ≥0 mitL(D) =Vz,u,k.
F¨ur jedes u ∈ F× und k ≥ 0 gibt es ein eindeutig bestimmtes D ∈ Div(F/Fq) mitL(D) =Vz,u,k.
Beweis. Ubung.¨
4 Satz. Jeder Goppa-Code C(A, G) mit deg(A) ≤ q ist gleich einem Reed- Solomon Code RSk(a, b) und umgekehrt.
Beweis. Sei C = C(A, G) mit deg(A) ≤ q. Es gibt eine Stelle P von F/Fq mit P 6≤ A. Sei z ∈ F× mit (x)∞ = P und folglich F = Fq(z). Sei k = dim(C) und u ∈ F× mit L(G) = Vz,u,k. Sei a = (z(P1), . . . , z(Pn)) und b = (u(P1), . . . , u(Pn)). Da F = Fq(z) gilt z(Pi) 6= z(Pj) f¨ur Pi 6= Pj, also sind die Koordinaten vona paarweise verschieden. Außerdem gilt u(Pj)6= 0
f¨ur alle j, da sonst u ∈ L(D−Pj) und L(D−Pj) = Vz,u,k = L(D) folgen w¨urde. Aufgrund der Form von Vz,u,k ergibt sichC =RSk(a, b).
Sei C = RSk(a, b), wobei in der Definition von RSk(a, b) Polynome f ∈ Fq[t] mit deg(f) ≤ k −1 ausgewertet werden. Seien Pj = (t −aj)0 und A = Pn
i=1Pj. Sei u ∈ Fq[t] ein Interpolationspolynom mit u(aj) = bj. Sei G der Divisor mit L(G) = Vt,u,k. Dann gilt (tiu)(Pj) = aiju(aj) = aijbj und daraus ergibt sich C =C(A, G).
Dualer Code
Die Klasse der Goppa-Codes is abgeschlossen unter Dualisierung. Dies wird zum Beispiel f¨ur den Dekodierungsalgorithmus ben¨otigt.
5 Satz. Es gibt einen von A und G abh¨angigen kanonischen Divisor W mit C(A, G)⊥=C(A, G∗)
f¨ur G∗ =W +A−G.
Beweis. Der Beweis verwendet Differentiale und den Residuuensatz.
Wir schreiben die Parameter vonC(A, G∗) in Abh¨angigkeit vonA undG auf:
6 Satz. Der Goppa-CodeC(A, G∗) ist ein (n∗, k∗, d∗)q-Code mit n∗ = deg(A),
k∗ =i(G−A)−i(G),
d∗ = deg(G)−(2g−2) +c∗G,
wobei c∗G = min{deg(C)|C≥0 und C ∼W −G+ ˜B f¨ur ein 0≤B˜ ≤A}.
Beweis. Die Aussage f¨ur n∗ ist klar. Weiter gilt k∗ = dim(G∗)−dim(G∗ − A) = dim(W +A− G)−dim(W +A− G−A) = i(G−A)−i(G) und d∗ = deg(A)−deg(G∗) +cG∗ = deg(A)−deg(W+A−G) +cG∗ = deg(G)− (2g−2) +cG∗. Es bleibt cG∗ = c∗G zu zeigen. Sei C ≥ 0 und B,B˜ ≥ 0 mit A=B+ ˜B. Dann gelten die ¨Aquivalenzen:
C∼G∗−B ⇔C ∼W +A−G−B ⇔C ∼W + ˜B−G.
Also sind die C in den Minimumsbildungen f¨urcG∗ und c∗G die gleichen und es ergibt sich cG∗ =c∗G.
Dekodierung
Da es hier um Algorithmen geht, sind zuerst ein paar Worte ¨uber das Rech- nen in Funktionenk¨orpern erforderlich. Wir gehen davon aus, daß folgende Berechnungen durchgef¨uhrt werden k¨onnen.
1. Berechnung von g.
2. Berechnung aller Stellen vom Grad d.
3. Berechnung von vP(f) undf(P).
4. Berechnung einer Basis von L(D).
5. Lineare Algebra ¨uber Fq in F.
F¨ur diese Berechnungen existieren effiziente Algorithmen, deren Laufzeit polynomiell in der L¨ange der Eingabe ist. Dies gilt nicht f¨ur 2., da dort ca.
qd Stellen berechnet werden m¨ussen. Die Laufzeit f¨ur 2. ist polynomiell in g und qd.
Zum Vergleich hat die Syndromdekodierung eines (n, k, d)q-Codes eine Laufzeit von ca.qk, also eine in der L¨ange der Eingabe exponentielle Laufzeit.
Das Hauptziel ist daher, ein Dekodierverfahren f¨ur Goppa-Codes anzugeben, welches polynomiell in der L¨ange der Eingabe ist.
Die Idee besteht wie bei den Dekodierverfahren f¨ur Reed-Solomon Codes darin, das kombinatorische Problem der Bestimmung der Fehlerpositionen algebraisch zu l¨osen. Kennen wir die Fehlerpositionen, so k¨onnen wir den Fehlervektor mittels linearer Algebra wie bei den Reed-Solomon Codes be- stimmen (siehe Matzat, Beweis von Bemerkung 3.20). In beiden Schritten m¨ussen wir jedoch annehmen, daß die Anzahl der Fehlerpositionen jeweils durch eine eigene geeignete Schranke nach oben beschr¨ankt sind. Die Schran- ke beim ersten Schritt ist durche=⌊(d−1)/2⌋gegeben. Die Schranke beim zweiten Schritt ist durch d −1 gegeben. Beide Schranken k¨onnen so auch f¨ur Reed-Solomon Codes verwendet werden (d.h. es m¨ussen nicht etwa noch kleinere Schranken verwendet werden).
Wir verwenden das folgende Setting. Wir betrachten (wie im Skript von Matzat) den Code C = C(A, G∗) mit den Parametern (n, k∗, d∗). Das Ele- mentx∈C ist das gesendete Element, das Element y∈Fnq das empfangene Wort. Der Fehlervektor ist e = y −x. Wir nennen i Fehlerindex und Pi
Fehlerstelle, wenn ei 6= 0 gilt. Wir gehen zun¨achst von w(e) ≤ ⌊(d∗−1)/2⌋
aus.
Die Algebraisierung besteht nun im Prinzip darin, einen geeigneten Divi- sorH zu finden, so daß die Dekodierung anhand von yeinu∈ L(H) bestim- men kann, dessen Nullstellen gerade die Fehlerstellen beinhalten. Dann kann
man u(Pi) = 0 f¨ur alle i testen und so die Fehlerindizes herausfinden. Das Elementuheißt Fehlerortungsfunktion. Allgemeiner kann manH unduauch so w¨ahlen, daß man anstelle vonu(Pi) = 0 die Bedingung vPi(u)>−vPi(H)
¨uberpr¨uft. Diese Bedingung benennen wir wie folgt. F¨ur einen Divisor D und f ∈ L(D) sagen wir, daß Pi eine Nullstelle von f bez¨uglich D ist, wenn f ∈ L(D−Pi) gilt.
7 Lemma. Besitzt f1 ∈ L(D1) eine Nullstelle Pi bez¨uglich D1 und ist f2 ∈ L(D2) so besitzt f1f2 ∈ L(D1 +D2) die Nullstelle Pi bez¨uglich D1 +D2. Besitzt umgekehrt f1f2 eine Nullstelle Pj bez¨uglichD1+D2 und istPj keine Nullstelle von f2 bez¨uglich D2, so ist Pj eine Nullstelle von f1 bez¨uglich D1. Beweis. Die erste Aussage ist klar. Die zweite sieht man wie folgt: Es gilt
vPj(f1f2) = vPj(f1) +vPj(f2) =−vPj(D1) +vPj(f2)
≥ −vPj(D1+D2−Pj) =−vPj(D1)−vPj(D2−Pj).
Daraus ergibt sich vPj(f2)≥ −vPj(D2−Pj) wie gew¨unscht.
F¨ur Pj 6∈ supp(D) ist Pj eine Nullstelle von f bez¨uglich D genau dann, wennPj eine Nullstelle von f ist. Es ist auch m¨oglich, Nullstellen bez¨uglich Divisoren mit Vielfachheiten zu betrachten.
Wir definieren eine Bilinearform, genannt Syndrom, durch [·,·] :Fnq × L(G)→Fq, (x, z)7→
Xn
i=1
xiz(Pi).
Wir definieren weitere Bilinearformen durch
[·,·]v :Fnq × L(H)→Fq, (x, u)7→[x, uv]
f¨ur v ∈ L(G−H).
Das Dekodierverfahren f¨uhrt dann die folgenden Schritte aus:
1. Berechne
Vy =∩v∈L(G−H)ker([y,·]v)
={u∈ L(H)|[y, u]v = 0 f¨ur alle v ∈ L(G−H)}.
2. W¨ahle u∈Vy\{0} und berechne
Iy′ ={i|Pi ist Nullstelle von u bez¨uglich H}.
3. Berechne eine L¨osung (ei)i∈Iy′ ∈F#Iq ′y des Gleichungssystems X
i∈Iy′
eiz(Pi) = [y, z] f¨ur allez ∈ L(G).
4. Setze e = ei f¨ur i ∈ Iy′ und ei = 0 f¨ur 1 ≤ i ≤ n, i 6∈ Iy′. Ausgabe der Dekodierungx=y−e.
Wir bemerken, daß in Schritt 1 und Schritt 3 die v und z wegen der Linearit¨at nur ¨uber eine Basis von L(G− H) beziehungsweise von L(G) laufen m¨ussen.
Wir beweisen im folgenden die Korrektheit des Dekodierverfahrens unter geeigneten Voraussetzungen.
Wir stellen zuerst fest: Wegen C(A, G∗)⊥ = C(A, G) gilt [c, z] = 0 f¨ur alle c∈C(A, G∗) und z ∈ L(G). Wegen y−e=x∈C(A, G∗) folgt daher
[y, z] = [e, z]
f¨ur allez ∈ L(G). Wir k¨onnen also die unbekannte Information [e, z] mittels [y, z] f¨ur allez ∈ L(G) berechnen.
8 Proposition. Sei Ty die Summe der Fehlerstellen und ty = deg(Ty). Es gelte dim(H)≥ty+ 1 und deg(G−H)≥ty + 2g−1. Dann gilt
Vy =L(H−Ty)6= 0.
Beweis. Wegen dim(H) = dim(H−Ty+Ty)≤dim(H−Ty) + deg(Ty) folgt dim(H−Ty)≥dim(H)−deg(Ty)≥1. Dies zeigtL(H−Ty)6= 0.
Zum Beweis von L(H−Ty)⊆Vy seiu ∈ L(H−Ty) undv ∈ L(G−H).
Dann gilt uv ∈ L(G−Ty) und uv(Pi) = 0 f¨ur Pi ≤Ty. Es folgt [y, u]v = [y, uv] = [e, uv] =
Xn
i=1
eiuv(Pi) = 0, daei = 0 oder uv(Pi) = 0 gilt.
Zum Beweis von Vy ⊆ L(H − Ty) sei u ∈ Vy. Wegen L(H − Ty) =
∩Pi≤TyL(H−Pi) gen¨ugt es,u∈ L(H−Pi) f¨ur alleizu zeigen, also daßPieine Nullstelle vonubez¨uglichH ist. Nach Voraussetzung gilt deg(G−H−Ty)≥ 2g −1, also istG−H−Ty+D f¨ur alle D ≥0 nicht speziell. Daher gibt es vi ∈ L(G−H −Ty +Pi)\L(G−H −Ty), so daß vi die Nullstellen Pj mit Pj ≤Ty und Pj 6=Pi bez¨uglich G−H besitzt und Pi keine Nullstelle von vi
bez¨uglich G−H ist. Dann gilt uvi ∈ L(G−Ty +Pi), also uvi(Pj) = 0 f¨ur Pj ≤Ty und Pj 6=Pi. Wir erhalten
eiuvi(Pi) = Xn
j=1
ejuvi(Pj) = [e, uvi] = [y, uvi] = [y, u]vi = 0,
wobei sie die erste Gleichung ausej = 0 odervi(Pj) = 0 f¨ur j 6=iergibt und die letzte wegen u ∈ Vy. Da ei 6= 0 und Pi keine Nullstelle von vi bez¨uglich G−H, aber eine von uvi bez¨uglich G ist, ergibt sich, daßPi eine Nullstelle von u bez¨uglich H sein muß. Also folgtu ∈ L(H−Pi).
Unter den Vorausetzungen der Proposition ist nach Schritt 2 also eine Fehlerortungsfunktion u ∈ L(H) berechnet, deren Nullstellen bez¨uglich H die Fehlerstellen beinhalten.
Wir definieren t∗ = max
H min{dim(H)−1,deg(G−H)−2g+ 1}.
Der garantierte Minimalabstand von C(A, G∗) ist d∗G = deg(G)−(2g−2).
Es gilt d∗ ≥d∗G. 9 Lemma. Es gilt
⌊(d∗G−1−g)/2⌋ ≤t∗ ≤ ⌊(d∗G−1)/2⌋.
Beweis. Zum Beweis der unteren Schranke sei t = ⌊(d∗G −1 −g)/2⌋ und H = (t+g)P1. Dann gilt dim(H) ≥ deg(H) + 1−g = t+ 1 und deg(G− H)−2g+ 1 ≥deg(G)−t−3g+ 1 =d∗G−t−g−1≥t. Es folgt t∗ ≥t.
F¨ur die obere Schranke seiHmitt∗ = min{dim(H)−1,deg(G−H)−2g+ 1}. Unter Beachtung von dim(H)≤deg(H)+1 folgt folgt 2t∗ ≤dim(H)−1+
deg(G−H)−2g+1≤deg(H)+deg(G−H)−2g+1≤deg(G)−2g+1≤d∗G−1.
Also ergibt sich t∗ ≤ ⌊(d∗G−1)/2⌋.
10 Satz. Der Dekodierungsalgorithmus kann bis zu t∗ Fehler bei entspre- chender Wahl von H dekodieren.
Beweis. Sei t ≥ 0 mit t ≤ t∗. Entsprechende Wahl von H bedeutet, daß t ≤ min{dim(H)−1,deg(G−H)−2g+ 1} gilt, also die Voraussetzungen der Proposition im Fall ty ≤ t erf¨ullt sind. Aufgrund der Definition von t∗ gibt es stets ein passendesH.
Am Ende von Schritt 2 umfaßt Iy′ dann in der Tat alle Fehlerstellen (und vielleicht noch weitere Stellen, die keine Fehlerstellen sind).
Sei Ty′ =P
i∈Iy′ Pi. Dann giltu∈ L(H−Ty′) und u6= 0. Es folgt deg(H− Ty′)≥0 und #Iy′ = deg(Ty′)≤deg(H)≤deg(G)−2g+ 1−t=d∗G−1−t ≤ d∗G−1 ≤ d∗−1. Also hat das Gleichungssystem in Schritt 3 eine eindeutig bestimmte L¨osung.
Das beschriebene Verfahren geht auf Skorobogatov und Vladut (1990) zur¨uck. Ein Problem besteht in der geeigneten Wahl von H. Im allgemeinen k¨onnen wir H nur so w¨ahlen, daß ⌊(d∗G−1−g)/2 Fehler korrigiert werden k¨onnen. Um ein besseres Korrekturverhalten zu bekommen, k¨onnen wir bei- spielsweise versuchen, spezielle DivisorenH miti(H)>0 zu verwenden oder H so zu w¨ahlen, daß G−H−Ty in der Proposition nicht speziell ist. Hier- zu kann es erfoderlich sein, daß der Funktionenk¨orper geeignet konstruiert werden muß.
Diese etwas unzufriedenstellende Situation wird durch das Dekodierungs- verfahren von Feng und Rao (1993) behoben, mit dem man (f¨ur ungerades d∗G) stets bis zu ⌊(d∗G−1)/2⌋ Fehler korrigieren kann. In diesem Verfahren sind die Divisoren G und H Vielfache einer festen Stelle P vom Grad eins.
Mit trickreichen ¨Uberlegungen wird bewerkstelligt, daß die Syndrome [e, z]
nicht nur f¨ur z ∈ L(G), sondern auch f¨ur z ∈ L(G+λP) und λ ausrei- chend groß ausgerechnet werden k¨onnen. Das Problem bei der Berechnung der h¨oheren Syndrome [e, z] ist, daß zwar [e, z] = [y, z] f¨ur z ∈ L(G) gilt, dies aber f¨urz ∈ L(G+λP) falsch ist. MitG+λP an Stelle von Ggilt dann die Proposition wie gehabt und der Dekodieralgorithmus l¨aßt sich wie oben durchf¨uhren ([y, u]v = 0 muß geeignet durch [e, u]v = 0 ersetzt werden).
Ein gewisser Sch¨onheitsmangel des Verfahrens von Feng und Rao ist, daß nicht alle Stellen vom Grad eins f¨ur die Auswertung verwendet werden k¨onnen. Auch bleibt die Frage offen, ob es ein Verfahren gibt, daß bis zu
⌊(d∗−1)/2⌋ anstelle von⌊(d∗G−1)/2⌋ Fehler korrigieren kann.