Documente Academic
Documente Profesional
Documente Cultură
Introducere in Algebra Computationala I PDF
Introducere in Algebra Computationala I PDF
© Horváth Alexandru
ISBN 978-973-3-3370-7
5
6
Introducere 9
7
8 CUPRINS
Bibliograe 201
List de guri 205
Glosar 206
Introducere
x − y − z − u + 2v = 3
2x + y − z − u − 3v = −3
3x + 2y + z + 2u + v = 1
4x + y − z − 3u + 3v = 9
x + y + z + u + v = 2
Se ³tie c , metoda lui Gauss de rezolvare a unui asemenea sistem de ecuaµii
const în eliminarea pe rând a variabilelor, mai precis, se exprim o variabil
dintr-o ecuaµie, apoi se înlocuie³te în (se elimin din) celelalte ecuaµii, ³i se
repet acest pas, pân când se termin variabilele, sau ecuaµiile. În cazul
nostru se obµine cam a³a ceva:
x + y + z + u + v = 2
3y + 5z + 7u + v = −1
z − 4u + 5v = 16
3u − v = −7
v = 1
9
10 Introducere
ring R=0,(x,y,z,u,v),lp;
poly p1=x-y-z-u+2v-3;
poly p2=2x+y-z-u-3v+3;
poly p3=3x+2y+z+2u+v-1;
poly p4=4x+y-z-3u+3v-9;
poly p5=x+y+z+u+v-2;
ideal I=p1,p2,p3,p4,p5;
groebner(I);
LIB "solve.lib";
solve(I);
ring R=0,x,lp;
poly p1=x^20-1;
poly p2=x^120-1;
poly p3=x^5+x^4+x^3+x^2+x+1;
ideal I=p1,p2,p3;
groebner(I);
ring R=0,(x,y,z),lp;
poly p1=x3-3xy+3z2-1;
poly p2=x2z+3yz2-z2-3;
poly p3=-x2z+2y2+z3-2;
ideal I=p1,p2,p3;
groebner(I);
LIB "solve.lib";
solve(I);
12 Introducere
729z 21 + 2916z 20 − 3645z 19 − 14094z 18 − 25677z 17
−32400z 16 − 31482z 15 + 16344z 14 + 88686z 13 + 42056z 12
−118191z 11 − 199656z 10 − 75580z 9 + 89238z 8 + 151884z 7
+129122z 6 + 48708z 5 − 16038z 4 − 41256z 3 − 17496z 2 + 5832 = 0
2232410395758457512330353365018920y
+62953278157657061878263952050306z 20
+328637503773493952207748257766195z 19
−62397440973359733749716933302465z 18
−1771894988021516305832097520091391z 17
−3282192153596917521513297834207264z 16
−4853135198394541361739678228691389z 15
−4781168509603021473439992260622447z 14
−475503506424356564667271411785366z 13
+10895074263712307248945699738718043z 12
+10885321992788471886332698014740002z 11
−10048957321797036014384419174098447z 10
−29016557864084728430842957672957731z 9
−20818642913693083613050943983927706z 8
+7370805159208119974747905321937016z 7
+22490449340981635887207889673569842z 6
+24423399071228492619080343470514460z 5
+11594581064876178787291365792620682z 4
−1477844013372536320473869906881950z 3
−7325270924681631854820377218307094z 2
−6896584960128782739286342791723108z
+526517724286697003778697349660892 = 0
43182x
−481824y 6 z − 481824y 6 + 1058076y 5 z 2
+1384380y 5 z + 165696y 5 − 240912y 4 z 4
+649494y 4 z 3 + 1802826y 4 z 2 + 2173528y 4 z
+1927296y 4 + 529038y 3 z 5 + 449790y 3 z 4
−806016y 3 z 3 − 524802y 3 z 2 − 3004020y 3 z
−1845048y 3 + 445203y 2 z 6 + 901413y 2 z 5
+1167564y 2 z 4 + 598378y 2 z 3 − 2073066y 2 z 2
−1286810y 2 z − 4290012y 2 − 121200yz 7 − 444432yz 6
+98967yz 5 − 524238yz 4 + 105078yz 3 − 547668yz 2
+1619640yz + 1679352y + 40400z 7 − 305323z 6 − 375117z 5
−251184z 4 − 2051753z 3 + 390696z 2 − 419288z + 2844540 = 0
Introducere 13
x y z
ring R=0,(t,x,y),(dp(1),dp(2));
ideal I=(t2+1)*x-t2+1,(t2+1)*x-2t;
J=groebner(I);
J[1];
S mai vedem o aplicaµie, de data aceasta una de cu totul alt tip: demon-
straµia automat a teoremelor de geometrie euclidian plan .
Iat ³i aici un exemplu, prezentat f r preg tirile necesare înµelegerii de-
taliilor.
// Problem :
// Fie ABCD un p trat. Împ rµim
// latura CD în 3 p rµi egale:
// DE=EF=FC.
// Dreapta AE taie latura BC în punctul G.
// Fie H mijlocul segmentului AG.
// Atunci:
// DH este jum tate din diagonala p tratului.
// (Sursa: N.M.Examen Fac. Mat. Bucure³ti,
// 1961,enunµ parµial)
Problema de geometrie se trensform în limbaj algebric, folosind un sistem
de coordonate. Aici am ales drept axe laturile AB ³i AD ale p tratului.
Programul scris în Singular arat astfel:
// u - latura p tratului
// ...a³adar coordonatele vârfurilor p tratului sunt:
// A(0,0), B(u,0), C(u,u), D(0,u)
// Consider m punctele
// E(x1,u), G(u,x2), H(x3,x4)
// ³i transpunem condiµiile geometrice:
// h1 - condiµia de coliniaritate a punctelor A,E,G.
// h2 - condiµia de coliniaritate a punctelor A,H,G.
// h3 - H mijlocul segmentului AG.
// h4 - DE este 1/3 din DC.
// g - concluzia: DH este jum tatea diagonalei.
16 Introducere
D E F C
A u B
Figura 1: Problema
ring R=(0,u),(x1,x2,x3,x4,y),lp;
poly h1=x1*x2-u^2;
poly h2=x2*x3-u*x4;
poly h3=x2^2-2*x2*x4-2*u*x3+u^2;
poly h4=3*x1-u;
poly g=2*x3^2+2*x4^2-4*u*x4+u^2;
ideal I=(h1,h2,h3,h4,1-y*g);
groebner(I);
Teoreme de geometrie
demonstrate pe calculator
G eometria este una din cele mai vechi ramuri ale matematicii.
Simbioza ei cu aritmetica dateaz înc din antichitate. Leg -
turile strânse ³i fecunde cu algebra sunt mai noi, ³i au la origine
coordonatizarea descoperit de Descartes.
În acest capitol va vorba de leg turi descoperite mai recent, denumite ast zi
geometrie algebric . Vom face o introducere în geometria algebric com-
putaµional , care se bazeaz esenµial pe teoria bazelor Gröbner . Contextul
general va în acela³i timp algebric ³i geometric. Din punct de vedere al-
gebric, obiectele de studiu vor idealele inelelor de polinoame cu mai multe
variabile, iar din punct de vedere geometric, variet µile ane sau proiective.
17
18 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
k n = {(a1 , a2 , . . . , an ); ai ∈ k, i = 1, 2, . . . , n}.
Cu ajutorul unui polinom de n variabile putem deni o funcµie pe spaµiul an
n-dimensional, folosind "formula"
∑ polinomului pentru calculul valorii funcµiei.
Mai exact polinomul f = α aα x din k[x1 , x2 , . . . , xn ] dene³te o funcµie
α
f : k n → k,
f = cm xm + cm−1 xm−1 + · · · + c1 x + c0 .
LIB "surf.lib";
ring R=0,(x,y),dp;
ideal I=xy*(x2+y2-25);
plot(I);
1.1. CONCEPTE DE BAZ 21
Exemplu 1.1.8.
Exemplu 1.1.9.
V ∪W = V (fi gj ; i = 1, . . . , k, j = 1, . . . , l)
V ∩W = V (f1 , f2 , . . . , fk , g1 , g2 , . . . , gl ).
24 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
1.1.3 Ideale
Vom introduce în aceast secµiune, corespondentul algebric al conceptului ge-
ometric de varietate an . Acesta este conceptul de ideal.
S începem cu deniµia conceptului abstract de inel.
În cele ce urmeaz prin inel vom înµelege un inel comutativ ³i unitar, f r
a mai preciza explicit aceste propriet µi.
Observaµia fundamental pentru contextul nostru este formulat în urm -
toarea propoziµie:
x = n · q + r, 0 ≤ r < n.
(ii) dac d′ |a ³i d′ |b, atunci d′ |d, adic d este cel mai mare divizor, în sensul
relaµiei de divizibilitate.
S observ m, c cel mai mare divizor comun a dou elemente nu este unic.
Mai precis, dac d1 ³i d2 este ecare cel mai mare divizor comun al elementelor
a ³i b, atunci d1 ³i d2 sunt elemente asociate, deoarece din deniµia celui mai
mare divizor comun 1.1.21(ii) rezult imediat, c d1 ³i d2 se divid reciproc.
Expresia d = (a, b) conµine a³adar un u³or abuz de notaµie.
În inele principale cel mai mare divizor comun a dou elemente are o carac-
terizare aparte, exprimat cu ajutorul idealelor. Vom da aceast caracterizare
în inelul întregilor.
S facem mai întâi o observaµie.
d · Z = a · Z + b · Z.
În alt exprimare, dac d = (a, b), atunci exist dou numere întregi x, y ∈ Z
astfel ca d = ax + by , ³i invers, dac d = ax + by , ³i d este un divizor comun
al lui a ³i b, atunci el este un cel mai mare divizor, d = (a, b).
În particular, numerele a ³i b sunt relativ prime exact atunci când 1 are o
reprezentare de forma 1 = ax + by , unde x, y sunt numere întregi potrivite.
28 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
Demonstraµie. Fie d = (a, b). Din d|a ³i d|b rezult c a·Z ⊆ d·Z ³i b·Z ⊆ d·Z,
deci ³i a · Z + b · Z ⊆ d · Z. Dar pe baza propoziµiei 1.1.19 de la pagina 26, a · Z
³i b · Z ind ideale (principale) în Z suma lor este un ideal principal, deci avem
a · Z + b · Z = d′ · Z,
a · Z + b · Z = d · Z.
(b) I : A = I.
Demonstraµie.
Punctul (a): Pentru orice f ∈ I ³i pentru orice g ∈ A avem f g ∈ I , deci
A ⊆ I : I. Pe de alt parte I : I ⊆ A este clar din deniµia unui ideal. Deci
I : I = A.
Punctul (b): I ⊆ I : A este clar din deniµia unui ideal. Pe de alt parte
e f ̸∈ I. Atunci f = f · 1 arat c f ̸∈ I : A. Prin urmare A \ I ⊆ A \ I : A,
deci I : A ⊆ I. Rezult c I : A = I.
Punctul (c): Fie f ∈ I. Dac pentru g ∈ J arbitrar f g ∈ K, (deoarece
IJ ⊆ K ), atunci f ∈ K : J, deci I ⊆ K : J . Invers, e f ∈ I ³i g ∈ J arbitrar.
Din I ⊆ K : J rezult c f g ∈ K, deci ³i IJ ⊆ K.
Punctul (d): J · A ⊆ J ⊆ I, implic I : J ⊇ A, deci I : J = A. Invers
rezult din 1 ∈ A.
(b) I : (J1 + J2 ) = (I : J1 ) ∩ (I : J2 ).
30 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
(c) (I : J) : K = I : (JK).
Demonstraµie.
Punctul (a): Din I1 ∩ I2 ⊆ I1 , I2 rezult c I1 ∩ I2 : J ⊆ I1 : J, I2 : J, deci
I1 ∩I2 : J ⊆ I1 : J ∩I2 : J. Invers, e f ∈ I1 : J ∩I2 : J. Atunci f ∈ I1 : J, I2 : J,
deci f g ∈ I1 , I2 , pentru orice g ∈ J. Rezult c f g ∈ I1 ∩ I2 pentru orice g ∈ J,
prin urmare f ∈ (I1 ∩ I2 ) : J, deci I1 ∩ I2 : J ⊇ I1 : J ∩ I2 : J. A³adar
I1 ∩ I2 : J = I1 : J ∩ I2 : J.
Punctul (b): Din J1 +J2 ⊇ J1 , J2 rezult c I : (J1 +J2 ) ⊆ (I : J1 ), (I : J2 ),
deci I : (J1 + J2 ) ⊆ (I : J1 ) ∩ (I : J2 ). Invers, e f ∈ (I : J1 ) ∩ (I : J2 ), deci
f ∈ (I : J1 ) ³i f ∈ (I : J2 ). Rezult c f g ∈ I ³i f h ∈ I pentru orice g ∈ J1
³i h ∈ J2 , de unde f g + f h = f (g + h) ∈ I, deci f ∈ I : (J1 + J2 ). Avem deci
I : (J1 + J2 ) ⊇ (I : J1 ) ∩ (I : J2 ), deci ³i I : (J1 + J2 ) = (I : J1 ) ∩ (I : J2 ).
Punctul (c): Începem cu o observaµie: Fie I ³i J =< g1 , g2 , . . . , gk >
ideale în A. Atunci I : J = {f ∈ A| f gi ∈ I, i = 1, 2, . . . , k}. Într-adev r,
I : J ⊆ {f ∈ A| f gi ∈ I, i = 1, 2, . . . , k}, din cauza incluziunii bazei în idealul
generat de aceasta. Pe de alt parte îns dac f gi ∈ I, i = 1, 2, . . . , k atunci ³i
f g ∈ I pentru orice g = h1 g1 +h2 g2 +· · ·+hk gk ∈ J, deci I : J ⊇ {f ∈ A| f gi ∈
I, i = 1, 2, . . . , k}. Acest raµionament se extinde neschimbat pentru cazul când
J =< gj | j ∈ IJ > este un ideal generat de orice familie de polinoame.
S introducem acum o notaµie: J · K = {gh| g ∈ J, h ∈ K}.
Trecând la demonstraµia propriu zis , e f ∈ (I : J) : K. Aceasta aparte-
nenµ este echivalent cu f K ⊆ I : J , care este echivalent cu (f K · J) ⊆ I ,
echivalent cu f (K · J) ⊆ I , echivalent conform observaµiei de mai înainte
cu f (KJ) ⊆ I , echivalent cu f ∈ I : (KJ) sau f ∈ I : (JK). Prin urmare
(I : J) : K = I : (JK).
Demonstraµie. √
Punctul (a): f 1 = f ∈ I√pentru orice f ∈ I, deci I ⊆ I.
√ Dac f ∈√ I atunci
Punctul (b): √ exist n ≥ 1 astfel ca f n ∈ I deci f n ∈ J ,
de unde f ∈ J. A³adar I ⊆ J.
1.1. CONCEPTE DE BAZ 31
Propoziµia de mai sus st la baza deniµiei care urmeaz . S not m clasa de
echivalenµ a polinomului f cu
fˆ = {g | g ∼ f ; g ∈ A} = f + I.
Din lema lui Zorn rezult c orice ideal I este inclus într-un ideal maximal.
Acest fapt rezult din observaµia c reuniunea idealelor unui ³ir ascendent de
ideale este un ideal, care include (este mai mare decât) toate idealele ³irului.
S vedem acum cum se caracterizeaz idealele maximale cu ajutorul inelului
factor, denit de ace³tia. Avem urm toarea propoziµie:
Deniµie 1.1.33. Un inel care are un singur ideal maximal se nume³te inel
local .
Introducerea conceptului de inel local are o justicare geometric : este legat
de studiul propriet µilor variet µilor ane în jurul unui punct al lor.
O caracterizare a inelelor locale este dat în urm toarea propoziµie:
Propoziµie 1.1.34. Un inel este local dac ³i numai dac elementele nein-
versabile ale inelului formeaz un ideal.
Demonstraµie. Dac un ideal conµine un element inversabil, atunci îl conµine ³i
pe 1, deci conµine orice element al inelului, a³adar coincide cu acesta. Rezult
c dac elementele neinversabile formeaz un ideal, atunci acesta este cel mai
mare, deci ³i maximal. Menµion m, c orice inel conµine elemente neinversabile,
întrucât 0 este neinversabil (inelul trebuie s aib totu³i cel puµin 2 elemente).
Invers, Fie A un inel local ³i M singurul s u ideal maximal. S not m
mulµimea elementelor neinversabile ale inelului cu N. Atunci evident M ⊆ N .
Fie f ∈ N . Atunci Af este un ideal propriu (in caz contrar f ar inversabil)
al lui A. Cum orice ideal este inclus într-un ideal maximal, avem Af ⊆ M ,
deci ³i f = f · 1 ∈ Af ⊆ M , prin urmare N ⊆ M . În concluzie M = N , deci
elementele neinversabile formeaz un ideal (maximal).
În cele ce urmeaz denim inelul de fracµii, într-un context mai general, deci
inelul considerat nu este neap rat un inel de polinoame. Aceast construcµie
extinde ideea construcµiei numerelor raµionale din numere întregi: mai întîi se
denesc fracµiile, apoi operaµiile cu acestea, iar în nal conceptul de num r
raµional apare cu ajutorul echivalenµei între fracµii, dat de posibilitatea de
simplicare ³i amplicare.
Deniµie 1.1.35. Fie A un inel comutativ ³i unitar. O submulµime S a lui
A care este sub-semigrup multiplicativ, se nume³te sistem multiplicativ sau
sistem multiplicativ închis al lui A.
Fie acum S un sistem multiplicativ închis al inelului A. Presupunem c
elementele lui S sunt regulate. Denim o relaµie notat ∼ pe mulµimea A × S
prin
AS = {(a, s) | (a, s) ∈ A × S}
atunci
V (f1 , f2 , . . . , fk ) = V (g1 , g2 , . . . , gl ).
Pentru idealul generat de un set de polinoame vezi propoziµia 1.1.17 de pe
pagina 25 ³i comentariul care urmeaz dup ea.
Demonstraµie. O prim observaµie este faptul c pe baza acestei propoziµii o
varietate an trebuie asociat practic unui ideal: dat un ideal, alegem o baz
a acestuia, ³i avem un set de ecuaµii care determin varietatea dat .
Fie V = V (f1 , f2 , . . . , fk ) ³i e I =< f1 , f2 , . . . , fk >. Atunci V este
mulµimea zerourilor comune ale tuturor polinoamelor din I , adic V =
{(a1 , a2 , . . . , an ) ∈ k n | f (a1 , a2 , . . . , an ) = 0, pentru orice f ∈ I}.
Într-adev r, dac not m W = {(a1 , a2 , . . . , an ) ∈ k n | f (a1 , a2 , . . . , an ) =
0, pentru orice f ∈ I}, avem evident W ⊆ V . Fie acum (a1 , a2 , . . . , an ) ∈ V ,
1.1. CONCEPTE DE BAZ 37
Propoziµie 1.1.44. Un inel A este Noetherian dac ³i numai dac orice ³ir
ascendent de ideale ale sale este staµionar, adic dac Ik , k ∈ N sunt ideale ale
lui A astfel ca
I1 ⊆ I2 ⊆ I3 ⊆ . . .
atunci exist un indice l astfel ca
Il = Il+1 = Il+2 = . . .
sau altfel spus, nu exist în inelul A ³iruri innite de ideale strict cresc toare.
Teorem 1.1.45 (Teorema lui Hilbert a bazei). Fie A un inel comutativ. Dac
A este Noetherian atunci ³i A[x] este Noetherian.
principal (de grad cel mai mare) al polinomul fi . Idealul generat de ace³tia
J =< a1 , a2 , . . . , > este un ideal în A. Acest inel ind Noetherian, idealul J
este nit generat, ³i anume chiar de primele k elemente a1 , a2 , . . . , ak . Aceast
ultim proprietate se vede din faptul c ³irul de ideale Ji =< a1 , a2 , . . . , ai >
este ascendent ³i conform propoziµiei anterioare 1.1.44 el este staµionar, deci
începând de la un anumit indice k , avem Jk = Jk+1 = Jk+2 = . . . , deci în fapt
∑
k
g= ci fi xdeg(fk+1 )−deg(fi )
i=1
I =< f1 , f2 , . . . , fk > .
Demonstraµie. Corpul k este un inel în care exist numai dou ideale: {0}
³i corpul k însu³i. Primul este generat de elementul 0, al doilea de ele-
mentul 1, deci toate idealele lui k sunt nit generate. Prin urmare k este
40 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
87 15 6
- 60 4 4 · 15 = 60
27 3 3 · 6 = 18
- 18
9
87 15 6
- 30 2 2 · 15 = 30
57 9 9 · 6 = 54
- 54
3
87 15 6
- 45 3 3 · 15 = 45
42 7 7 · 6 = 42
- 42
0
2x3 − x − 1 x2 − x x2 − 1
(-) x3 − x x x · (x2 − 1) = x3 − x
x3 − 1
(-) x3 − x2 x x · (x2 − x) = x3 − x2
x2 − 1
x2 − x 1 1 · (x2 − x) = x2 − x
x−1
2x3 − x − 1 x2 − x x2 − 1
(-) x3 − x x x · (x2 − 1) = x3 − x
x3 − 1
(-) x3 − x2 x x · (x2 − x) = x3 − x2
x2 − 1
x2 − 1 1 1 · (x2 − 1) = x2 − 1
0
f = (x + 1) · g + x · h + (x − 1),
f = x · g + (x + 1) · h.
Pot f cute oare câturile ³i restul unice? R spunsul este armativ. Ideea
de baz este reducerea "împ rµirii" la mai multe numere (respectiv polinoame)
la împ rµirea obi³nuit la un singur num r respectiv un singur polinom!
Procedeul se bazeaz pe propoziµia 1.1.19 de pe pagina 26. Într-adev r,
inelul întregilor precum ³i inelul polinoamelor cu o nedeterminat ³i coecienµi
într-un corp este inel principal, prin urmare idealul generat de dou sau mai
multe elemente poate generat ³i de un singur element. Pe baza propoziµiei
1.1.23 de la pagina 27 acest element este chiar cel mai mare divizor comun al
"împ rµitorilor".
S vedem cum transform m concret împ rµirile din exemplele noastre an-
terioare.
În exemplul numeric avem (15, 6) = 3, deci 15Z + 6Z = 3Z. Astfel "îm-
p rµirea echivalent " este
87 3
- 87 29 29 · 3 = 87
0
unde câtul ³i restul sunt unice! Pe baza unei exprim ri al celui mai mare divizor
comun sub forma unei combinaµii liniare ale celor dou numere de genul
3 = 1 · 15 − 2 · 6,
87 = 4 · 15 + 3 · 6 + 3 · (1 · 15 − 2 · 6) + 0
= 7 · 15 − 3 · 6 + 0.
(x2 − 1, x2 − x) = x − 1,
2x3 − x − 1 x−1
(-) 2x3 − x − 1 2x2 + 2x + 1 (2x2 + 2x + 1) · (x − 1) = 2x3 − x − 1
0.
1.2. CONSTRUCIA BAZEI GRÖBNER 45
La fel ca pentru numere întregi, ³i în acest caz exprimarea celor dou polinoame
sub forma unor combinaµii liniare a celor doi "împ rµitori" are ca efect faptul
c , orice "împ rµire" poate redus la o împ rµire care are restul unic, în cazul
nostru 0.
Menµion m aici, c cel mai mare divizor comun, precum ³i "coecienµii"
combinaµiei liniare care îl exprim pe acesta cu ajutorul numerelor (poli-
noamelor) date, se calculeaz efectiv cu algoritmului lui Euclid extins.
• Exist un cel mai mare divizor comun pentru oricare dou polinoame din
k[x1 , x2 , . . . , xn ]?
Deniµie 1.2.1. Fie A un inel comutativ unitar f r divizori ai lui zero.
Spunem c un element a ∈ A este ireductibil , dac nu poate scris ca un
produs de dou elemente ambele neinversabile, adic dac a = bc atunci b sau
c este inversabil (unitate).
Deniµie 1.2.2. Fie A un inel comutativ unitar f r divizori ai lui zero.
Spunem c un element p ∈ A este prim , dac divide un produs de dou
46 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
elemente numai dac divide unul din cei doi factori, adic dac p|bc atunci p|b
sau p|c.
Un ideal propriu P ⊂ A se nume³te ideal prim dac conµine un produs
de elemente numai dac conµine unul din factorii acestuia, adic dac ab ∈ P
atunci a ∈ P sau b ∈ P .
Se observ c un element prim este ³i ireductibil (exerciµiu) pe când invers
în general nu este adev rat (contraexemple se pot da în inele în care descom-
punerea în factori ireductibili nu este unic !).
Deniµie 1.2.3. Fie A un inel comutativ unitar f r divizori ai lui zero. Inelul
A se nume³te factorial (sau inel cu descompunere unic în factori), orice ele-
ment al inelului se poate scrie ca un produs de elemente ireductibile ³i aceast
scriere este în esenµ unic .
Formal, A este factorial dac pentru orice element a al lui se poate scrie
a = q1 ·q2 ·. . .·qn , unde elementele qi sunt ireductibile, ³i dac a = p1 ·p2 ·. . .·pm
este o alt reprezentare în produs de elemente ireductibile, atunci m = n
³i pi = qi , dup o eventual permutare a indicilor (³i ignorarea/colectarea
eventualelor elemente inversabile).
Observaµie 1.2.4. Orice ideal maximal este ideal prim.
Demonstraµie. Fie M un ideal maximal în inelul unitar comutativ A. Pre-
supunem c ab ∈ M . Trebuie s ar t m c M conµine unul din cei doi factori.
Dac a ̸∈ M atunci idealul generat de a ³i M , < a, M > (prin maximali-
tatea lui M ) este egal cu inelul A, deci avem o reprezentare a lui 1 de forma
1 = ax + m, unde m ∈ M . Obµinem de aici b = abx + mb ∈ M , deci M este
prim.
asociaµi în divizibilitate) la puterea cea mai mic la care acestea apar în cele
dou descompuneri.
S trecem acum la formularea problemei "împ rµirii" în inelul
k[x1 , x2 , . . . , xn ]. Fie idealul I =< f1 , f2 , . . . , fk >. S reamintim c orice
ideal al acestui inel este nit generat, conform teoremei lui Hilbert a bazei,
vezi 1.1.45 de pe pagina 38, deci problema este pus în termenii cei mai gen-
erali. Fie f ∈ k[x1 , x2 , . . . , xn ] un polinom. Dorim s exprim m acest polinom
ca o "combinaµie liniar " a polinoamelor f1 , f2 , . . . , fk , admiµând un rest, cu
alte cuvinte dorim s investig m în ce m sur f aparµine idealului I ? Formal,
c ut m o exprimare de forma
f = f1 · q1 + f2 · q2 + . . . + fk · qk + r,
în care vom numi (aici) polinoamele q1 , q2 , . . . , qk drept "câturi", iar polinomul
r "rest" al "împ rµirii".
Pentru aceasta este clar c avem nevoie mai întâi de o ordonare a termenilor
unui polinom. În secµiunea care urmeaz investig m posibilit µile de ordonare
ale monoamelor.
α = (α1 , α2 , . . . , αn )
deci s denim o ordonare pe mulµimea Nn . Este natural s cerem ca aceast
relaµie de ordonare s e total (oricare dou monoame s e comparabile) ³i
s e compatibil cu înmulµirea monoamelor (înmulµirea a dou monoame cu
un al treilea s nu afecteze relaµia de ordine existent între acestea).
Pentru a putea s e aplicat într-un algoritm de împ rµire, în care prin
sc deri succesive gradele monoamelor vor descre³te în raport cu aceast or-
donare, pentru a asigurat terminarea algoritmului într-un num r nit de pa³i,
va trebui s cerem s nu existe ³iruri innite de exponenµi strict descresc tori.
Toate aceste criterii merit o deniµie proprie.
A treia proprietate este evident echivalent cu faptul c orice ³ir strict de-
scresc tor este nit.
Se pune acum problema dac exist asemenea relaµii de ordine pe mulµimea
N ³i eventual cum se caracterizeaz ele. Pentru a r spunde la prima între-
n
Odat xat o ordonare monomial , evident putem aranja termenii unui poli-
nom într-o ordine prefer m în mod uzual ordinea descresc toare dar putem
redeni ³i conceptele obi³nuite la polinoame cu o singur variabil de termen-
³i coecient principal respectiv gradul unui polinom.
LC(f ) = amdeg(f ) ∈ k,
LM(f ) = xmdeg(f ) ∈ k,
2x2 y x2 − x xy + y
(-) 2x2 y − 2xy 2y 2y · (x2 − x) = 2x2 y − 2xy
2xy
(-) 2xy + 2y 2 2 · (xy + y) = 2xy + 2y
−2y
2x2 y x2 − x xy + y
(-) 2x2 y + 2xy 2x 2x · (xy + y) = 2x2 y + 2xy
−2xy
(-) −2xy − 2y -2 −2 · (xy + y) = −2xy − 2y
2y
Din nou avem un rest, dar diferit de cel anterior. În consecinµ procedeul de
împ rµire depinde pîn ³i de ordinea în care alegem între împ rµitori în procesul
de generare a resturilor parµiale.
O alt observaµie pentru care nu d m acum o ilustraµie este criteriul de
terminare a împ rµirii. Se poate imagina u³or c generarea resturilor nu trebuie
s se opreasc atunci când termenul principal al restului parµial nu mai este
divizibil cu nici unul dintre termenii principali ai împ rµitorilor. Într-un astfel
de moment putem a³eza acest termen rest, ³i putem cuntinua împ rµirea cu
urm torul termen al restului parµial. Doar când nici unul dintre termenii
restului parµial nu mai este divizibil cu termenii principali ai împ rµitorilor,
procedeul se opre³te. Proprietatea ordon rii monomiale ne asigur c acesta
se va întâmpla dup un num r nit de pa³i.
Revenind la exemplul nostru, urmeaz surpriza:
• nici unul din termenii lui r nu este divizibil cu vre-unul din termenii
principali ai polinoamelor bazei, LT(g1 ), . . . , LT(gk ) (criteriul opririi îm-
p rµirii) ³i
Input: F = (f1 , f2 , . . . , fk )
Output: G = (g1 , g2 , . . . , gl ), o baz Gröbner pentru I , astfel ca F ⊂ G
G := F
repeat
G′ := G
1.2. CONSTRUCIA BAZEI GRÖBNER 53
xγ xγ
S(p, q) = ·p− · q,
LT(p) LT(q)
iar "mod" este un abuz de limbaj, pentru restul împ rµirii.
S observ m c algoritmul de mai sus calculeaz o baz Gröbner care poate
conµine polinoame "inutile". Mai precis avem urm toarea remarc , a c rei
demonstraµie este imediat din deniµia bazei Gröbner .
Observaµie 1.2.18. Fie G o baz Gröbner pentru idealul I . Fie g ∈ G un
polinom astfel ca LT(g) ∈ LT(G \ {g}. Atunci G \ {g} este tot o baz Gröbner
pentru I .
Rezult de aici c putem elimina aceast redundanµ din baza Gröbner
calculat cu ajutorul algoritmului lui Buchberger.
Deniµie 1.2.19. O baz Gröbner G pentru idealul I se nume³te minimal ,
dac :
• LC(g) = 1 pentru orice g ∈ G, ³i
• nici unul din monoamele lui g nu se a în < LT(G \ {g} > pentru orice
g ∈ G.
Deniµia de mai sus este justicat de propoziµia care urmeaz .
Propoziµie 1.2.21. Fix m o ordonare monomial în k[x1 , x2 , . . . , xn ], ³i e I
un ideal nenul. Atunci baza Gröbner redus a lui I este unic .
54 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
S trecem acum la una din cele mai spectaculoase aplicaµii ale aces-
tui algoritm: demonstraµia teoremelor de geometrie euclidian plan .
Prezentarea noastr încearc s e cât mai scurt , pentru a da loc unor ex-
emple edicatoare. Evident, materialul inclus aici nu este decât o iniµiere în
acest domeniu, ³i are drept scop principal trezirea interesului pentru apro-
fundarea acestor tehnici. Este întotdeauna fascinant în opinia autorului
1.3. DEMONSTRAIA TEOREMELOR DE GEOMETRIE 55
S vedem acum, cum arat toate acestea în Singular . Acest pachet este
construit pe baza furnizat de teoria inelelor de polinoame cu mai multe
variabile ³i are ca scop iniµial furnizarea suportului computaµional pentru in-
vestigaµii în teoria singularit µiilor. Este accesibil liber pe internet la adresa
http://www.singular.uni-kl.de/ de unde se poate obµine versiunea 3.1.1, la care
a ajuns în momentul redact rii acestui manuscris.
Inelele în pachetul Singular pot :
// --------------------------------------------------------
//
1.4. APLICAII EXEMPLE ÎN SINGULAR 59
// Program Singular
//
// Fie A1, A2, A3, A4 patru puncte arbitrare în plan.
// Coordonatele acestora sunt parametrii
// A(u1,u2), B(u3,u4), C(u5,u6), D(u7,u8)
// Ecuaµia unui cerc Euler conµine trei variabile legate
// a,b,c, iar cercul trece prin trei puncte deja date:
// (x-a1)^2+(y-b1)^2-c1^2=0 is the Euler circle of BCD...
// de unde rezult trei condiµii h1=0, h2=0, h3=0...
// În final (x1,x2) sunt coordonatele punctului de intersecµie.
//
ring r=(0,u1,u2,u3,u4,u5,u6,u7,u8),
(a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,x1,x2,y),lp;
poly h1=(u3+u5-2*a1)^2+(u4+u6-2*b1)^2-4*c1*c1;
poly h2=(u3+u7-2*a1)^2+(u4+u8-2*b1)^2-4*c1*c1;
poly h3=(u5+u7-2*a1)^2+(u6+u8-2*b1)^2-4*c1*c1;
poly h4=(u1+u5-2*a2)^2+(u2+u6-2*b2)^2-4*c2*c2;
poly h5=(u1+u7-2*a2)^2+(u2+u8-2*b2)^2-4*c2*c2;
poly h6=(u5+u7-2*a2)^2+(u6+u8-2*b2)^2-4*c2*c2;
poly h7=(u1+u3-2*a3)^2+(u2+u4-2*b3)^2-4*c3*c3;
poly h8=(u1+u7-2*a3)^2+(u2+u8-2*b3)^2-4*c3*c3;
poly h9=(u3+u7-2*a3)^2+(u4+u8-2*b3)^2-4*c3*c3;
poly h10=(u1+u3-2*a4)^2+(u2+u4-2*b4)^2-4*c4*c4;
poly h11=(u1+u5-2*a4)^2+(u2+u6-2*b4)^2-4*c4*c4;
poly h12=(u3+u5-2*a4)^2+(u4+u6-2*b4)^2-4*c4*c4;
poly h13=(x1-a1)^2+(x2-b1)^2-c1^2-((x1-a2)^2+(x2-b2)^2-c2^2);
poly h14=(x1-a1)^2+(x2-b1)^2-c1^2-((x1-a3)^2+(x2-b3)^2-c3^2);
// Concluzia este reprezentat de:
poly g=(x1-a1)^2+(x2-b1)^2-c1*c1;
// Definim idealul:
ideal I=(1-y*g,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14);
// Baza Gröbner este 1, deci teorema este adev rat :
groebner(I);
// --------------------------------------------------------
O C
O C
Indicaµie:
ring R=0,(x,y),dp;
ideal I=x3+x2y,xy3+y4;
ideal J=std(I);
poly f=x6+y6;
reduce(f,J);
// -> 0: f este in I
// -> diferit de 0: f nu este in I
62 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
(a). I ⊆ J.
(b). I ⊇ J.
(c). I = J.
(d). I ̸⊆ J .
(e). I ̸⊇ J .
au loc pentru urm toarele ideale ale inelului R[x, y] respectiv R[x, y, z].
Indicaµie:
ring R=0,(x,y),dp;
ideal I=x,y;
ideal J=x+2y,2x-y;
reduce(I,std(J));
// daca ambele generatoare ale lui I sunt in J -> I inclus J
// exact in acest caz comanda intoarce numai 0-uri
// in caz contrar -> I nu este inclus in J, etc...
Indicaµie:
ring R=0,(x,y),dp;
ideal I=x+2y,2x-y;
poly f=x+3y;
poly r=reduce(f,std(I));
matrix Q=lift(I,f-r);
r;
Q;
f-Q[1,1]*I[1]-Q[2,1]*I[2]-r;
// -> r este "restul" impartirii
// -> Q este "caturile" impartirii
// ultima relatie trebuie sa dea 0 -> "proba" impartirii
1.5. PROBLEME PROPUSE 63
sau
ring R=0,(x,y),dp;
ideal I=x+2y,2x-y;
poly f=x+3y;
list L=division(f,I);
L;
L[3]*f-matrix(I)*L[1]-L[2];
// -> L[1] este "caturile" impartirii
// -> L[2] este "restul" impartirii
// -> L[3] este un factor care inmulteste f
// ultima relatie trebuie sa dea 0 -> "proba" impartirii
6-1. x = 2t2 , y = t3 .
6-2. x = t2 + t + 1 , y = t3 .
6-3. x = t2 , y = t3 , z = t5 .
6-4. x = uv , y = uv 2 , z = u2 (aceast suprafaµ se nume³te umbrela lui
Whitney ).
6-5. x = u + v , y = u − v , z = u2 − v 2 .
6-6. x = u + v , y = u − v , z = u2 + v 2 .
6-7. x = u + v , y = uv , z = u2 + v 2 .
6-8. x = u2 + v 2 , y = u2 − v 2 , z = 2uv .
6-9. x = 1 + u2 + v , y = 1 − u − v 2 , z = u 2 + v 2 .
Indicaµie:
ring R=0,(t,x,y),dp;
ideal I=x-2t2,y-t3;
ideal J=eliminate(I,t);
J;
// -> J este generat de ecuaµiile implicite
Indicaµie:
ring A=0,(x,y),dp;
ideal I=x2,2xy,y2;
poly f=x+y;
ring B=0,(t,x,y),dp;
ideal I=imap(A,I);
poly f=imap(A,f);
I=I,1-t*f;
std(I);
// -> 1, inseamna f este in radicalul lui I,
// -> != 1, f nu este in radicalul lui I
Indicaµie:
LIB "primedec.lib";
ring R=0,(x,y),dp;
ideal I=x2,2xy,y2;
setring(R);
radical(I);
// -> idealul radical(I)
Indicaµie:
ring R=0,(x,y),dp;
ideal I=x2,xy,y2;
ideal J=x3;
intresect(I,J);
// -> idealul intersectia lui I si J
Indicaµie:
ring R=0,(x,y),dp;
ideal I=x2,xy;
ideal J=x3;
quotient(I,J);
// -> idealul cat al lui I si J
// -> 1, inseamna intreg inelul
11-1. f1 = 2x + y , f2 = x − 3y , f3 = 5x + 7y .
11-2. f1 = x + y , f2 = x − y , f3 = x2 − y 2 .
11-3. f1 = x + y , f2 = x − y , f3 = x2 + y 2 .
11-4. f1 = x + y + z , f2 = x2 + y 2 + z 2 , f3 = xy + xz + yz .
11-5. f1 = x + y , f2 = xy , f3 = x5 + y 5 .
11-6. f1 = x + y , f2 = xy , f3 = x5 − y 5 .
66 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR
Indicaµie:
ring R=0,(x,y),dp;
poly f1=2x+y;
poly f2=x-3y;
poly f3=5x+7y;
LIB "algebra.lib";
list L=algDependent(ideal(f1,f2,f3))[1];
// -> L[1]=1, inseamna algebric dependent
67
68 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAII
f = a1 x1 + a2 x2 + . . . + an xn − b,
întreg inelul ori ideal propriu. A³adar ori I1 ⊃ I este maximal ori exist
f2 ∈ k[x1 , x2 , . . . , xn ] \ I2 . Raµionamentul se repet , ³i se obµine astfel un ³ir
strict ascendent de ideale I1 & I2 & . . ., care ind nit, exist un indice k
pentru care Ik = k[x1 , x2 , . . . , xn ]. Atunci m = Ik−1 este idealul maximal care
îl conµine pe I .
m =< x1 − a1 , x2 − a2 , . . . , xn − an >,
J =< I, yf − 1 > .
1 = h1 · g1 + h2 · g2 + . . . + hs · gs + h · (yf − 1).
∑
s
1
1= hi (x1 , x2 , . . . , xn , ) · gi .
f
i=1
Propoziµie 2.1.5. Un sistem de ecuaµii algebrice de forma 2.1 are soluµii exact
atunci când idealul generat de polinoamele care îl denesc este propriu (nu este
întregul inel de polinoame în cele n variabile).
Altfel spus, un sistem algebric este incompatibil dac ³i numai dac baza
Gröbner al idealului generat de polinoamele care denesc sistemul conµine poli-
nomul constant 1.
• Elementele mulµimii
∑ {x α| x ̸∈< LT(I) >} sunt liniar independente mod-
α α
Într-adev r, restul împ rµirii sumei este suma resturilor, iar restul împ rµirii
unui produs este produsul resturilor, mai precis restul împ rµirii acestui produs.
LT(I) >.
∏
k
f (xi ) = (xi − aj ).
j=1
lui xi .
(3)⇒(2). Aceasta rezult din deniµia lui LT(G).
(2)⇒(4). Dac o putere mi a ec rei necunoscute xi este în < LT(I) >,
atunci monoamele din complementul lui < LT(I) > au exponentul lui xi limitat
de mi , deci num rul total al acestora este m rginit de m1 · m2 · . . . · mn .
(4)⇒(5). Este armaµia corolarului 2.1.7 de la pagina 73.
(5)⇒(1). Pentru a ar ta c V este o mulµime nit , este sucient s ar t m
c proiecµia ei pe ecare ax de coordonat este nit . Fix m deci un indice
i, ³i consider m clasa de echivalenµ [xji ] în C[x1 , x2 , . . . , xn ]/I , pentru toate
valorile naturale ale exponentului. Deoarece C[x1 , x2 , . . . , xn ]/I este nit di-
mensional, aceste clase de echivalenµ sunt liniar dependente, deci exist o
relaµie de forma
∑m
j
∑ m
cj [xi ] = [ cj xji ] = [0],
j=0 j=0
∑ j
unde nu toµi coecienµii sunt nuli. Aceast egalitate înseamn c mj=0 cj xi ∈
I . Un polinom de grad m are cel mult m r d cini distincte în C, deci avem
un num r nit de valori ale coordonatei în direcµia i.
ideal I = xy-x-y-22,x2+y2+3x+3y-88;
groebner(I);
486z 13 + 840294z 12 + 2179519z 11 − 18625847z 10 −
−66952171z 9 − 7843427z 8 + 864097117z 7 + 8298367485z 6 +
+25162261044z 5 − 22542925824z 4 − 487702971614z 3 −
−723757819752z 2 + 2144327757537z + 4109489307937 = 0
77868818920376452884002811866907927673441157293810718
339707101119008169629924900821074y−
−3165964173658935134318719546559561756869138557293825
59718764947097089412685574z 12 −
−5468660118700616318300861495537616527046099140703174
56131250225276053752487210842z 11 −
−5062655715391250343281072657913808616967693447596384
72523854301571083149345549117z 10 +
+1203525326967704658753953066324324257990023912764591
9306621852750963467045157880067z 9 +
+2183609940433704346329865619806272172526511003755655
3500984050074577338350969027336z 8 −
−1597643510026580155559129736486158168128487513165237
0380435238355883589904576870620z 7 −
−4918586941570178867598827408562421500244352148286093
56548339447678061044391805476356z 6 −
−4547731012299438430399486296727284507537002149137493
051746934356874890912603084713661z 5 −
−9327763490789532911836051672446234989487360511203537
630956287478096418183048087158993z 4 +
+2207427906651088844372502166119468408052683359325382
1243194012994480276581591309059380z 3 +
+2565575905657144169435766588693932093688036563944545
37686316620821332822604623919532697z 2 +
+3024177886537265069275177451180774051636115905699171
3443488775463490120854023159339556z−
−1116574640642650517254952303223042003058428039235345
713199512234484182234329397469281893 = 0
154238x − 2440y 6 + 4782y 5 + 3477y 4 z + 21090y 4 −
−1730y 3 z + 37457y 3 + 366y 2 z 2 − 72397y 2 z − 4891y 2 −
−272yz 2 − 115170yz − 457590y − 8714z 2 − 64132z − 691370 = 0
Sistemul are un num r nit (mai exact 13) soluµii (13 < 3 × 3 × 3).
2.2. APLICAII EXEMPLE IN SINGULAR 83
z 9 + 2z 8 + z 7 + 3z 6 + 6z 5 − 16z 4 + 5z 3 − 104z 2 = 214
y3 − z3 = 2
26510x − 9y z − 122y z − 50y z + 818y 4 z 2 +
4 5 4 4 4 3
+51y z − 3778y 4 − 9yz 7 − 131yz 6 − 154yz 5 + 886yz 4 −
4
−532yz 3 − 4031yz 2 + 219yz + 7168y = 0
x3 − y 3 − z 2 = −1
y4 − z3 = 2
−x + x2 y + z 3 = 5
3
5417581252722767757893785005977549594858437561190520738794
4543099287040000y−
−380407259006106255157115226548178238657972782573090172609
13123255939z 35 +
+490198400501144742354695108750377701491564890301772523468
574460255845z 34 −
−291094228604993169621351702398726171964972709176773454684
8226339326909z 33 +
+118941097136439757347058693235197403126676943105753767794
27135535697288z 32 −
−447766118221606923608448449396284858988291425553069386289
44226550656845z 31 +
+155481032106091955235618175888045998356975249687775422634
405962696466767z 30 −
−453925669452102709794358138333732483280913563754486955176
336819707784974z 29 +
+119915470545578565193190765611652778742503673549812437485
3234801665372318z 28 −
−306096503528486197955620584546544961917706050574797213163
6339074865585217z 27 +
2.2. APLICAII EXEMPLE IN SINGULAR 85
+706141768162837765886890724973207169311442349984733073474
4479426938761255z 26 −
−150813004212932930694467045516180374800422151932206774886
20802875205959942z 25 +
+314225407459769208101160471113919701081425951342656743200
61835871812036188z 24 −
−605221530661893932436492718689017579155495404700119832827
47242353580588979z 23 +
+110164401681394388896911248883884296975432656308392873955
296908293520677469z 22 −
−196054373944301284242043010489125964899733600938851600354
007242789634115963z 21 +
+324535592506944280136405443212958710199613453549327322753
893192609477691039z 20 −
−514245835856854922228146149985885797367655445996926529523
751328479118237561z 19 +
+793693832095180314625421525269560263653275970371691784743
928623618909791499z 18 −
−113637151311394711459915574787174078139256163134384408470
8931468958221009189z 17 +
+156778015621377881782094840741093425122048128544933971349
3801987059899410867z 16 −
−209851119113519633028865405777314273794151047841195910999
0677659894275330729z 15 +
+256629279374923725192707690016504875775441493338259738213
1543433641385881023z 14 −
−304356567507058301976654266464020327916723836015869628216
8131798217396619317z 13 +
+352465761223250489279926921197545881220003180131809385563
8821081195101975431z 12 −
−358889076053476287266958114245936424780938110212860139342
5703381436599648933z 11 +
+363867476324405727453227660495550603198567042597058277786
8195266618253468607z 10 −
−365344942219656433609648781911468153070444457391146934377
5803672178271701973z 9 +
+295339439132619987450572189045899333937302619483615408936
6418183800006905530z 8 −
86 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAII
−269533742969156754350962756303981319687682636711424286007
8910200928419409678z 7 +
+231074135647962624531691039423213006368164894919951770035
3367450118256943706z 6 −
−122756615494727295713573371744259405539193843809357051424
9623863941654919532z 5 +
+125826176957466809520033834635107371821063108213015027455
2967957610159749828z 4 −
−792393052250852353861702261514644310895862492263359648244
917536941034339692z 3 +
+206420917632076173539312189584954666865392013564015533912
916656529156102472z 2 −
−545032840828031924370745138552277174455467026003060892852
426931006456412376z−
−477575194361137824693413533635032771708909212313290521881
85989675769736632 = 0
(a2 g 2 − 4abf g − 2aceg + 4acf 2 + 4b2 eg − 4bcef + c2 e2 )y 4 −
−(2a gh − 4abf h − 2aceh − 2adeg + 4adf 2 + 4b2 eh − 4bdef + 2cde2 )y 2 +
2
+(a2 h2 + 2adeh − d2 e2 ) = 0
(2a2 f h − 2abeh − 2adef + 2bde2 )x+
− 4abf g − 2aceg + 4acf 2 + 4b2 eg − 4bcef + c2 e2 )y 3 −
+(a2 g 2
−(a gh − 4abf h − aceh − adeg + 4adf 2 + 4b2 eh − 4bdef + cde2 )y = 0
2
−(a3 k 3 − a2 bhk 2 − 2a2 cgk 2 + a2 ch2 k − 3a2 df k 2 + 3a2 dghk − a2 dh3 + ab2 gk 2 +
3abcf k 2 − abcghk − abdf hk − 2abdg 2 k + abdgh2 − 2ac2 f hk + ac2 g 2 k + acdf gk +
2acdf h2 − acdg 2 h + 3ad2 f 2 k − 3ad2 f gh + ad2 g 3 − b3 f k 2 + b2 cf hk + 2b2 df gk −
b2 df h2 − bc2 f gk − 3bcdf 2 k + bcdf gh + 2bd2 f 2 h − bd2 f g 2 + c3 f 2 k − c2 df 2 h +
cd2 f 2 g − d3 f 3 )y 9 +
+(3a3 k 2 l−2a2 bhkl−4a2 cgkl+a2 ch2 l−6a2 df kl+3a2 dghl−3a2 ef k 2 +3a2 eghk−
a2 eh3 + 2ab2 gkl + 6abcf kl − abcghl − abdf hl − 2abdg 2 l − abef hk − 2abeg 2 k +
abegh2 − 2ac2 f hl + ac2 g 2 l + acdf gl + acef gk + 2acef h2 − aceg 2 h + 3ad2 f 2 l +
6adef 2 k − 6adef gh + 2adeg 3 − 2b3 f kl + b2 cf hl + 2b2 df gl + 2b2 ef gk − b2 ef h2 −
bc2 f gl − 3bcdf 2 l − 3bcef 2 k + bcef gh + 4bdef 2 h − 2bdef g 2 + c3 f 2 l − c2 ef 2 h +
2cdef 2 g − 3d2 ef 3 )y 6 −
−(3a3 kl2 − a2 bhl2 − 2a2 cgl2 − 3a2 df l2 − 6a2 ef kl + 3a2 eghl + ab2 gl2 + 3abcf l2 −
abef hl − 2abeg 2 l + acef gl + 6adef 2 l + 3ae2 f 2 k − 3ae2 f gh + ae2 g 3 − b3 f l2 +
2b2 ef gl − 3bcef 2 l + 2be2 f 2 h − be2 f g 2 + ce2 f 2 g − 3de2 f 3 )y 3 +
+(a3 l3 + 3a2 ef l2 − 3ae2 f 2 l + e3 f 3 ) = 0
−(a5 h3 l2 −2a4 bgh2 l2 −3a4 cf h2 l2 +a4 cg 2 hl2 +a4 dg 3 l2 −2a4 ef h3 l−a4 eg 3 kl+
a4 eg 2 h2 l + 2a3 b2 f h2 l2 + a3 b2 g 2 hl2 + 2a3 bcf ghl2 − a3 bcg 3 l2 − 3a3 bdf g 2 l2 +
3a bef g kl + 2a3 bef gh2 l − a3 beg 3 hl + 3a3 c2 f 2 hl2 − a3 c2 f g 2 l2 + 6a3 cef 2 h2 l −
3 2
5ab2 d2 f 2 g 2 l − 10ab2 def 3 hk + 2ab2 def 2 g 2 k + 10ab2 def 2 gh2 − 4ab2 def g 3 h −
6abc3 f 3 kl − 2abc3 f 2 ghl + 2abc3 f g 3 l − 8abc2 df 3 hl + 8abc2 df 2 g 2 l − 2abc2 ef 3 hk +
4abc2 ef 2 g 2 k + 2abc2 ef 2 gh2 − 2abc2 ef g 3 h + 8abcd2 f 3 gl + 4abcdef 3 gk +
8abcdef 3 h2 −12abcdef 2 g 2 h+4abcdef g 4 +2abd3 f 4 l+6abd2 ef 4 k−8abd2 ef 3 gh+
2abd2 ef 2 g 3 + 4ac4 f 3 hl − 2ac4 f 2 g 2 l − 2ac3 df 3 gl − 4ac3 ef 3 h2 + 2ac3 ef 2 g 2 h −
3ac2 d2 f 4 l−6ac2 def 4 k+10ac2 def 3 gh−4ac2 def 2 g 3 −6acd2 ef 4 h+2acd2 ef 3 g 2 +
2ad3 ef 4 g + 2b5 f 2 hkl − 2b4 cf 2 gkl − b4 cf 2 h2 l − 2b4 df 3 kl − 2b4 df 2 ghl + b4 ef 3 k 2 −
2b4 ef 2 ghk + b4 ef 2 h3 + 2b3 c2 f 3 kl + 2b3 c2 f 2 ghl + 4b3 cdf 3 hl + 2b3 cdf 2 g 2 l +
2b3 cef 3 hk + 2b3 cef 2 g 2 k − 2b3 cef 2 gh2 + 2b3 d2 f 3 gl − 4b3 def 3 h2 + 2b3 def 2 g 2 h −
2b2 c3 f 3 hl − b2 c3 f 2 g 2 l − 6b2 c2 df 3 gl − 4b2 c2 ef 3 gk + 2b2 c2 ef 3 h2 + b2 c2 ef 2 g 2 h −
3b2 cd2 f 4 l + 2b2 cdef 3 gh − 2b2 cdef 2 g 3 + 5b2 d2 ef 4 h − b2 d2 ef 3 g 2 + 2bc4 f 3 gl +
4bc3 df 4 l + 2bc3 ef 4 k − 2bc3 ef 3 gh − 4bc2 def 4 h + 4bc2 def 3 g 2 − 2bcd2 ef 4 g −
2bd3 ef 5 − c5 f 4 l + c4 ef 4 h − 2c3 def 4 g + 3c2 d2 ef 5 )y 4 −
−(a5 gk 2 l2 −2a5 h2 kl2 −a4 bf k 2 l2 +2a4 bghkl2 +a4 bh3 l2 +4a4 cf hkl2 −2a4 cg 2 kl2 +
a4 cgh2 l2 − 2a4 df gkl2 + 2a4 df h2 l2 − a4 dg 2 hl2 − 2a4 ef gk 2 l + 4a4 ef h2 kl +
a4 eg 2 hkl − 2a4 egh3 l − 2a3 b2 f hkl2 − 2a3 b2 gh2 l2 + 2a3 bcf gkl2 − 4a3 bcf h2 l2 +
2a3 bdf 2 kl2 + a3 bdg 3 l2 + 2a3 bef 2 k 2 l − 6a3 bef ghkl − a3 beg 3 kl + 4a3 beg 2 h2 l −
2a3 c2 f 2 kl2 − 2a3 c2 f ghl2 + a3 c2 g 3 l2 − 4a3 cdf 2 hl2 + 3a3 cdf g 2 l2 − 8a3 cef 2 hkl +
3a3 cef g 2 kl + 4a3 cef gh2 l − 2a3 ceg 3 hl + a3 d2 f 2 gl2 + 4a3 def 2 gkl − 4a3 def 2 h2 l +
a3 def g 2 hl − a3 deg 4 l + a3 e2 f 2 gk 2 − 2a3 e2 f 2 h2 k − a3 e2 f g 2 hk + 2a3 e2 f gh3 +
a3 e2 g 4 k − a3 e2 g 3 h2 + 2a2 b3 f h2 l2 + a2 b3 g 2 hl2 + 4a2 b2 cf ghl2 − a2 b2 cg 3 l2 +
a2 b2 df 2 hl2 − 3a2 b2 df g 2 l2 + 5a2 b2 ef 2 hkl + 3a2 b2 ef g 2 kl − 4a2 b2 ef gh2 l −
2a2 b2 eg 3 hl + 5a2 bc2 f 2 hl2 − 3a2 bc2 f g 2 l2 − 4a2 bcdf 2 gl2 − 2a2 bcef 2 gkl +
2a2 bcef 2 h2 l−2a2 bcef g 2 hl+2a2 bceg 4 l−a2 bd2 f 3 l2 −4a2 bdef 3 kl+2a2 bdef 2 ghl+
3a2 bdef g 3 l−a2 be2 f 3 k 2 +4a2 be2 f 2 ghk−a2 be2 f 2 h3 −3a2 be2 f g 3 k−a2 be2 f g 2 h2 +
a2 be2 g 4 h + a2 c3 f 2 gl2 + 2a2 c2 df 3 l2 + 4a2 c2 ef 3 kl − 2a2 c2 ef 2 ghl + 8a2 cdef 3 hl −
5a2 cdef 2 g 2 l + 4a2 ce2 f 3 hk − a2 ce2 f 2 g 2 k − 5a2 ce2 f 2 gh2 + 4a2 ce2 f g 3 h −
a2 ce2 g 5 − 2a2 d2 ef 3 gl − 2a2 de2 f 3 gk + 2a2 de2 f 3 h2 − 2ab4 f ghl2 − 4ab3 cf 2 hl2 +
2ab3 cf g 2 l2 + 3ab3 df 2 gl2 − 3ab3 ef 2 gkl + 4ab3 ef g 2 hl + ab2 c2 f 2 gl2 + ab2 cdf 3 l2 −
ab2 cef 3 kl+2ab2 cef 2 ghl−4ab2 cef g 3 l−3ab2 def 3 hl−3ab2 def 2 g 2 l−3ab2 e2 f 3 hk+
3ab2 e2 f 2 g 2 k + 3ab2 e2 f 2 gh2 − 2ab2 e2 f g 3 h − 2abc3 f 3 l2 − 4abc2 ef 3 hl +
4abc2 ef 2 g 2 l+6abcdef 3 gl+2abce2 f 3 h2 −4abce2 f 2 g 2 h+2abce2 f g 4 +2abd2 ef 4 l+
2abde2 f 4 k − 2abde2 f 3 gh − 4ac2 def 4 l − 2ac2 e2 f 4 k + 4ac2 e2 f 3 gh − 2ac2 e2 f 2 g 3 −
4acde2 f 4 h + 2acde2 f 3 g 2 + ad2 e2 f 4 g + b5 f 2 hl2 − b4 cf 2 gl2 − b4 df 3 l2 + b4 ef 3 kl −
2b4 ef 2 ghl+b3 c2 f 3 l2 +2b3 cef 3 hl+2b3 cef 2 g 2 l+b3 def 3 gl−b3 e2 f 3 gk−b3 e2 f 3 h2 +
b3 e2 f 2 g 2 h − 4b2 c2 ef 3 gl − b2 cdef 4 l + b2 ce2 f 4 k − b2 ce2 f 2 g 3 + 2b2 de2 f 4 h +
2bc3 ef 4 l−bc2 e2 f 4 h+2bc2 e2 f 3 g 2 −2bcde2 f 4 g−bd2 e2 f 5 −c3 e2 f 4 g+2c2 de2 f 5 )y =
0.
2.2. APLICAII EXEMPLE IN SINGULAR 91
{
x3 y + x2 y − (i + 1)x2 + ixy 2 + (i − 2)xy − (i + 1)x − (i − 1)y + (i + 3) = 0
x3 y − (i + 1)x2 + (3i − 2)xy − (i + 2) = 0
{
x3 y + x2 y − (i + 1)x2 + ixy 2 + (i − 2)xy − (i + 1)x − (i − 1)y + (i + 3) = 0
x3 y − (i + 1)x2 + (3i − 2)xy − (i − 5) = 0
5
2y − 12y 4 − (5i − 31)y 3 +
(12i − 36)y 2 − (19i − 21)y + (24i + 12) = 0
−(44i − 100)x−
−(12i − 16)y 4 + (56i − 88)y 3 − (146i − 170)y 2 +
+(196i − 132)y − (206i − 14) = 0
∑
m ∑
m ∑
m
i1 i2 in
(Bm f )(x) = ··· f( , ,..., ) ·
m m m
i1 =0 i2 =0 in =0
∏ n
i i
Cmj · xjj · (1 − xj )m−ij ,
j=1
Rezolvare:
Pasul 1. m = 2,
28x2 y 2 + 170x2 y − 216x2 + 170xy 2 − 864xy
−244x − 1000z − 216y 2 − 244y + 1000 = 0
−x2 + z − y 2 = 0
−4x + 4z − 4y + 1 = 0
Pasul 2.
3136y 8 + 31808y 7 + 178784y 6 − 1139456y 5 + 2960232y 4
+3963400y 3 + 15306185y 2 − 17019304y + 1317904 = 0
239377264285440264z
+38801387759680y 7
+361771065106752y 6
+2064375688512992y 5
−13760573122605696y 4
+64582070537855400y 3
−18298549871869160y 2
−21651628400988375y
−144393016743385558 = 0
−4x + 4z − 4y + 1 = 0
b−a d−c
h= , l= .
N M
Vom considera funcµii spline bicubice, care sunt polinomiale de grad trei
în ambele variabile pe porµiuni, ³i interpoleaz valorile funcµiei diferenµiabile
f : D → R în nodurile (xi , yj ) ³i a valorilor derivatelor parµiale de ordinul întâi
D1,0 f ³i D0,1 f în acelea³i noduri.
De fapt se determin funcµia spline bicubic S(f ) în dou variabile având
urm toarele propriet µi:
α,β=0,α+β≤4
(r,s)
Dr,s S(f )(xi , yj ) = Dr,s f (xi , yj ) := fij
S reiter m teorema 2.3 din [29] (se poate consulta ³i [11] sau [34]).
Mai mult, S(f ) poate construit efectiv. Iat expresia acesteia. Not m:
x − xi y − yj
t= , v= ,
h l
pentru o pereche xat de indici (i, j) ³i punctul (x, y) ∈ Di,j . Putem exprima
funcµia spline bicubic S(f ) pe subdomeniul Di,j în felul urm tor:
96 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAII
Si,j (f )(x, y) =
(1,0) (1,0)
(1 − v) · (Φ1 (t)fi,j + Φ2 (t)fi+1,j + Φ3 (t)hfi,j + Φ4 (t)hfi+1,j )
(1,0) (1,0)
+v · (Φ1 (t)fi,j+1 + Φ2 (t)fi+1,j+1 + Φ3 (t)hfi,j+1 + Φ4 (t)hfi+1,j+1 )
(0,1)
+v(1 − v) · (v((1 − t)(fi,j+1 − fi,j − lfi,j+1 )
(0,1)
+t(fi+1,j+1 − fi+1,j − lfi+1,j+1 ))
(0,1)
+(1 − v)((1 − t)(−fi,j+1 + fi,j + lfi,j )
(0,1)
+t(−fi+1,j+1 + fi+1,j + lfi+1,j ))),
unde
F (x, y) = 0
vom avea un num r de N · M sisteme polinomiale de forma
{
S(f1 )(x1 , x2 ) = 0
S(f2 )(x1 , x2 ) = 0,
Exerciµiu 2.3.5.
1
cos(x + y) − x − y + = 0
4
x +y −x−y+ 1 =0
2 2
4
Soluµie:
Pasul 1. Alegem N = 3 ³i M = 3. Formula de aproximare cu funcµii
spline ne d 3 × 3 = 9 sisteme polinomiale. Primul din ele, pentru i = 0 ³i
j = 0 sau D0,0 = [0, 0.333] × [0, 0.333] avem
1.564 ∗ 10−1 x3 y + 2.757 ∗ 10−2 x3 + 8.394 ∗ 10−2 x2 y
−5.046 ∗ 10−1 x2 + 1.564 ∗ 10−1 xy 3 + 8.391 ∗ 10−2 xy 2
−1.027xy − x + 2.757 ∗ 10−2 y 3 − 5.046 ∗ 10−1 y 2 − y + 1.250 = 0
x2 − x + y 2 − y + 2.500 ∗ 10−1 = 0
1.301 ∗ 10−1 x3 y + 3.643 ∗ 10−2 x3 + 2.414 ∗ 10−1 x2 y
−5.570 ∗ 10−1 x2 + 1.300 ∗ 10−1 xy 3 + 1.114 ∗ 10−1 xy 2
−1.086xy − 9.824 ∗ 10−1 x + 7.969 ∗ 10−2 y 3 − 5.563 ∗ 10−1 y 2
−9.829 ∗ 10−1 y + 1.248 = 0
x2 − x + y 2 − y + 2.500 ∗ 10−1 = 0
8.940 ∗ 10−2 x3 y + 6.349 ∗ 10−2 x3 + 3.722 ∗ 10−1 x2 y
−6.443 ∗ 10−1 x2 + 8.934 ∗ 10−2 xy 3 + 1.934 ∗ 10−1 xy 2
−1.180xy − 9.439 ∗ 10−1 x + 1.230 ∗ 10−1 y 3 − 6.422 ∗ 10−1 y 2
−9.261 ∗ 10−1 y + 1.236 = 0
x2 − x + y 2 − y + 2.500 ∗ 10−1 = 0
98 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAII
Pasul 2.
y − 9.239 ∗ 10−2 = 0
x + 1.716 ∗ 10−2 y 5 − 1.076 ∗ 10−1 y 4
+3.785 ∗ 10−1 y 3 − 1.969 ∗ 10−1 y 2
+9.593 ∗ 10−1 y − 8.771 ∗ 10−1 = 0
6
y − 4.633y 5 + 1.185 ∗ 10y 4 + 1.495y 3
+3.531 ∗ 10y − 3.707 ∗ 10y + 3.043 = 0
2
x + 2.048 ∗ 10−2 y 5 − 1.070 ∗ 10−1 y 4
+4.079 ∗ 10−1 y 3 − 3.297 ∗ 10−1 y 2
+1.042y − 8.772 ∗ 10−1 = 0
y 6 − 4.244y 5 + 1.025 ∗ 10y 4
−6.669 ∗ 10−1 y 3 + 2.922 ∗ 10y 2
−2.930 ∗ 10y + 2.291 = 0
x + 2.416 ∗ 10 y − 1.153 ∗ 10−1 y 4
−2 5
+4.322 ∗ 10−1 y 3 − 3.864 ∗ 10−1 y 2
+1.062y − 8.678 ∗ 10−1 = 0
Pasul 3.
Pentru primul sistem soluµia este: (0.797, 0.09239) ̸∈ D0,0 .
Pentru cel de al doilea obµinem dou soluµii reale (0.786, 0.09) ³i
(0.093, 0.791), care nu aparµin domeniului D0,1 .
Al treilea sistem are dou soluµii reale: (0.78, 0.085) ̸∈ D0,2 dar
(0.093, 0.791) ∈ D0,2 .
Pasul 4.
Metoda Newton cu punctul de start obµinut anterior d : (0.093, 0.791) ∈
D0,2 . Celelalte ³ase sisteme mai dau înc o soluµie, simetric faµ de cea
obµinut deja.
1-1. {
2x − 3y = −1
x − 2y = −1
2.4. PROBLEME PROPUSE 99
1-2.
2x − 3y + 4z = 10
x − 5y + 2z = −10
3x − 4y + 3z = 10
1-3.
5x − 3y + z = 9
x − 2y − 2z = −1
4x − y + 3z = 10
1-4.
2x − 3y + z = 1
x + 2y + 2z = −1
3x − y + 3z = 10
1-5.
2x − y − z − u = 1
−x + 2y − z − u = 1
−x − y + 2z − u = 1
−x − y − z + 2u = 1
Indicaµie:
ring R=0,(x,y),lp;
poly f1=2x-3y+1;
poly f2=x-2y+1;
ideal I=f1,f2;
ideal J=groebner(I);
J;
LIB "solve.lib";
list s=solve(I,6);
s;
// -> J: este forma echivalenta "triunghiulara" a sistemului
// -> s: este lista solutiilor in numere complexe
2-1. {
2x2 − 3y 2 = −1
x − 2y = −1
2-2. {
2x − 3y = −1
x2 − 2y 2 = −1
100 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUAII
2-3. {
2x2 − 3y 2 = −1
x2 − 2y 2 = −1
2-4. {
2x5 − 3y 4 = −1
x3 − 2y 2 = −1
2-5.
2x − 3y + 2z = 1
2 2 2
x2 − 2y 3 − xz 2 = −2
2
x y − 2zy 2 − yz 3 = −2
2-6. {
(x + y − 1)(2x − 3y − 1) = 0
(x + 5y − 2)(4x + 2y − 1) = 0
2-7. {
(x2 + x − 2)(2x − 3y − 1) = 0
x3 + xy − y − 1 = 0
2-8. {
(x2 + x − 2)(2x − 3y − 1) = 0
x3 + xy − y + 1 = 0
2-9. {
x7 + xy 4 − 3y 3 = −1
x3 y + xy 4 − y 7 = 1
Indicaµie:
ring R=0,(x,y),lp;
poly f1=2x2-3y2+1;
poly f2=x-2y+1;
ideal I=f1,f2;
ideal J=groebner(I);
J;
LIB "solve.lib";
list s=solve(I,6);
s;
// -> J: este forma echivalenta "triunghiulara" a sistemului
// -> s: este lista solutiilor in numere complexe
Capitolul 3
101
102 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
u = ”1011”.
Înainte de a-l transmite s complet m mesajul cu alte trei cifre binare în modul
urm tor. S consider m matricea de generare
1 0 0 0 0 1 1
0 1 0 0 1 0 1
G=
0
.
0 1 0 1 1 0
0 0 0 1 1 1 1
( )
v= 1 0 1 1 0 1 0 .
( )
v= 1 0 1 0 0 1 0 .
Evident cel care recepteaz nu vede sub aceast form , ci mai degrab astfel:
( )
v= 1 0 1 0 0 1 0 .
3.1. UN EXEMPLU CONCRET 103
Este acest mesaj corect? Dac nu, unde este gre³ala, care este cifra alterat ?
Iat cum putem depista cifra alterat . Consider m matricea
0 0 0 1 1 1 1
H = 0 1 1 0 0 1 1 ,
1 0 1 0 1 0 1
##################################################################
## Funcµie de conversie a num rului de ordine
## input: s - o matrice 3x1, cu elemente din Z(2)
## output: convs - un num r între 0..7
##
##
convs:=function(s)
local k,i;
k:=0;
for i in [1..3] do
if s[i][1]=1*Z(2) then
k:=k*2+1;
else
k:=k*2+0;
fi;
od;
return k;
end;;
106 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
##################################################################
##
## Programul principal:
##
## Semnificaµia variabilelor din program
##
## u - mesaj util, 4 cifre binare Z(2) (matrice tip 1x4)
## G - matrice de generare, elemente din Z(2) (tip 4x7)
## H - matrice de control, elemente din Z(2) (tip 3x7)
## v - mesajul codificat ³i transmis, apoi recepµionat
## (eventual) eronat, (matrice-linie, tip 1x7)
## s - vector, locul erorii, (matrice coloan , tip 3x1)
##
##################################################################
## Mesajul util
u:=[[1, 0, 1, 1]]*One(F);
## Mesajul transmis
v:=u*G;
## Descoperirea erorii
s:=H*TransposedMat(v);
Print("\n s - descoperirea erorii \n\n");
Display(s);
## Corectarea erorii
## cifra binar eronat are num rul de ordine k
k:=conv(s);
Print("\n ...cifra recepµionat eronat este, \n\n");
Display(k);
F = {0, 1, a, a2 , a3 , a4 , ...},
unde simbolul a nu este nici 0 nici 1. Presupunem c operaµiile de adunare (+)
³i de înmulµire (·) cu propriet µile lor obi³nuite pot efectuate între elementele
acestei mulµimi F , spre exemplu a · a = a2 , 1 · a = a, 0 + a = a, 0 · a = 0,
a · (1 + a2 ) = a + a3 etc. În acest mod se genereaz expresii algebrice, care
conµin simbolul a.
Presupunem c mai avem ³i dou reguli specice de calcul:
1+1=0
³i
a6 = a + 1,
3.2. CORPURI FINITE 109
• cea mai mic valoare pozitiv a lui n pentru care an = 1, conform acestor
reguli de calcul (a0 = 1 prin convenµie), ³i
c0 + c1 · a + c2 · a2 + . . . + ak · ak , (3.1)
Consecinµ 3.2.3.
• Setul de coecienµi numerici posibili este nit, {0, 1}, iar setul
monoamelor este de asemenea nit, {1, a, a2 , a3 , a4 , a5 }, prin urmare setul
polinoamelor generat de F este nit.
Probleme 3.2.4.
• Este mulµimea polinoamelor generate de mulµimea F mulµimea tuturor
polinoamelor (nenule) cu coecienµi din Z2 de grad cel mult 5?
S observ m c , dac r spunsul la prima întrebare este DA, iar la a doua
este NU, atunci ambele operaµii adunarea ³i înmulµirea în mulµimea F
devin operaµii interne.
• Cel mai important îns este urm torul fapt, citit tot din tabel: Fiecare
element al mulµimii F are un invers (multiplicativ)! Într-adev r a−1 =
a62 , etc. (deoarece ak · a63−k = a63 = 1, k = 1, 2, . . . , 62)
factorize(x^2+a*x+a^2);
[1]:
_[1]=1
_[2]=x+(a5+a4+a2+a+1)
_[3]=x+(a5+a4+a2+1)
[2]:
1,1,1
3.2. CORPURI FINITE 115
Corpul GF(22 )
Corpul coecienµilor este F2 . Avem nevoie de un polinom ireductibil de gradul
2. Polinoame de grad 2 sunt patru: x2 = x·x, x2 +1 = (x+1)2 , x2 +x = x·(x+1)
³i x2 +x+1 = x·(x+1)+1. Acesta din urm este ireductibil! Într-adev r, dac
ar reductibil, ar avea doi factori de gradul unu, deci ar avea dou r d cini
în F2 = {0, 1}. Îns , nici 0, nici 1 nu este r d cin pentru acest polinom
(substituµia acestora ne convinge imediat), a³adar polinomul este ireductibil.
S not m clasa de echivalenµ a lui x în inelul factor F2 [x]/(x2 + x + 1) cu
α. A³adar α2 + α + 1 = 0 sau α2 = α + 1 sau α · (α + 1) = 1 etc.
3.2. CORPURI FINITE 117
1 = 1
a = a
a^2 = a+1
----------------
a^3 = 1
Corpul GF(23 )
1 = 1
a = a
a^2 = a^2
a^3 = a+1
a^4 = a^2+a
a^5 = a^2+a+1
a^6 = a^2+1
--------------------
a^7 = 1
Am substituit elementul unitate "Z(2)^0" cu mai laconicul 1. Tabela este
de fapt tabela condensat a operaµiilor: prima coloan ne serve³te pentru
înmulµiri (adunarea modulo 7 a exponenµilor), iar cea de a doua pentru adun ri
(adunarea modulo 2 a coecienµilor polinoamelor în α).
Ce s-ar întâmplat dac am ales cel lalt polinom ireductibil, x3 +x2 +1?
S observ m c cele dou polinoame sunt reciproce inversele r d cinilor unuia
sunt r d cini ale celuilalt. A³adar β = 1/α = 1 + α2 = α6 este o r d cin a
acestui polinom.
S not m f = x3 + x + 1 ∈ Z2 [x] ³i g = x3 + x2 + 1 ∈ Z2 [x]. Fie α o r d cin
a polinomului f , deci α3 + α + 1 = 0 respectiv e β o r d cin a polinomului
g , deci β 3 + β 2 + 1 = 0. Fie F = Z2 [x]/(f ) = Z2 [α] ³i G = Z2 [x]/(g) = Z2 [β].
S construim un izomorsm explicit între F ³i G.
tim deja c F = {0, 1, α, α2 , . . . , α6 } ³i s observ m mai întâi c avem
³i G = {0, 1, β, β 2 , . . . , β 6 }, respectiv la fel ca pentru α avem ³i β 7 = 1. O
vericare simpl arat c polinomale f ³i g se descompun în F astfel:
f = (x − α) · (x − α2 ) · (x − α4 )
g = (x − α3 ) · (x − α6 ) · (x − α5 ).
g = (x − β) · (x − β 2 ) · (x − β 4 )
f = (x − β 3 ) · (x − β 6 ) · (x − β 5 ).
α −→ β 3
(ca ³i celelalte dou posibilit µi cu β 5 ³i β 6 ) are ³ansa de a genereaz un
izomorsm φ : F −→ G, prin relaµia
φ(αk ) = β 3k mod 7
, k = 1 . . . 6,
relaµie obligatorie pentru a transforma corect înmulµirea din F . Evident
φ(0) = 0, prin deniµie. S menµion m aici c toate r d cinile lui f din
F sunt generatoarele grupului multiplicativ al acestuia, precum ³i r d cinile
acestuia din G sunt generatoare pentru grupul multiplicativ al acestuia din
urm . Interesant este îns c φ se comport corect ³i faµ de adunare, adic
φ(αk + αl ) = φ(αk ) + φ(αl ), pentru orice k, l! L s m pentru moment demon-
straµia general a acestui fapt, în acest caz particular cititorul poate face ver-
icarea manual sau asistat de calculator. Reproducem aici numai tabele cu
ajutorul c rora aceste veric ri sunt u³oare.
a^0 = 1 b^0 = 1
a^1 = a b^1 = b
a^2 = a^2 b^2 = b^2
a^3 = a+1 b^3 = b^2+1
a^4 = a^2+a b^4 = b^2+b+1
a^5 = a^2+a+1 b^5 = b+1
a^6 = a^2+1 b^6 = b^2+b
---------------- ----------------
a^7 = 1 b^7 = 1
Corpul GF(24 )
Consider m polinoamele cu coecienµi din F2 . Ne trebuie un polinom ire-
ductibil de gradul 4. Polinoame de grad 4 sunt 16, invit m cititorul s le
enumere.
Dac un polinom de gradul 4 este reductibil, atunci are un factor de gradul
unu (deci are o r d cin în F2 ), sau un factor de gradul doi. Prin testarea
direct a divizibilit µii celor 16 polinoame cu polinoamele de grad unu ³i doi,
descoperim polinoamele ireductibile de grad patru: x4 + x + 1, x4 + x3 + 1
respectiv x4 + x3 + x2 + x + 1.
S not m clasa de echivalenµ a lui x în inelul factor F2 [x]/(x4 + x + 1) cu
α. A³adar α4 + α + 1 = 0 sau α4 = α + 1 sau α · (α3 + 1) = 1 etc.
Inelul factor Z2 [α] este un corp de 24 = 16 elemente, se noteaz GF(24 ) ³i
are urm toarele elemente: GF(24 ) = {c0 + c1 α + c2 α2 + c3 α3 | c0 , . . . , c3 ∈ Z2 },
adic toate resturilor de grad cel mult 3 posibili.
120 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
1 = 1
a = a
a^2 = a^2
a^3 = a^3
a^4 = a+1
a^5 = a^2+a
a^6 = a^3+a^2
a^7 = a^3+a+1
a^8 = a^2+1
a^9 = a^3+a
a^10 = a^2+a+1
a^11 = a^3+a^2+a
a^12 = a^3+a^2+a+1
a^13 = a^3+a^2+1
a^14 = a^3+1
--------------------
a^15 = 1
Tabelul de mai sus conµine lista puterilor lui α. Am substituit elementul uni-
tate "Z(2)^0" ³i aici cu 1. Lista arat c ordinul elementului α în grupul
multiplicativ al elementelor nenule, (grup ciclic de ordin 24 − 1 = 15) este 15,
deci este un generator al grupului.
Dac am ales polinomul x4 + x3 + 1 pentru generarea corpului de 16
elemente, situaµia era similar . Dac îns alegem polinomul ireductibil x4 +
x3 + x2 + x + 1, clasa de echivalenµ a lui x notat α nu va mai un generator
al grupului multiplicativ!
1 = 1
a = a
a^2 = a^2
a^3 = a^3
a^4 = a^3+a^2+a+1
--------------------
a^5 = 1
(a+1)^0 = 1
(a+1)^1 = a+1
(a+1)^2 = a^2+1
(a+1)^3 = a^3+a^2+a+1
(a+1)^4 = a^3+a^2+a
(a+1)^5 = a^3+a^2+1
(a+1)^6 = a^3
(a+1)^7 = a^2+a+1
(a+1)^8 = a^3+1
(a+1)^9 = a^2
(a+1)^10 = a^3+a^2
(a+1)^11 = a^3+a+1
(a+1)^12 = a
(a+1)^13 = a^2+a
(a+1)^14 = a^3+a
-----------------------
(a+1)^15 = 1
Corpul GF(26 )
Acest corp este chiar corpul prezentat în secµiunea 3.2.1 de pe pagina 108! Tot
ce avem de f cut este s veric m faptul c polinomul x6 + x + 1 ∈ Z2 [x] este
ireductibil. Gradul polinomului ind mic, testarea tuturor polinoamelor de
grad cel mult trei ne convinge de ireductibilitate. În plus, clase de echivalenµ
a necunoscutei este un generator al grupului multiplicativ al corpului.
Corpul GF(32 )
Corpul de coecienµi este F3 = {−1, 0, 1} (1 + 1 = −1). Avem nevoie de un
polinom ireductibil de gradul 2. Polinoame de grad 2 sunt 18 = (3 + 3 · 2) · 2.
Polinoamele reductibile sunt: ±x2 = (±x) · (±x), ±x · (x ± 1) = ±x2 ± x,
±(x ± 1) · (x ± 1) = ±(x2 ± x + 1), ±(x2 − 1). A³adar polinoamele x2 + x − 1 ³i
x2 + 1 sunt ireductibile (Ele nu se anuleaz pentru nici unul dintre numerele
−1, 0, 1).
Alegem unul dintre aceste polinoame, spre exemplu x2 + 1. S not m clasa
de echivalenµ a lui x în inelul factor F3 [x]/(x2 + 1) cu i. A³adar i2 + 1 = 0
sau i2 = −1.
Corpul de 32 = 9 elemente generat se noteaz GF(32 ) ³i are urm toarele
elemente: {−1, 0, 1, i, i ± 1, −i, −i ± 1}, corespunz toare tuturor resturilor de
grad cel mult 1.
S calcul m ordinul elementului i în grupul multiplicativ al corpului. El
este doar 4, oarecum conform a³tept rilor. S calcul m ³i ordinul lui 1 + i. El
122 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
(1+i)^0 = 1
(1+i)^1 = i+1
i^0 = 1 (1+i)^2 = -i
i^1 = i (1+i)^3 = -i+1
i^2 = -1 (1+i)^4 = -1
i^3 = -i (1+i)^5 = -i-1
---------- (1+i)^6 = i
i^4 = 1 (1+i)^7 = i-1
----------------
(1+i)^8 = 1
1 = 1 · 1,
1 + 1 = 2 · 1,
1 + 1 + 1 = 3 · 1,
...
{z. . . + 1} = n · 1.
1| + 1 +
n termeni
Acest ³ir de elemente trebuie s e nit, deci la un moment dat apar repetiµii
de valori. Dac r · 1 = s · 1, r < s, atunci avem 0 = (s − r) · 1. Este u³or de
v zut de aici c mulµimea I = {n ∈ Z | n · 1 = 0 este un ideal (nenul!) în Z
((−n) · 1 = −(n · 1)). Inelul întregilor este inel principal, deci acest ideal este
format din multiplii unui num r p. Dac p = r · s, unde r ³i s sunt divizori
proprii, atunci 0 = p · 1 = (rs) · 1 = (r · 1) · (s · 1) ³i cum corpul nu are
divizori ai lui zero avem r · 1 = 0 sau s · 1 = 0, adic r sau s este multiplu
al lui p, ceea ce este contradicµie. Rezult deci c p este num r prim. Din
(nm) · 1 = (n · 1) · (m · 1) rezult c φ : Zp −→ F , φ(n) = n · 1 este un
homomorsm de corpuri. Acest homomorsm este injectiv, a³a cum rezult
din chiar raµionamentul de mai sus. De altfel orice homomorsm de corpuri
este injectiv. Într-adev r, dac φ(a) = φ(b), rezult c φ(a − b) = 0. Dac
c = a − b ̸= 0 atunci 1 = φ(1) = φ(c · c−1 = φ(c) · φ(c−1 = 0, ceea ce este o
contradicµie.
A³adar Zp poate privit ca un subcorp al corpului F . Din toate acestea
se desprinde urm toarea deniµie.
Deniµie 3.2.8. Fie F un corp nit. Subcorpul generat de 1, izomorf cu Zp ,
unde p este num r prim, se nume³te subcorpul prim al lui F . Num rul prim p
se nume³te caracteristica corpului F .
aq−1 = 1.
A³adar orice element nenul al corpului F este r d cin a polinomului
xq−1 − 1, cu coecienµi în Fp . Situaµia specic aici este faptul c o ecuaµie
polinomial cu coecienµi într-un corp nu poate avea mai multe r d cini decât
gradul polinomului. Într-adev r, conform teoremei lui Bezout, dac un poli-
nom de grad n are o r d cin a, atunci ele este divizibil cu x − a, ³i celelalte
r d cini ale sale sunt r d cini ale câtului împ rµirii cu x − a, deci r d cini ale
unui polinom de grad n − 1.
Consecinµa acestei situaµii specice este faptul c grupul multiplicativ al
unui corp are o structur mai simpl , ³i anume este un grup ciclic. S ar t m
acest fapt.
Lem 3.2.11. Dac un grup nit comutativ G are n elemente, ³i pentru ecare
divizor al acestuia, m|n, ecuaµia xm − 1 = 0 are exact m soluµii în G, atunci
grupul G este ciclic.
xq − x = 0.
³i evident avem
φ(αi · αj ) = φ(αi ) · φ(αj ),
pentru orice i ³i j . Arm m c aceast corespondenµ p streaz ³i adunarea,
adic
φ(αi + αj ) = φ(αi ) + φ(αj ).
Avem de analizat dou cazuri, ³i anume: αi + αj = 0 sau αi + αj ̸= 0.
Fie mai întâi αi + αj ̸= 0, adic αi + αj = αk sau
αi + αj − αk = 0.
Rezult c
f |(xi + xj − xk ),
deci avem ³i
β i + β j − β k = 0.
Aceasta înseamn c în acest caz avem φ(αi + αj ) = φ(αi ) + φ(αj ).
Fie acum αi + αj = 0. Dac caracteristica p a corpurilor este 2, atunci
aceasta înseamn simplu αi = αj , deci nu avem ce demonstra. Dac îns
caracteristica este impar , atunci mai întâi s observ m c singurul element de
3.2. CORPURI FINITE 127
ordinul doi al corpurilor nite este −1, deoarece (−1)2 = 1 ³i cealalt r d cin
a polinomului x2 − 1 = (x − 1) · (x + 1) este 1, al c rui ordin este 1. Pe de alt
q−1
parte în acest caz ambele elemente −1, α 2 ind de ordin 2, trebuie s avem
q−1
α 2 = −1.
αi + αj = 0 ⇒ αi−j = −1
q−1
⇒ i−j =
2
⇒ β i−j = −1
⇒ β i + β j = 0.
p(p − 1) . . . (p − i + 1)
Cpi = = 0, (3.2)
1 · 2 · ... · i
deoarece toµi ace³ti coecienµi sunt divizibili cu p. Avem a³adar pentru
orice a, b ∈ GF(pn )
(a + b)p = ap + bp .
Deoarece avem ³i (a · b)p = ap · bp , rezult c aplicaµia a −→ ap este un
endomorsm de corpuri.
n
Am v zut mai sus c ap = a pentru orice element a al corpului nit cu
pn elemente. Dac ap = bp prin ridicare la puterea p de n − 1 ori, obµinem
a = b. A³adar endomorsmul de mai sus este injectiv. O aplicaµie injectiv pe
o mulµime nit în ea îns ³i este ³i surjectiv , deci endomorsmul nostru este
automorsm.
atunci avem
p(α) = 0 ⇒ p(Φ(α)) = 0,
deci elementele α, Φ(α), Φ2 (α), . . . sunt r d cini ale lui p. Pe de alt parte, am
v zut mai sus c , pentru un anumit n (pn este num rul elementelor corpului
F ), polinomul f denit
{a1 , a2 , . . . , an }
{b1 , b2 , . . . , bn }
{ai · bj | 1 ≤ i ≤ n, 1 ≤ j ≤ m}
Atunci avem
(un , um ) = um ,
132 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
adic um |un . Invers, dac um |un atunci u(n,m) = (un , um ) = um , deci avem
dou polinoame egale de grade strict mai mici decât pn , num rul elementelor
corpului GF(pn ). Rezult deci ca ³i coecienµii sunt identici, adic (n, m) = m,
deci m|n.
doar c acest subcorp are exact pm elemente. Acum trebuie s folosim lema
anterioar :
um |un ,
³i un se descompune în GF(pn ) în factori liniari, deci la fel se întâmpl ³i cu
um . A³adar um are pm r d cini distincte în GF(pn ), deci subcorpul F are pm
elemente.
Într-adev r, Fp [x] este inel factorial, deci orice polinom se descompune în mod
unic în factori ireductibili. În cazul nostru îns factorii nu se pot repeta!
Aceasta deoarece dac am avea un factor care se repet de cel puµin dou ori,
atunci derivata formal a lui um (x) ar ³i ea divizibil cu acest factor. Îns
u′m (x) = (xp − x)′ = pm · xp −1 − 1 = −1, ceea ce face imposibil acest fapt.
m m
Prin însumarea acestor egalit µi pentru toµi divizorii proprii ai lui n obµinem
∑ ∑
deg f = pm
f |um , f , m|n,m<n
ireductibil, monic m|n, m<n
∑
≤ pm
m<n
pn −
1
=
p−1
< pn .
un (α) = 0.
um (α) = 0.
(un , um ) = u(n,m) .
f |u(n,m) .
134 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
Dac (n, m) < n ((n, m)|n) atunci f ar divide un divizor propriu al lui un ,
ceea ce nu se poate, deci (n, m) = n, adic n|m.
Acum aplic m propoziµia 3.2.21 de la pagina 132 pentru a avea concluzia
propoziµiei.
Z, +, · k[x], +, ·
inelul întregilor inelul polinoamelor cu coef. într-un corp
numerele prime polinoame ireductibile (prime)
teorema împ rµirii întregi teorema împ rµirii întregi
inel Euclidian inel Euclidian
exist cel mai mare div. comun exist cel mai mare div. comun
algoritmul lui Euclid algoritmul lui Euclid
valoarea absolut a num rului gradul polinomului
descomp. unic în factori primi descomp. unic în factori ireductibili
inel principal inel principal
inelul factor mod prim -> corp inelul factor mod ireductibil -> corp
num. prim p -> corp Zp , p elem pol. ired. Zp [x] gard n -> corp pn elem.
Fapte 3.2.23.
• Exist o innitate de numere prime (Euclid).
• Num rul numerelor prime mai mici decât n (notat π(n)) este asimptotic
n
π(n) ∼ .
ln n
(Logaritmul este natural.)
Nu vom da demonstraµiile acestor fapte, cititorul poate consulta practic
orice carte de teoria numerelor. S vedem care este situaµia în cazul poli-
noamelor cu coecienµi într-un corp nit.
Fapte 3.2.24.
• Pentru ecare p num r prim, ³i ecare n exist un polinom ireductibil în
Zp [x] de grad n.
Not m cu Iq (n) num rul polinoamelor ireductibile monice (coecientul
dominant este 1) de grad n din GF(q)[x], unde q este un num r prim
sau o putere a unui num r prim q = pm . De fapt are loc formula:
1 ∑ (n) d
Iq (n) = µ q .
n d
d|n
Propoziµie 3.2.26.
1. Funcµia lui Moebius este multiplicativ în sensul urm tor. Fie m, n nu-
mere naturale relativ prime. Atunci
descompunerea lui n în factori primi. Valoarea sumei este dat de suma ter-
menilor nenuli, adic
∑ ∑
µ(d) = µ(d)
d|n d|p1 p2 ...pk
∑ ∑
= µ(1) + µ(pi ) + µ(pi1 pi2 ) + . . . + µ(p1 p2 . . . pk )
1≤i≤k 1≤i1 <i2 ≤k
= µ(d)f (c)
c|n d| n
∑ ∑
d
= f (c) µ(d)
c|n d| nc
= f (n).
2.
1 ∑ (n) d 1∑ n
Iq (n) = µ q = µ(d)q d ,
n d n
d|n d|n
3.
Iq (n) ≥ 1,
altfel spus, pentru ecare n avem cel puµin un polinom ireductibil, ³i
4.
qn
Iq (n) ∼
,
n
adic asimptotic, num rul polinoamelor ireductibile este 1/n din num rul
total de polinoame de grad n.
Demonstraµie. Punctul 1 este numai o reiterare a relaµiei 3.5 de la pagina 135.
Pentru a demonstra punctul principal 2 nu avem altceva de f cut decât
s aplic m formula de inversare Moebius (varianta aditiv , ³i G = N) pentru
funcµiile
f (n) = n · Iq (n),
³i
F (n) = q n ,
³i s observ m c relaµia 3.6 este valabil datorit punctului 1.
Punctul 3 rezult din punctul 2 astfel:
1 n ∑ n
Iq (n) ≥ q − qd
n
1<d|n
( )
1 ∑
n−1
≥ q −
n
q d
n
d=0
( )
1 qn − 1
= q −
n
n q−1
1 n 1
= (q − (q n − 1)) = > 0.
n n
În sfâr³it punctul 4 este evident pe baza punctului 2.
3.2. CORPURI FINITE 139
• a + b,
• a − b,
• a · b,
• a/b.
• α + β,
• α − β,
• α · β,
• α/β .
S începem prezentarea soluµiilor acestor probleme cu enunµul rezultatelor
teoretice necesare.
Propoziµie 3.2.30. Fie deci corpul nit F = GF(pn ). Fie α un element
primitiv ³i e f ∈ Fp [x] polinomul minimal al lui α (de grad n). Fie a = g(α) =
a0 + a1 α + a2 α2 + . . . + an−1 αn−1 ³i b = h(α) = b0 + b1 α + b2 α2 + . . . + bn−1 αn−1
dou elemente ale lui F .
Cu ajutorul polinoamelor
g(x) = a0 + a1 x + a2 x2 + . . . + an−1 xn−1
³i
h(x) = b0 + b1 x + b2 x2 + . . . + bn−1 xn−1
din Fp [x] construim idealele
Ia+b = (f, y − g − h)
Ia−b = (f, y − g + h)
Iaxb = (f, y − gh)
Ia/b = (f, hy − g)
ale inelului Fp [x, y]. Atunci polinomul minimal al lui a + b, a − b, a · b, a/b este
unicul polinom (monic) în variabila y , care este generator al idealului I∗ ∩Fp [y].
Demonstraµie. Vom demonstra cazul mai "dicil" a/b (celelalte sunt exerciµii
u³oare). Întru-cât h(α) ̸= 0 exist un polinom v ∈ Fp [x] astfel ca vh = 1
mod f . Am efectuat astfel împ rµirea c = a/b = g(α)/h(α) = g(α) · v(α). S
consider m polinomul F = gv . Deci c = F (α). Consider m homomorsmul
Φ, dat de compunerea de aplicaµii
S[observ m c , un polinom G este în ker Φ dac ³i numai dac G(c) = 0, deci
polinomul minimal al lui c este un generator al nucleului lui Φ. Acesta îns
este (f, y − F ) ∩ Fp [y]. A³adar r mâne s ar t m c (f, y − F ) = (f, hy − g).
Pentru aceasta s observ m c , y−F = y−gv = v(hy−g) mod f deci avem
y − F ∈ (f, hy − g), de unde rezult incluziunea (f, y − F ) ⊂ (f, hy − g). Invers,
avem hy −g = h(y −gv) = h(y −F ) mod f . De aici rezult hy −g ∈ (f, y −F )
deci cealalt incluziune (f, y − F ) ⊃ (f, hy − g).
3.2. CORPURI FINITE 141
a = g(α1 , α2 , . . . , αn )
b = h(α1 , α2 , . . . , αn ),
unde g, h ∈ Fp [x1 , x2 , . . . , xn ] sunt polinoame arbitrare.
Construim idealele
Ia+b = (f1 , f2 , . . . , fn , y − g − h)
Ia−b = (f1 , f2 , . . . , fn , y − g + h)
Iaxb = (f1 , f2 , . . . , fn , y − gh)
Ia/b = (f1 , f2 , . . . , fn , hy − g)
e α o r d cin a lui f , ³i e
a = α4 + α3 + α2 + α + 1,
³i
b = α3 + α + 1.
S calcul m polinomul minimal al elementului c = a/b.
ring R=2,(x,y),lp;
ideal I=x6+x+1,y*(x3+x+1)-(x4+x3+x2+x+1);
ideal G=groebner(I);
G;
Rezultatul este
G = (y2 + y + 1, x3 + x2 + xy + x + y2 + 1)
deci polinomul minimal al lui a/b este y 2 + y + 1.
Iat acum un exemplu cu dou extinderi succesive.
Exemplu 3.2.33. Consider m polinoamele ireductibile cu coecienµi în F2
f (x) = x2 + x + 1,
³i
g(y) = y 3 + y + 1.
Fie α o r d cin a lui f , ³i β o r d cin a lui g .
S calcul m polinomul minimal al elementelor α + β , α − β , α · β , α/β în
extensia lui F2 cu α ³i β .
Soluµia este obµinut cu programul de mai jos.
ring R=2,(x,y,y),lp;
ideal I=x2+x+1,y3+y+1,z-(x+y);
groebner(I);
ideal I=x2+x+1,y3+y+1,z-(x-y);
groebner(I);
ideal I=x2+x+1,y3+y+1,z-xy;
groebner(I);
ideal I=x2+x+1,y3+y+1,yz-x);
groebner(I);
Concret polinomul minimal al lui α + β = α − β este
z 6 + z 5 + z 3 + z 2 + 1,
al lui α · β este
z 6 + z 4 + z 2 + z + 1,
respectiv al lui α/β este
z 6 + z 5 + z 4 + z 2 + 1.
Gradele acestor polinoame ind 6 = 2 · 3, aceste polinoame genereaz acela³i
corp GF(26 ).
3.3. CODURI CORECTOARE DE ERORI 143
S observ m mai întâi c probabilitatea producerii mai multor erori este mai
mic . Aceasta se întâmpl totdeauna dac pentru orice t, (0 ≤ t ≤ n − 1 avem
adic
n−t 1−p
· <1
t+1 p
144 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
deci
p
n< .
1−p
Ce putem aa din acest tabel? În primul rînd putem aa, c de³i probabilitatea
de producere a erorii este mic doar 1% totu³i probabilitatea recepµion rii
corecte a unui cuvînt (de 50 de litere) este de doar 60.5%, adic în medie
aproape ecare al doilea cuvânt conµine erori! Este clar c , f r un mecan-
ism de detectare ³i corectare a erorilor informaµia recepµionat este practic
neutilizabil .
Pe de alt parte vestea bun este c este foarte improbabil ca un cuvînt s
conµin multe erori. În exemplul dat în tabel în medie numai unul din 10.000
de cuvinte va conµine mai mult de 5 erori!
Este clar deci c , informaµia util trebuie completat cu o informaµie redun-
dant care s fac posibil descoperirea ³i corectarea erorilor. Într-un cuvânt
de cod de n litere numai k < n litere vor codica informaµia util , restul de
n−k litere vor servi la implementarea mecanismelor de detectare ³i corectare a
erorilor, rezultând un raport r = k/n < 1 subunitar al transmisiei informaµiei
utile.
Se pune deci problema de principiu: putem oare controla detectabilitatea
erorilor, adic putem oare construi coduri care s asigure un procent oricât
de mic dorim al erorilor nedetectabile? R spunsul la aceast întrebare este
armaµia unei teoreme pe care Claude Shannon a publicat-o în 1948, considerat
ast zi punctul de plecare al teoriei codurilor, ³i pe care o formul m aici (f r
demonstraµie).
exist un cod ale c ror cuvinte au lungimea sucient de lung n ³i pentru care
probabilitatea recepµion rii corecte a literelor codului este p dar probabilitatea
recepµion rii eronate a cuvintelor este cel mult ε.
2. marginea Singleton :
M ≤ q n−d+1 .
Demonstraµie. Pentru a demonstra punctul 1 s observ m c num rul total al
vectorilor de m sur k în Fnq este Cnk (q − 1)k . Pe de alt parte ecare bil de
raz t cu centrul într-un vector-cod din C conµine un num r de
1 + Cn1 (q − 1) + Cn2 (q − 1)2 + . . . + Cnt (q − 1)t
vectori. Întru-cât bilele sunt disjuncte ³i num rul lor este M iar numrul total
al vectorilor din spaµiu este q n , rezult inegalitatea din 1.
Pentru a demonstra punctul 2 s observ m c dac din cuvintele unui cod
C de distanµ minim d ³tergem ultimele d − 1 simboluri, cuvintele de lungime
n − d + 1 astfel formate înc vor diferite între ele. Pe de alt parte num rul
total al vectorilor de aceast lungime este q n−d+1 , ceea ce implic 2.
Pe baza propoziµiei anterioare se impun urm toarele deniµii:
Deniµie 3.3.8.
• Dac pentru codul C marginea Hamming este atins , atunci codul se
nume³te cod perfect .
• Dac pentru codul C marginea Singleton este atins , atunci codul se
nume³te cod MDS , (Maximum Distance Separable).
148 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
Deniµie 3.4.1. Codul C se nume³te cod liniar de tip (n, k) dac cuvintele x
ale codului veric ecuaµia
H · xt = 0,
adic sunt soluµiile unui sistem liniar ³i omogen de ecuaµii cu coecienµi într-un
corp nit.
Num rul n se nume³te lungimea codului iar num rul k dimensiunea codului .
Forma standard a matricii H este H = (A, In−k ), unde In−k este matricea
unitate de ordin n − k . Matricea H se nume³te matrice de control al parit µii .
Dac matricea H are forma standard, codul se nume³te cod sistematic . Dac
q = 2, codul se nume³te cod liniar binar .
atunci
( )
x=α· Ik −At .
u · v = u1 v1 + u2 v2 + . . . + un vn ,
Exemple 3.4.7.
x4 = x1
x5 = x2
x6 = x3
x7 = x1
x = x2
8
x9 = x3 .
x = (α, α, α) = α · G.
Cuvintele de cod sunt combinaµii liniare ale liniilor acestei matrici, deci
deci dimensiunea codului este 4, iar lungimea este 7. Dac neuit m ³i la
matricea de control al parit µii al acestui exemplu
0 0 0 1 1 1 1
H = 0 1 1 0 0 1 1 , (3.11)
1 0 1 0 1 0 1
se veric u³or c liniile celor dou matrici sunt ortogonale, adic
G · H t = 0,
1. mld(H) ≤ rank(H) + 1,
2. k = n − rank(H),
3. d = mld(H),
4. d < n − k + 1.
Propoziµie 3.4.12.
∑
d−2
q n−k
> i
Cn−1 (q − 1)i ,
i=0
atunci exist un cod liniar de tipul (n, k) care are distanµa minim cel
puµin d.
nM (q − 1)
d≤ .
(M − 1)q
156 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
∑
d−2
i
Cj−1 (q − 1)i ,
i=0
De aici obµinem
nq k−1 (q − 1) nq k (q − 1) nM (q − 1)
d≤ = = .
q −1
k q(q − 1)
k (M − 1)q
S(y) = H · y t
Oricum, tabelul este necesar doar pentru a selecta din ecare clas de
echivalenµ (coloan ) vectorul de m sur Hamming minim (sau unul dintre
ace³tia în cazul în care exist mai mulµi vectori de m sur minim ) S pre-
supunem c am recepµionat mesajul y = (1, 1, 0, 0, 0, 1). Cum îl decodic m?
Calcul m mai întâi sindromul s = S(y) prin
1
1
1 1 0 1 0 0 0
0
S(y) = H · y =
t 1 0 1 0 1 0
· = 1 .
0
0 1 1 0 0 1 0 0
1
Sindromul neind nul, s-au produs erori. În tabela Slepian coloana corespun-
z toare sindromului calculat este coloana a treia, iar reprezentantul clasei de
m sur Hamming minim este e = (0, 0, 0, 0, 1, 0). Cuvântul cod transmis a
fost (cu mare probabilitate) x = y − e = (1, 1, 0, 0, 1, 1). Aceste este cuvântul
de cod (unic) aat la distanµa Hamming minim faµ de cuvântul recepµionat.
gap> C_3:=HammingCode(3,GF(2));
a linear [7,4,3]1 Hamming (3,2) code over GF(2)
gap> Display(CheckMat(C_3));
. . . 1 1 1 1
. 1 1 . . 1 1
1 . 1 . 1 . 1
gap> Display(GeneratorMat(C_3));
1 1 1 . . . .
1 . . 1 1 . .
. 1 . 1 . 1 .
1 1 . 1 . . 1
în cazul în care nu este nul citit în baza doi, este num rul de ordine
al simbolului recepµionat eronat (vezi secµiunea 3.6 pentru tabela Slepian al
acestui cod)!
Ideea bitului de paritate ad ugat la vectorul biµilor utili poate fructicat
mai general. Dac aplic m aceast idee unui cod liniar de tip (n, k, d) obµinem
un nou cod liniar de lungime n + 1, unde ultimul simbol este suma negativ
a simbolurilor cuvântului de cod. În termenii matricii de vericare a parit µii,
acest mecanism este descris în deniµia care urmeaz .
gap> C_3ext:=ExtendedCode(C_3);
a linear [8,4,4]2 extended code
gap> Display(CheckMat(C_3ext));
. 1 1 1 1 . . .
1 . 1 1 . 1 . .
1 1 . 1 . . 1 .
1 1 1 . . . . 1
gap> Display(GeneratorMat(C_3ext));
1 1 1 . . . . 1
. 1 1 1 1 . . .
. . 1 . 1 1 . 1
. . . 1 1 1 1 .
f : C −→ Fq [X]/(X n − 1)
c = (c0 , c1 , . . . , cn−1 ) ∈ C −→ c0 + c1 X + . . . + cn−1 X n−1 ∈ Fq [X]/(X n − 1).
într-un element
X(c0 + c1 X + . . . + cn−1 X n−1 ) =
= c0 X + c1 X 2 + . . . + cn−1 X n
= cn−1 + c0 X + . . . + cn−2 X n−1 ∈ Fq [X]/(X n − 1)
deci odat cu c ∈ C avem ³i Z(c) ∈ Fnq . Acum dac f (C) este generat de
polinomul g , de grad m, atunci unui cod c ∈ C îi corespunde f (c) = h · g
3.5. CODURI LINIARE SPECIALE 163
h = h0 + h1 X + . . . + hk X k ,
Propoziµie 3.5.12. Fie C un cod liniar ciclic de tip (n, k), ³i e g polinomul
s[u generator. Atunci codul dual C ⊥ este un cod ciclic de tip (n, n − k) având
polinomul generator
1
h⊥ = X deg(h) h( ),
X
X n −1
unde h = g .
pentru care are loc H · ct = 0 pentru orice cuvânt de cod. Rangul lui H este
în mod vizibil n − k deci dimensiunea nucleului este n − (n − k) = k , de unde
rezult c H este matricea de vericare a parit µii pentru codul C generat de
polinomul g .
0 0 0 1 1 0 1
respectiv
0 0 1 0 1 1 1
H = 0 1 0 1 1 1 0 .
1 0 1 1 1 0 0
Cum putem obµine forme canonice pentru matricea generatoare ³i matricea
de vericare a parit µii pentru un cod ciclic C ? R spunsul este dat în propoziµia
care urmeaz .
Propoziµie 3.5.15. Fie C un cod liniar ciclic de lungime n ³i dimensiune k,
generat de polinomul g de grad m = n − k . Fie r(i) resturile împ rµirilor lui
X i la g , i = 0, 1, . . . , (n − 1), respectiv e g (i) = X k (X i − r(i) ). Atunci:
1. Matricea de vericare a parit µii codului C este
( )
H = r(0) r(1) . . . r(n−1) ,
gap> x:=Indeterminate(GF(2),"x");
x
gap> m:=3;
3
gap> g:=x^m+x+1;
x^3+x+Z(2)^0
gap> C:=GeneratorPolCode(f,7,GF(2));
a cyclic [7,4,1..3]1 code defined by generator polynomial over GF(2)
gap> n:=7;
7
gap> k:=n-m;
4
gap> IsCyclicCode(C);
true
gap> GeneratorPol(C);
x^3+x+Z(2)^0
gap> h:=CheckPol(C);
x^4+x^2+x+Z(2)^0
gap> G:=GeneratorMat(C);
[ [ Z(2)^0, Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), Z(2)^0 ] ]
gap> Display(G);
1 1 . 1 . . .
. 1 1 . 1 . .
. . 1 1 . 1 .
. . . 1 1 . 1
gap> H:=CheckMat(C);
[ [ Z(2)^0, 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0 ] ]
gap> Display(H);
1 . 1 1 1 . .
. 1 . 1 1 1 .
. . 1 . 1 1 1
gap> for i in [m..n-1] do
Display(x^k*(x^i-(x^i mod g)) mod (x^n-1));
168 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
od;
% matricea G
x^5+x^4+Z(2)^0 % 1 0 0 0 1 1 0
x^6+x^5+x % 0 1 0 0 0 1 1
x^6+x^5+x^4+x^2 % 0 0 1 0 1 1 1
x^6+x^4+x^3 % 0 0 0 1 1 0 1
gap> for i in [0..(n-1)] do
Display(x^i mod g);
od;
% matricea H^t
Z(2)^0 % 1 0 0
x % 0 1 0
x^2 % 0 0 1
x+Z(2)^0 % 1 1 0
x^2+x % 0 1 1
x^2+x+Z(2)^0 % 1 1 1
x^2+Z(2)^0 % 1 0 1
αi = a0 + a1 α + a2 α2 + . . . + am−1 αm−1 .
gap> Factors(PolynomialRing(GF(2)),x^7-1);
[ x+Z(2)^0,
x^3+x+Z(2)^0,
x^3+x^2+Z(2)^0 ]
g = x3 + x + 1.
gap> x:=Indeterminate(GF(2),"x");
x
gap> g:=x^3+x+1; % polinom generator
x^3+x+Z(2)^0
gap> C:=GeneratorPolCode(g,7,GF(2)); % cod ciclic generat
a cyclic [7,4,3]1 code defined by generator pol. over GF(2)
gap> MinimumDistance(C);
3
gap> Display(GeneratorMat(C));
1 1 . 1 . . .
. 1 1 . 1 . .
. . 1 1 . 1 .
. . . 1 1 . 1
gap> Display(CheckMat(C));
1 . 1 1 1 . .
. 1 . 1 1 1 .
. . 1 . 1 1 1
gap> p:=x^6+x^4+x^3+x+1; % mesaj recepµionat
x^6+x^4+x^3+x+Z(2)^0
gap> r:=p mod g;
x+Z(2)^0
gap> for i in [0..6] do Print(i," ",x^i*r mod g,"\n"); od;
0 x+Z(2)^0
3.5. CODURI LINIARE SPECIALE 171
1 x^2+x
2 x^2+x+Z(2)^0
3 x^2+Z(2)^0
4 Z(2)^0 % pol. m s. minim ,
5 x % sau,
6 x^2 % sau.
gap> e:=x^3*(x^4*r mod g) mod (x^7-1); % polinom eroare...
x^3
gap> e:=x^2*(x^5*r mod g) mod (x^7-1); % sau...
x^3
gap> e:=x*(x^6*r mod g) mod (x^7-1); % sau.
x^3
gap> p-e;
x^6+x^4+x+Z(2)^0; % mesaj corectat
gap> Factors(PolynomialRing(GF(2)),x^15-1);
[ x+Z(2)^0,
x^2+x+Z(2)^0,
x^4+x+Z(2)^0,
x^4+x^3+Z(2)^0,
x^4+x^3+x^2+x+Z(2)^0 ]
g = (x4 + x + 1) · (x4 + x3 + x2 + x + 1) = x8 + x7 + x6 + x4 + 1.
. . . . 1 . . . 1 . 1 1 1 . .
. . . . . 1 . . . 1 . 1 1 1 .
. . . . . . 1 . . . 1 . 1 1 1
gap> Display(CheckMat(C));
1 1 . 1 . . . 1 . . . . . . .
. 1 1 . 1 . . . 1 . . . . . .
. . 1 1 . 1 . . . 1 . . . . .
. . . 1 1 . 1 . . . 1 . . . .
. . . . 1 1 . 1 . . . 1 . . .
. . . . . 1 1 . 1 . . . 1 . .
. . . . . . 1 1 . 1 . . . 1 .
. . . . . . . 1 1 . 1 . . . 1
gap> p:=x^5+x^4+x^3+1; % mesaj recepµionat
x^5+x^4+x^3+Z(2)^0
gap> r:=p mod g;
x^5+x^4+x^3+Z(2)^0
gap> for i in [0..14] do Print(i," ",x^i*r mod g,"\n"); od;
0 x^5+x^4+x^3+Z(2)^0
1 x^6+x^5+x^4+x
2 x^7+x^6+x^5+x^2
3 x^4+x^3+Z(2)^0
4 x^5+x^4+x
5 x^6+x^5+x^2
6 x^7+x^6+x^3
7 x^6+Z(2)^0 % m sur minim (2)
8 x^7+x % sau... (tot 2)
9 x^7+x^6+x^4+x^2+Z(2)^0
10 x^6+x^5+x^4+x^3+x+Z(2)^0
11 x^7+x^6+x^5+x^4+x^2+x
12 x^5+x^4+x^3+x^2+Z(2)^0
13 x^6+x^5+x^4+x^3+x
14 x^7+x^6+x^5+x^4+x^2
gap> e:=x^(15-7)*(x^7*r mod g) mod (x^15-1); % eroarea prob.,
x^14+x^8
gap> e:=x^(15-8)*(x^8*r mod g) mod (x^15-1); % sau...
x^14+x^8
gap> p-e; % mesaj trimis
x^14+x^8+x^5+x^4+x^3+1
3.5. CODURI LINIARE SPECIALE 173
unde numerele se înµeleg în forma binar scrise pe coloan , iar funcµia f ne-
precizat urmeaz s e aleas corespunz tor. S presupunem( c vectorul
) y
recepµionat nu conµine eroare. Atunci sindromul S(y) = 0 f (0) , ³i nu
avem nevoie de funcµia f . S presupunem ( acum )c avem exact o eroare în
poziµia i. Acum sindromul este S(y) = i f (i) . Funcµia f trebuie aleas
astfel c , dac pentru sindromul mesajului recepµionat valoarea acestei funcµii
pentru prima jum tate a sindromului este egal cu cea de a doua jum tate, s
putem ³ti c avem o singur eroare!
S presupunem acum c avem exact dou erori, în poziµiile i ³i j respectiv.
Atunci sindromul va
( )
i+j
S(y) = .
f (i) + f (j)
Avem îns (i + j)3 = i3 + j 3 + ij(i + j), deci i ³i j sunt r d cini ale unei ecuaµii
de gradul doi (s1 ̸= 0):
s31 − s2
X 2 + s1 X + = 0. (3.12)
s1
Acum deoarece totul se întâmpl într-un corp de numere, este valabil "teoria
ecuaµiei de gradul doi" adic : dac discriminantul ecuaµiei este p trat perfect
nenul, avem dou soluµii diferite, deci dou erori! Dac discriminantul este nul,
avem o singur r d cin , deci suntem în cazul unei singure erori. Ca bonus,
am obµinut ³i situaµia a patra neconsiderat înc , a unui num r de erori mai
mare decât doi: dac discriminantul ecuaµiei nu este p trat perfect, avem 3
sau mai multe erori.
s31 − s2
1 + s1 X + X 2 =0 (3.13)
s1
este mai convenabil , deoarece gradul acestuia arat direct num rul erorilor:
pentru dou erori acesta are gradul doi, pentru o eroare are gradul unu, iar
pentru nici o eroare este constant.
∏
= ζ c(i1 +i2 +...+id−1 ) 1≤l<k≤d−1 (ζ
ik − ζ il ) ̸= 0,
deci diferit de 0, ceea ce demonstreaz armaµia propoziµiei.
unde
Sj = y(ζ j ) = x(ζ j ) + e(ζ j ), c ≤ j ≤ c + d − 2.
Fie exprimarea lui e sub forma polinomial
e = ei1 X i1 + ei2 X i2 + . . . + eir X ir , (eik ̸= 0, pentru orice 1 ≤ k ≤ r).
Presupunem c r ≤ (d − 1)/2, deci avem ³i 2r ≤ d. Deoarece x(ζ j ) = 0 pentru
orice c ≤ j ≤ c + d − 2 putem scrie sitemul de ecuaµii
Sj = e(ζ ij ) = ei1 ζ i1 j + ei2 ζ i2 j + . . . + eir ζ ir j = 0,
unde necunoscutele sunt coecienµii eik . S denim
s = (X − ζ i1 ) · (X − ζ i2 ) · . . . · (X − ζ ir )
= s0 + s1 X + . . . + sr−1 X r−1 + X r ,
de unde putem scrie
s0 + s1 ζ ik + . . . + sr−1 ζ ik (r−1) + ζ ik r = 0, pentru orice 1 ≤ k ≤ r.
Dac înmulµim aceste ecuaµii cu eik ζ ik j ³i adunând ecuaµiile obµinem sistemul
de ecuaµii
s0 Sj + s1 Sj+1 + . . . + sr−1 Sr+j−1 + Sr+j = 0, j = c, c + 1, . . . , c + r − 1,
unde necunoscutele sunt coecienµii s0 , s1 , . . . , sr−1 . Matricea acestui sistem
de ecuaµii este
Sc Sc+1 . . . Sc+r−1
Sc+1 Sc+2 . . . Sc+r
S= .. .. . .. .
. . . . .
Sc+r−1 Sc+r . . . Sc+2r−2
S remarc m c S = V DV t , unde
1 1 ... 1
ζ i1 ζ i2 ... ζ ir
V = .. .. ..
1 . . .
ζ (r−1)i1 ζ (r−1)i2 . . . ζ (r−1)ir
³i
ei1 ζ ci1 0 ... 0
0 ei2 ζ ci2 ... 0
D= .. .. .. .. .
. . . .
0 0 . . . eir ζ cir
S observ m acum c det(S) ̸= 0 ⇔ det(V ) ̸= 0 ⇔ i1 , i2 , . . . , ir sunt distincte
dou câte dou .
Astfel avem urm torul algoritm de decodicare a codurilor BCH.
3.5. CODURI LINIARE SPECIALE 177
1. Determin m sindromul
( )t
S(y) = Sc Sc+1 . . . Sc+d−2 .
s = s0 + s1 X + . . . + sr−1 X r−1 + X r .
Presupunem cel mult dou erori. Determin m sindromul erorii, deci sin-
dromul cuvântului recepµionat.
S13 = S3 + XY S1 ,
Vom folosi tabela puterilor elementului primitiv α din corpul nit GF(24 ) de
la pagina 120. Obµinem pentru cuvântul recepµionat:
S1 = y(α) = α3 + α = α9
S2 = y(α2 ) = α 3
S3 = y(α3 ) = α3 + α2 + α = α11
S4 = y(α4 ) = α3
³i avem de rezolvat ecuaµia de gradul doi
z 2 + α9 z + α3 + α2 + 1 = 0.
R d cinile acestei ecuaµii sunt α2 ³i α11 , ³i întru-cât codul este binar, putem
spune imediat c avem dou erori, în poziµia 2 ³i 11 respectiv.
Cuvântul de cod transmis este deci
111000011011000,
iar mesajul util
111000.
prin urmare poate calculat cu algoritmul bazei Gröbner ! Aceasta este în linii
mari ideea metodei de detectare a eroriilor. S vedem dou exemple concrete.
3.5. CODURI LINIARE SPECIALE 179
Exemple 3.5.27.
• Fie C un cod BCH binar care corecteaz t = 2 erori. Consider m inelul
de polinoame P = F2 (s1 , s2 )[z1 , z2 ] ³i idealul
ring R=(2,s1,s2),(z1,z2),lp;
ideal I=z1+z2-s1,z1^3+z2^3-s2
groebner(I);
z1 + z2 + z3 + s1 }
ring R=(2,s1,s2,s3),(z1,z2,3),lp;
ideal I=z1+z2+z3-s1,z1^3+z2^3+z3^3-s2,z1^5+z2^5+z3^5-s3;
groebner(I);
180 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
σ(z) = 1 + α3 · z,
∏
d−1
g= (x − ζ i ),
i=1
Se poate vedea destul de u³or (orice submatrice de ordin k al lui G este de tip
Vandermonde) c distanµa minim a acestui cod este n − k + 1. Codicarea
unui mesaj util u de lungime k în cuvântul de cod c se face prin înmulµirea
u · G = c,
Acest cod este cod MDS, ³i este echivalent cu cel precedent în cazul n = m.
gap> LoadPackage("guava");
gap> H:=Z(2)*[[1,1,1,1,1,1,1]];
[ [ Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0 ] ]
gap> Display(H);
1 1 1 1 1 1 1
gap> C:=CheckMatCode(H,GF(2));
a linear [7,6,1..2]1 code defined by check matrix over GF(2)
gap> G:=GeneratorMat(C);
[ [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ],
3.6. APLICAII EXEMPLE ÎN GAP - GUAVA 183
gap> C:=RepetitionCode(7,GF(2));
a cyclic [7,1,7]3 repetition code over GF(2)
gap> G:=GeneratorMat(C);
[[ Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0 ]]
gap> Display(G);
1 1 1 1 1 1 1
gap> H:=CheckMat(C);
[[ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ]]
gap> Display(H);
1 1 . . . . .
. 1 1 . . . .
. . 1 1 . . .
186 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
. . . 1 1 . .
. . . . 1 1 .
. . . . . 1 1
gap> Cd:=DualCode(C);
a cyclic [7,6,2]1 dual code
gap> Hd:=Display(CheckMat(Cd));
1 1 1 1 1 1 1
gap> Gd:=Display(GeneratorMat(Cd));
1 1 . . . . .
. 1 1 . . . .
. . 1 1 . . .
. . . 1 1 . .
. . . . 1 1 .
. . . . . 1 1
gap> C1:=GeneratorMatCode(G,GF(2));
a linear [7,1,7]3 code defined by generator matrix over GF(2)
gap> C1=C;
true
Mesaje utile posibile sunt numai dou : 0 ³i 1. Cele dou cuvinte de cod
sunt pur ³i simplu repet rile acestor simboluri de înc ³ase ori. Decodi-
carea unui cuvânt recepµionat se face prin cuvântul de cod cu care are
mai multe coincidenµe.
[ 0 0 0 0 0 0 ]
gap> List(C); % lista cuvintelor de cod
[ [ 0 0 0 0 0 0 0 ], [ 1 1 1 1 1 1 1 ] ]
gap> c:=Codeword("1011100"); % mesaj eronat, simulat
[ 1 0 1 1 1 0 0 ]
gap> Decodeword(C,c); % decodificare
[ 1 1 1 1 1 1 1 ]
gap> c:=Codeword("1001100"); % mesaj eronat, simulat
[ 1 0 0 1 1 0 0 ]
gap> Decodeword(C,c); % decodificare
[ 0 0 0 0 0 0 0 ]
3. Codul de repetiµie dubl . Denim mai întâi matricea de vericare a
parit µii, apoi codul liniar determinat de aceast matrice.
gap> H:=Z(2)*[[1, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 1]];
[ [ Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ] ]
gap> Display(H);
1 . . 1 . .
. 1 . . 1 .
. . 1 . . 1
gap> C:=CheckMatCode(H,GF(2));
a linear [6,3,1..2]2..3 code defined by check matrix over GF(2)
Iat ³i parametrii acestui cod:
gap> Size(C); % num rul cuvintelor de cod
8
gap> WordLength(C); % lungimea coului
6
gap> Dimension(C); % dimensiunea codului
3
gap> Redundancy(C); % num rul simbolurilor de control
3
gap> MinimumDistance(C); % distanµa minim
2
gap> CoveringRadius(C); % raza de acoperire
3
gap> IsLinearCode(C); % este cod liniar?
true
188 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
Parametrii codului:
. . . . 1 . . 1 .
. . . . . 1 . . 1
gap> Display(CheckMat(Cd)); % matr. verif. parit.
1 . . 1 . . 1 . .
. 1 . . 1 . . 1 .
. . 1 . . 1 . . 1
gap> MinimumDistance(Cd); % distanµa minim
2
gap> CoveringRadius(Cd); % raza de acoperire
3
gap> H:=Z(2)*[[1,1,0,1,0,0],[1,0,1,0,1,0],[0,1,1,0,0,1]];
[ [ Z(2)^0, Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ],
[ Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ] ]
gap> Display(H);
1 1 . 1 . .
1 . 1 . 1 .
. 1 1 . . 1
192 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
gap> C:=CheckMatCode(H,GF(2));
a linear [6,3,1..3]2 code defined by check matrix over GF(2)
gap> G:=GeneratorMat(C);
<an immutable 3x6 matrix over GF2>
gap> Display(G);
1 . . 1 1 .
. 1 . 1 . 1
. . 1 . 1 1
1 . . 1 1 .
. 1 . 1 . 1
. . 1 . 1 1
gap> Display(GeneratorMat(Cd)); % matricea genratoare
1 1 . 1 . .
1 . 1 . 1 .
. 1 1 . . 1
gap> IsSelfDualCode(C); % este cod autodual?
false
gap> MinimumDistance(Cd); % distanµa minim
3
gap> CoveringRadius(Cd); % raza de acoperire
2
gap> H:=Z(2)*[[0,0,0,1,1,1,1],[0,1,1,0,0,1,1],[1,0,1,0,1,0,1]];
[ [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0 ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ],
[ Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ] ]
gap> Display(H);
. . . 1 1 1 1
. 1 1 . . 1 1
1 . 1 . 1 . 1
gap> C:=CheckMatCode(H,GF(2));
a linear [7,4,1..3]1 code defined by check matrix over GF(2)
194 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
gap> G:=GeneratorMat(C);
<an immutable 4x7 matrix over GF2>
gap> Display(G);
1 1 1 . . . .
1 . . 1 1 . .
. 1 . 1 . 1 .
1 1 . 1 . . 1
gap> SyndromeTable(C);
[ [ [ 0 0 0 0 0 0 0 ], [ 0 0 0 ] ],
[ [ 1 0 0 0 0 0 0 ], [ 0 0 1 ] ],
[ [ 0 1 0 0 0 0 0 ], [ 0 1 0 ] ],
[ [ 0 0 1 0 0 0 0 ], [ 0 1 1 ] ],
[ [ 0 0 0 1 0 0 0 ], [ 1 0 0 ] ],
[ [ 0 0 0 0 1 0 0 ], [ 1 0 1 ] ],
[ [ 0 0 0 0 0 1 0 ], [ 1 1 0 ] ],
[ [ 0 0 0 0 0 0 1 ], [ 1 1 1 ] ] ]
[ 0 1 1 1 1 0 0 ]
[ 0 0 0 1 0 0 0 ]
gap> C:=HammingCode(4,GF(2));
a linear [15,11,3]1 Hamming (4,2) code over GF(2)
gap> Display(GeneratorMat(C));
1 1 1 . . . . . . . . . . . .
1 . . 1 1 . . . . . . . . . .
. 1 . 1 . 1 . . . . . . . . .
1 1 . 1 . . 1 . . . . . . . .
1 . . . . . . 1 1 . . . . . .
. 1 . . . . . 1 . 1 . . . . .
1 1 . . . . . 1 . . 1 . . . .
. . . 1 . . . 1 . . . 1 . . .
1 . . 1 . . . 1 . . . . 1 . .
. 1 . 1 . . . 1 . . . . . 1 .
1 1 . 1 . . . 1 . . . . . . 1
gap> Display(CheckMat(C));
. . . . . . . 1 1 1 1 1 1 1 1
. . . 1 1 1 1 . . . . 1 1 1 1
. 1 1 . . 1 1 . . 1 1 . . 1 1
1 . 1 . 1 . 1 . 1 . 1 . 1 . 1
gap> G:=GeneratorMat(C);;
gap> u:=Codeword("11000110011"); % codificarea mesajului
[ 1 1 0 0 0 1 1 0 0 1 1 ] % util "u"
gap> c:=u*G; % este inmulµirea cu
[ 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 ] % matricea de generare
gap> c1:=Codeword("011110000110010"); % simul m o eroare
[ 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 ] % în poziµia 15
gap> Decodeword(C,c1); % decodificare cu
[ 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 ] % algoritmul lui GUAVA
3.6. APLICAII EXEMPLE ÎN GAP - GUAVA 197
• Un cod Goley de tip (23, 12) este folosit la transmisiile canalelor de tele-
viziune prin satelit. Acesta are distanµa minim 7 deci poate corecta 3
erori. Acesta este un cod perfect.
• Coduri ciclice CRC (Cyclic Redundancy Code) sunt larg folosite în elec-
tronic (pentru semnalarea erorilor, în canale bidirecµionale de comu-
nicaµie). Ele sunt cablate în circuite integrate care apar ca ³i compo-
nente din care sunt construite elemente ale sistemelor de calcul ³i de
comunicaµie. Iat câteva exemple de polinoame generatoare cablate:
x16 +x12 +x5 +1 (SNC 2653, INTEL 82586,INTEL 8274), x16 +x15 +x2 +1
(INTEL 82586,INTEL 8274), x32 + x26 + x23 + x22 + x16 + x12 + x11 +
x10 + x8 + x7 + x5 + x4 + x2 + x+ 1 (INTEL 82586, aplicaµia LAN Eth-
ernet), x8 + x7 + x6 + x4 + 1 ³i x23 + x18 + x16 + x7 + x2 + 1 (EEA),
x12 + x11 + x3 + x2 + x+ 1 (CRC-12, IBM) etc.
for i in [1..6] do
p:=a^i;
Print(p,"\n");
od;
3.7. PROBLEME PROPUSE 199
5-1. β = 5 ∈ GF(17).
5-2. β = α3 + α + 1 ∈ GF(24 ), corp generat de polinomul ireductibil
x4 + x + 1.
5-3. β = α5 + α + 1 ∈ GF(26 ), corp generat de polinomul ireductibil
x6 + x + 1.
5-4. β = α+1 ∈ GF(32 ), corp generat de polinomul ireductibil x2 +x+2.
5-5. β = α2 + α + 1 ∈ GF(32 ), corp generat de polinomul ireductibil
x3 − x + 2.
2 3
Indicaµie: Se calculeaz puterile succesive β, β p , β p , β p , . . . pân când
d
obµinem β p = β . Polinomul minimal al lui β este polinomul de grad d
calculat prin (x − β)(x − β 2 ) · (x − β d−1 ).
200 CAPITOLUL 3. CODURI CORECTOARE DE ERORI
[2] ***, GUAVA - A GAP4 Package for computing with error-correcting codes,
Version 3.10, 2009
http://www.gap-system.org/Manuals/pkg/guava3.10/htm/chap0.html
201
202 BIBLIOGRAFIE
[19] D.W. Hardy, F. Richman, C.L. Walker, Applied Algebra, Codes, Ciphers,
and Discrete Algorithms, second edition,
Chapman and Hall/CRC, Broken Sound Parkway, 2009
205
Glosar
Gröbner perfect, 147
baz , 51 Reed-Muller, 161
RS, 180
automorsm sistematic, 148
Frobenius, 127 tipul lui, 154
coecient
baz
al monomului, 18
Gröbner , 51
corp
Gröbner
algebric închis, 70
minimal , 53
caracteristica unui, 123
redus , 53
de fracµii, 35
pentru ideal, 25
de fracµii raµionale, 36
bil , 146
extensie de, 116
Bose, Chaudhuri, Hocquenghem
subcorp prim al, 123
cod, 175
decodicare
canal binar simetric, 143 de probabilitate maxim , 146
cel mai mare divizor comun, 27 prin distanµ , 146
cod, 145 distanµ
autodual, 150 Hamming, 145
BCH, 175 minim , 145
în sens restrâns, 175 proiectat , 175
primitiv, 175 divizor, 26
binar al lui 0, 24
Hamming, 159 comun cel mai mare, 27
simplex, 160 domeniu de integritate, 25
dimensiunea lui, 148
dual, 149 element
echivalent, 154 asociat în divizibilitate, 26
extins, 160 divizor al lui 0, 24
liniar, 148 inversabil, 25
binar, 148 ireductibil, 45
lungimea lui, 148 prim, 45
MDS, 147 primitiv, 125
206
GLOSAR 207
regulat, 25 Noetherian, 37
unitate, 25 principal, 26
extensie de corp, 116 unitar, 24
termen al, 18
termen principal, 49
produs scalar, 149
rang
matricii, 68
extinse, 68
Reed-Muller
cod, 161
Reed-Solomon
cod, 180
rezult
generic, 55
strict, 55
simbol
de control, 145
sindrom, 157
Singleton
margine, 147
Singular, 20, 21, 56, 57
surf, 21
sistem
multipicativ, 33
Slepian
tabela, 157
spaµiu
an, 19
surf, 21
varietate
an , 20
denit de ideal, 37
vector
ortogonal, 149