Outline

Kodierung

AG - Codes

Algorithmus

Singular

AG-Codes: Ein Beispiel


LIB "brnoeth.lib";
ring s=2,(x,y),lp; // Charakteristik 2
poly f=x3y+y3+x; // die Quartik von Klein
list KLEIN=Adj_div(f); // Berechne den Konduktor
KLEIN=NSplaces(2,KLEIN); // Berechnet die Stellen bis Ordnung 3
KLEIN=extcurve(3,KLEIN); // Konstruiere Kleinquartik ueber F_8
// -> Total number of rational places : NrRatPl = 24

KLEIN[3]; // Anzeige der Stellen (jeweils: Ordnung, Nummer)
// -> [1]: 1,1
// -> [2]: 1,2
// -> [3]: 1,3
// -> [4]: 2,1
// -> [5]: 3,1
// -> [6]: 3,2
// -> [7]: 3,3
// -> [8]: 3,4
// -> [9]: 3,5
// -> [10]: 3,6
// -> [11]: 3,7

intvec G=6,0,0,4,0,0,0,0,0,0,0; // Eingabe der Multiplizitaeten fuer G
// G ist Divisor vom Grad 14=6*1+4*2

Berechnung des evaluierenden Codes
(Auswertung an allen rationalen Stellen außerhalb supp(G)):


intvec D=2..24;

def ER=KLEIN[1][4]; // Wechsle in Ringerweiterung F_8[x,y,z]
setring ER;

matrix C=AGcode_L(G,D,KLEIN); // Ergebnis: 12 x 23 Matrix in F_8
// 12 Funktionen ausgewertet an 23 Stellen

Berechnung des residuellen Codes (orthogonales Komplement zu C):


matrix CO=AGcode_Omega(G,D,KLEIN); // Ergebnis: 11 x 23 Matrix in F_8

Vorbereitungen für die Dekodierung:


intvec F=6,0,0; // Divisor F vom Grad mind. 6 noetig
list K=prepSV(G,D,F,KLEIN);
K[size(K)][1]; // Anzahl behebbarer Fehler
// -> 3

Kodierung:


matrix word[1][11]; // Woerter der Laenge 11 werden verschluesselt
word = 1,1,1,1,1,1,1,1,1,1,1;
def y=word*CO; // das Codewort (Laenge: 23)

Fehlerbehebung:


matrix disturb[1][23]; // Eine Stoerung
disturb[1,1]=1;
disturb[1,10]=a;
disturb[1,12]=1+a;
y=y+disturb; // Stoerung des Codewortes
def yy=decodeSV(y,K); // Behebung der Stoerung
yy-y; // gibt die Stoerung wider
// -> _[1,1]=1
// -> _[1,2]=0
// -> _[1,3]=0
// -> _[1,4]=0
// -> _[1,5]=0
// -> _[1,6]=0
// -> _[1,7]=0
// -> _[1,8]=0
// -> _[1,9]=0
// -> _[1,10]=(a)
// -> _[1,11]=0
// -> _[1,12]=(a+1)
// -> _[1,13]=0
// -> _[1,14]=0
// -> _[1,15]=0
// -> _[1,16]=0
// -> _[1,17]=0
// -> _[1,18]=0
// -> _[1,19]=0
// -> _[1,20]=0
// -> _[1,21]=0
// -> _[1,22]=0
// -> _[1,23]=0

Karlsruhe http://www.singular.uni-kl.de