Sunteți pe pagina 1din 208

© EDP 2010.

© Horváth Alexandru

ISBN 978-973-3-3370-7

Director general: Dáné Károly András


Redactor-şef: Dan Dumitru
Copertă: Otilia-Elena Borş
Memoriei p rinµilor mei
Prefaµ 

A ceast  carte se dore³te a  o introducere într-un domeniu al


matematicii, care de abia î³i xeaz  contururile: matematica
computaµional . Pentru a risipi de la bun început neînµelegerile,
trebuie precizat faptul, c  sensul termenului "computaµional"
nu se rezum  aici la calcul numeric, ³i în nici un caz nu se refer  la metode de
calcul numeric aproximativ.
Termenul "computaµional" acoper   în percepµia autorului  mai degrab 
str dania de a face efective rezultatele clasice sau noi ale întregii matema-
tici. Pentru a  mai explicit, cititorul este invitat a se gândi spre exem-
plu la problema "calculului" structurii unui grup, sau chiar la problema
valid rii/invalid rii unui enunµ, care exprim  o proprietate de geometrie eu-
clidian  plan , în limbaj clasic numit  teorem .
Aceast  str danie de a face construcµiile ideatice ale matematicii cât mai
operaµionale este favorizat  cu succes de mijloacele de calcul din ce în ce mai
performante de care dispunem. Aceste mijloace ne permit, pe de o parte, s 
implement m algoritmi din ce în ce mai sosticaµi, pe de alt  parte, l rgesc
esenµial aria experiment rilor în cercetarea fundamental  matematic . Au-
torul s-a str duit ca acest impact al posibilit µii calculelor efective  impact
care forµeaz  chiar schimbarea de paradigme, ³i regândirea unor concepte fun-
damentale ale ³tiinµei, cum ar  o "demonstraµie matematic "  s  transpar 
cât mai pregnant în paginile acestei c rµi.
Algebra computaµional  reprezint  un capitol relativ nou al matematicii,
dar sintagma simbolizeaz  o direcµie de dezvoltare recent  deosebit de vigu-
roas  a întregii matematici. Momentul de na³tere  evident convenµional ³i
subiectiv  poate  considerat descoperirea bazei Gröbner ³i a algoritmu-
lui de calcul al acesteia de c tre Bruno Buchberger în 1965. În clasicarea
capitolelor matematicii promovat  de AMS, Societatea de Matematic  Ame-
rican , se poate constata c  dup  versiunile din 1991, 2000, în recenta clasi-
care MSC2010 apare deja de peste 40 de ori sintagma "computaµional", în
leg tur  cu, practic, toate capitolele majore ale matematicii, sugerând o am-

5
6

ploare deosebit  a studiului aspectelor computaµionale. Sintagma "algebr 


computaµional " se extinde generic, într-o oarecare m sur , asupra tuturor
acestora, fapt care justic  apariµia în paginile unui aceluia³i volum a diver-
sit µilor de aplicaµii, a³a cum se întâmpl  ³i în cazul volumului de faµ .
Cartea conµine, în afara unui capitol introductiv, trei capitole majore de-
dicate câte unui domeniu de aplicaµie a algebrei computaµionale.
Primul capitol vizeaz  demonstrarea automat  a teoremelor de geometrie
euclidian  elementar , ³i se orienteaz  oarecum c tre specializarea de "geome-
trie algebric  computaµional ". Fundamentarea se constituie asfel din algebra
comutativ  v zut  dinspre geometria algebric .
Al doilea capitol trateaz  subiectul mereu viu al rezolv rii sistemelor de
ecuaµii polinomiale, studiu care în esenµ , µine tot de geometria algebric , îns 
aici ne ocup m doar de câteva aspecte computaµionale legate de descrierea
mulµimii soluµiilor, cu exemplic ri preponderent pentru cazul num rului nit
de soluµii.
Al treilea capitol vizeaz  teoria codurilor algebrice corectoare de erori, care
se construie³te pe teoria corpurilor nite, prin urmare pe ansamblu sucient
de mult  algebr  computaµional  pentru a  inclus  în aceast  prezentare.
Capitolele sunt relativ independente, îns  exist  cel puµin o punte de leg -
tur  între ele: prezenµa efectiv  ³i utilizarea bazei Gröbner ³i a algoritmului de
calcul al acesteia. O caracteristic  unitar  a textului este prezenµa calculelor
efective prin prezentarea a numeroase exemple concrete. Aceste calcule sunt
efectuate în dou  medii de programare folosite, pe alocuri, chiar ³i concomi-
tent. Este vorba de GAP ³i Singular, pachete de programe deosebite, accesibile
liber pe internet, utilizate în cercetarea matematic  fundamental , rod al efor-
tului unor colective de matematicieni de prim rang ³i al unui numeros cerc
de utilizatori care contribuie ³i la permanenta dezvoltare a acestora. Cartea
nu conµine îns  nicio iniµiere în folosirea acestora, documentaµiile care însoµesc
aceste pachete sunt oricum accesabile de pe internet, cititorii dornici s  testeze
exemplele prezentate pot oricând s  se l mureasc  în privinµa chestiunilor de
sintax  ale comenzilor, dar ³i de facilit µile lor complete la zi. Capitolele sunt
însoµite de problemele propuse, a c ror rezolvare implic  ³i aceste programe.
În încheierea acestei scurte prefeµe, datorez cititorului o m rturisire: cartea
de faµ  nu se na³te neap rat ³i exclusiv din imperativul de a comunica expe-
rienµe acumulate, ci ³i din propria nevoie a autorului de a înv µa. Autorul
împ rt ³e³te ideea c  încercarea de a-i înv µa pe alµii este o cale de aprofun-
dare a cuno³tinµelor proprii. Consider a³adar ecare cititor al acestor pagini
drept un partener, care m  însoµe³te în c l toria  sper fascinant   pe care o
propun prin rândurile de faµ .
Autorul
Cuprins

Introducere 9

1 Teoreme de geometrie pe calculator 17


1.1 Concepte de baz  . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1.1 Polinoame cu mai multe variabile . . . . . . . . . . . . . 17
1.1.2 Variet µi ane . . . . . . . . . . . . . . . . . . . . . . . . 20
1.1.3 Ideale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.1.4 Inel factor. Inel de fracµii. Localizare . . . . . . . . . . . 31
1.1.5 Leg tura dintre variet µile ane ³i ideale . . . . . . . . . 36
1.2 Construcµia bazei Gröbner . . . . . . . . . . . . . . . . . . . . . 41
1.2.1 Împ rµirea polinoamelor cu o variabil  . . . . . . . . . . 41
1.2.2 Împ rµirea polinoamelor cu mai multe variabile . . . . . 45
1.2.3 Ideale monomiale . . . . . . . . . . . . . . . . . . . . . . 47
1.2.4 Baze Gröbner . . . . . . . . . . . . . . . . . . . . . . . . 50
1.2.5 Algoritmul lui Buchberger . . . . . . . . . . . . . . . . . 52
1.3 Demonstraµia teoremelor de geometrie . . . . . . . . . . . . . . 54
1.4 Aplicaµii  Exemple în Singular . . . . . . . . . . . . . . . . . . 56
1.5 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2 Rezolvarea sistemelor de ecuaµii 67


2.1 Sisteme de ecuaµii polinomiale . . . . . . . . . . . . . . . . . . . 67
2.1.1 Sisteme liniare . . . . . . . . . . . . . . . . . . . . . . . 68
2.1.2 Teorema lui Hilbert a zerourilor . . . . . . . . . . . . . . 69
2.1.3 Sisteme neliniare . . . . . . . . . . . . . . . . . . . . . . 72
2.1.4 Sisteme cu un num r nit de soluµii . . . . . . . . . . . 73
2.2 Aplicaµii  Exemple in Singular . . . . . . . . . . . . . . . . . . 75
2.2.1 Sisteme de ecuaµii liniare . . . . . . . . . . . . . . . . . . 75
2.2.2 Sisteme de ecuaµii neliniare . . . . . . . . . . . . . . . . 78
2.3 Rezolvarea numeric  a unui sistem nepolinomial . . . . . . . . . 92
2.3.1 Exemplu cu aproximare Bernstein . . . . . . . . . . . . 93

7
8 CUPRINS

2.3.2 Exemplu cu aproximare spline . . . . . . . . . . . . . . . 95


2.4 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . 98

3 Coduri corectoare de erori 101


3.1 Un exemplu concret . . . . . . . . . . . . . . . . . . . . . . . . 102
3.1.1 O prim  utilizare a programului GAP în coduri . . . . . 105
3.2 Corpuri nite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.2.1 O problem  de concurs în informatic  . . . . . . . . . . 108
3.2.2 Construirea corpurilor nite . . . . . . . . . . . . . . . . 115
3.2.3 Caracteristica unui corp nit . . . . . . . . . . . . . . . 122
3.2.4 Grupul multiplicativ al unui corp nit . . . . . . . . . . 123
3.2.5 Unicitatea corpurilor nite . . . . . . . . . . . . . . . . . 125
3.2.6 Automorsmele unui corp nit . . . . . . . . . . . . . . 127
3.2.7 Existenµa unui corp cu pn elemente . . . . . . . . . . . . 132
3.2.8 Polinoame ireductibile . . . . . . . . . . . . . . . . . . . 134
3.2.9 Polinomul minimal ³i baza Gröbner . . . . . . . . . . . . 139
3.3 Coduri corectoare de erori . . . . . . . . . . . . . . . . . . . . . 143
3.3.1 Concepte de baz  . . . . . . . . . . . . . . . . . . . . . . 145
3.3.2 Margini pentru coduri generale . . . . . . . . . . . . . . 147
3.4 Coduri liniare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.4.1 Margini pentru coduri liniare . . . . . . . . . . . . . . . 155
3.4.2 Codicarea ³i decodicarea codurilor liniare . . . . . . . 156
3.5 Coduri liniare speciale . . . . . . . . . . . . . . . . . . . . . . . 158
3.5.1 Coduri Hamming . . . . . . . . . . . . . . . . . . . . . . 159
3.5.2 Coduri liniare ciclice . . . . . . . . . . . . . . . . . . . . 161
3.5.3 Coduri BCH . . . . . . . . . . . . . . . . . . . . . . . . 173
3.5.4 Baza Gröbner ³i decodicarea codurilor BCH . . . . . . 178
3.5.5 Coduri Reed-Solomon . . . . . . . . . . . . . . . . . . . 180
3.6 Aplicaµii  exemple în GAP - GUAVA . . . . . . . . . . . . . . 182
3.6.1 Utilizarea codurilor . . . . . . . . . . . . . . . . . . . . . 197
3.7 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Bibliograe 201
List  de guri 205
Glosar 206
Introducere

S   începem cu sfâr³itul. Pentru a incita curiozitatea cititoru-


lui presupunem c  am parcurs deja câteva zeci de pagini de
teorie ³i am ajuns la aplicaµii. S  ilustr m deci, ce ³tiu algorit-
mii pe care îi vom cunoa³te în continuare, ³i la ce rezultate ne
vor conduce fundament rile teoretice care urmeaz .
Prima problem  pe care o consider m este problema rezolv rii sistemelor
de ecuaµii algebrice. Iat  ³i câteva exemple.
Consider m mai întâi un sistem liniar.



 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

Sistemul iniµial se transform  astfel într-un sistem "triunghiular", care se


rezolv  prin determinarea valorilor variabilelor exprimate, în ordine invers .

9
10 Introducere

Aceste valori sunt:




 v = 1


 u = −2
z = 3



 y = −1

x = 1.
Frumuseµea este faptul c  acest rezultat a fost obµinut de un algoritm im-
plementat într-un pachet de software specializat pentru algebr  ³i geometrie
algebric  computaµional , Singular. Acesta este disponibil gratuit pe internet.
Programul scris în Singular pentru rezolvarea sistemului de mai sus este
urm torul:

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);

Instrucµiunea cheie este groebner, cea care face triangularizarea sistemului.


Despre algoritmul care se a  în spatele acesteia vom mai vorbi pe larg în
capitolele ce urmeaz . Instrucµiunea solve calculeaz  soluµiile în mulµimea
numerelor complexe, ³i are în spate ³i metode numerice aproximative de calcul.
S  lu m un alt exemplu. Se dau dou  (sau mai multe) polinoame de o
singur  variabil . Se cere cel mai mare divizor comun al lor.
Iat  un exemplu concret. S  se calculeze cel mai mare divizor comun al
polinoamelor:

 p1 = x20 − 1,
p2 = x120 − 1,

p3 = x5 + x4 + x3 + x2 + x + 1.
Nimic deosebit, str vechiul algoritm al lui Euclid se descurc  cu aceast 
problem : am putea calcula cel mai mare divizor comun al lui p1 ³i p2 , apoi
cel mai mare divizor comun al acestuia cu p3 , ³i avem rezultatul.
Noi vom folosi totu³i o alt  metod . Scriem în Singular urm torul program:
Introducere 11

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);

Instrucµiunea cheie este tot groebner, ³i ne furnizeaz  rezultatul:

(p1, p2, p3) = x + 1.


Partea cea mai spectaculoas  îns  de-abia acum începe. Consider m un
sistem de ecuaµii polinomiale neliniar. Ne propunem spre exemplu s  rezolv m
urm torul sistem:

 x3 − 3xy + 3z 2 = 1
x2 z + 3yz 2 − z 2 = 3

−x2 z + 2y 2 + z 3 = 2
Poate p rea chiar incredibil, dar exist  algoritm de rezolvare "exact " pen-
tru astfel de sisteme! Ghilimelele la termenul exact se refer  la faptul, c 
rezolvarea acestui sistem se reduce la rezolvarea unei ecuaµii polinomiale de o
singur  variabil , de grad superior.
Se ³tie c  formule de rezolvare  implicând pe lâng  operaµiile de baz 
³i extragerea de r d cin   i.e. exprimarea explicit  a soluµiei ecuaµiei cu
ajutorul coecienµilor, exist  doar pentru ecuaµii de ordin 4 inclusiv. Este
clar, c  situaµia pentru sisteme de ecuaµii algebrice neliniare nu poate  mai
bun  decât pentru ecuaµii de o singur  necunoscut . Faptul îns , c  rezolvarea
sistemelor cu mai multe necunoscute se reduce la rezolvarea ecuaµiilor, este cu
totul remarcabil.
Iat  ³i programul de rezolvare, scris în Singular, precum ³i rezultatul:

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

Am inclus aici sistemul transformat, mai mult pentru a impresiona ³i toto-


dat  pentru a crea un sentiment de admiraµie vizavi de algoritmul care poate
realiza aceast  performanµ .
S  observ m c  prima ecuaµie conµine doar necunoscuta z ³i este o ecuaµie
algebric  de gradul 21, deci are 21 de r d cini. Remarcabil este acum faptul,
c  a doua ecuaµie conµine un singur y , ³i în rest numai puteri ale lui z (evident
cu exponent cel mult 20)! A³adar pentru ecare valoare a lui z , avem ³i câte
un y . În sfâr³it a treia ecuaµie are un singur x, ³i ceilalµi termeni îl conµin
numai pe y ³i z .
Astfel problema rezolv rii sistemului iniµial s-a transformat în problema
rezolv rii unui sistem "triunghiular" (în sensul celor spuse mai sus) ³i practic
s-a redus la problema rezolv rii unei ecuaµii algebrice de grad superior. În acest
moment pot intra pe scen  clasicele metode de rezolvare numeric  aproximativ 
a ecuaµiilor algebrice. Pachetul Singular conµine asemenea metode. Soluµiile
sistemului arat  cam a³a:

x y z

1 −0.072062 + i · 0.952039 0.94443 − i · 0.648006 1.070608 + i · 0.57375


2 −0.072062 − i · 0.952039 0.94443 + i · 0.648006 1.070608 − i · 0.57375
3 −0.848005 + i · 1.618178 −0.483605 + i · 0.669006 0.349704 − i · 1.574377
4 −0.848005 − i · 1.618178 −0.483605 − i · 0.669006 0.349704 + i · 1.574377
5 0.721738 + i · 0.179155 −1.119805 + i · 0.183733 0.101215 − i · 0.78752
6 0.721738 − i · 0.179155 −1.119805 − i · 0.183733 0.101215 + i · 0.78752
7 −0.0229623 + i · 1.663995 −1.199549 − i · 0.368324 −0.353684 − i · 0.663838
8 −0.0229623 + i · 1.663995 −1.199549 + i · 0.368324 −0.353684 + i · 0.663838
9 −0.447467 + i · 2.451932 −1.6714 − i · 0.721403 −0.657404 − i · 0.492356
10 −0.447467 − i · 2.451932 −1.6714 + i · 0.721403 −0.657404 + i · 0.492356
11 −1.418637 − i · 0.490479 0.733779 − i · 0.72217 −0.781963 − i · 1.030973
12 −1.418637 + i · 0.490479 0.733779 + i · 0.72217 −0.781963 + i · 1.030973
13 1.367663 − i · 1.832259 −1.053835 − i · 1.465191 −0.790929 − i · 0.824253
14 1.367663 + i · 1.832259 −1.053835 + i · 1.465191 −0.790929 + i · 0.824253
15 0.697941 + i · 0.407091 1.229042 − i · 0.0362325 −1.107462 − i · 0.135097
16 0.697941 − i · 0.407091 1.229042 + i · 0.0362325 −1.107462 + i · 0.135097
17 −2.673561 −0.393312 2.784784
18 1 1 1
19 −2.03556 1.414218 0.51581
20 2.097668 1.4258 0.497463
21 −4.344962 1.795171 −4.458227

Remarcaµi soluµia 18, ea este un fel de control, întrucât ea a fost de la


început încorporat  în sistemul de ecuaµii: coecienµii au fost ale³i astfel ca
aceasta s  e una din soluµii.
14 Introducere

Urm torul exemplu pe care-l amintim aici este problema g sirii ecuaµiei


implicite pentru curbe în plan ³i suprafeµe în spaµiu.
Fie spre exemplu curba din plan dat  prin ecuaµiile parametrice
{
x = tt2 −1
2
+1
y = t22t+1
Problema este g sirea ecuaµiei implicite a acestei curbe. Iat  soluµia dat  de
"calculator" prin intermediul programului de mai jos  care apeleaz  evident
instrucµiunea atotcuprinz toare groebner :

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];

Se obµine  conform a³tept rilor  ecuaµia cercului: x2 + y 2 = 1.


Pân  aici nimic spectaculos. Dar dac  curba este dat  de ecuaµiile urm toare?
{ 4 2 −t−1
x = t t+t 4 +t2 +1
t3 −t+2
y = t4 +t2 +1

Acum ecuaµia implicit  este:

90701x16 + 447554x15 y + 2023428x14 y 2 + 4503660x13 y 3 + 10096072x12 y 4 +


10447462x11 y 5 + 17470008x10 y 6 + 16556976x9 y 7 + 20935280x8 y 8 +
17106146x7 y 9 + 14775850x6 y 10 + 8973146x5 y 11 + 5150058x4 y 12 +
2114208x3 y 13 +774389x2 y 14 +172476xy 15 +32361y 16 +34047x15 −288034x14 y+
60178x13 y 2 − 1200159x12 y 3 + 1927237x11 y 4 − 10014527x10 y 5 − 5322620x9 y 6 −
18463460x8 y 7 −13965529x7 y 8 −17943051x6 y 9 −11235129x5 y 10 −7848518x4 y 11
− 3443299x3 y 12 − 1471855x2 y 13 − 320929xy 14 − 76567y 15 + 10354x14 −
123155x13 y + 629218x12 y 2 − 1674363x11 y 3 + 3241421x10 y 4 − 3527140x9 y 5 +
1668464x8 y 6 − 3208231x7 y 7 + 1533200x6 y 8 + 211816x5 y 9 + 1087280x4 y 10 +
743647x3 y 11 + 514924x2 y 12 + 60620xy 13 + 30884y 14 − 106x13 + 2650x11 y 2 −
3922x10 y 3 − 23956x9 y 4 + 57452x8 y 5 + 60526x7 y 6 − 252068x6 y 7 + 35616x5 y 8 +
313336x4 y 9 − 107590x3 y 10 − 101866x2 y 11 + 13390xy 12 + 3693y 13 + 106y 12 = 0.

Suprafaµa dat  parametric




 x =
u2 +v
u4 +v 2 +1
u−v
y =

 z =
u4 +v 2 +1
u−v 2
u4 +v 2 +1
Introducere 15

are ecuaµia implicit :

3x8 − 4x7 y + 4x6 y 2 + 82x5 y 3 + 173x4 y 4 + 182x3 y 5 + 122x2 y 6 + 50xy 7 + 9y 8 −


12x6 yz − 110x5 y 2 z − 272x4 y 3 z − 342x3 y 4 z − 248x2 y 5 z − 98xy 6 z − 16y 7 z +
10x6 z 2 + 40x5 yz 2 + 112x4 y 2 z 2 + 178x3 y 3 z 2 + 160x2 y 4 z 2 + 80xy 5 z 2 + 20y 6 z 2 −
4x4 yz 3 −34x3 y 2 z 3 −56x2 y 3 z 3 −44xy 4 z 3 −16y 5 z 3 +3x4 z 4 +12x3 yz 4 +24x2 y 2 z 4 +
24xy 3 z 4 + 12y 4 z 4 − 2x7 + 6x6 y + 28x5 y 2 + 46x4 y 3 + 22x3 y 4 − 18x2 y 5 − 22xy 6 −
6y 7 − 2x6 z − 28x5 yz − 44x4 y 2 z − 12x3 y 3 z + 36x2 y 4 z + 40xy 5 z + 16y 6 z + 2x5 z 2 +
6x4 yz 2 −22x3 y 2 z 2 −48x2 y 3 z 2 −50xy 4 z 2 −24y 5 z 2 +2x4 z 3 +8x3 yz 3 +22x2 y 2 z 3 +
28xy 3 z 3 + 20y 4 z 3 + 4x4 y 2 + 4x3 y 3 + 3x2 y 4 + 4xy 5 + 3y 6 − 8x3 y 2 z − 12x2 y 3 z −
18xy 4 z − 12y 5 z + 4x2 y 2 z 2 + 8xy 3 z 2 + 11y 4 z 2 − 2xy 4 − 2y 5 + 2y 4 z = 0.

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);

Dac  instrucµiunea-minune groebner întoarce rezultatul 1, atunci teorema


este adev rat , în caz conrar este fals ! Pentru problema noastr  rezultatul
este 1, deci teorema este demonstrat !

Consider m, c  aceste exemple sunt mai mult ca suciente pentru a motiva


conµinutul paginilor ce urmeaz .
Capitolul 1

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.

1.1 Concepte de baz 

Î n aceast  secµiune reamintim câteva concepte de baz  ale algebrei poli-


noamelor cu mai multe variabile, precum ³i a noµiunilor geometrice aferente
acestora, a variet µilor algebrice.

1.1.1 Polinoame cu mai multe variabile


Polinoamele sunt expresii algebrice construite din variabile ³i numere (coe-
cienµi) cu ajutorul operaµiilor de adunare, sc dere ³i înmulµire.
Prin urmare aceste trei operaµii se pot efectua neîngr dit ³i între polinoame.
Pentru a putea încerca împ rµirea (cu rest) a polinoamelor este convenabil ca
între coecienµii acestora s  dispunem ³i de împ rµire neîngr dit , în termeni

17
18 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

tehnici mulµimea coecienµilor este bine s  formeze un corp de numere. Cor-


purile de numere cele mai familiare sunt:

• corpul numerelor raµionale Q

• corpul numerelor reale R

• corpul numerelor complexe C



• corpri de numere algebrice, ex. Q( 2)

• corpuri nite, ex. Z2 , Z3 , Z5 .

Aceste corpuri de numere le vom avea în vedere ³i în realizarea computaµio-


nal  a polinoamelor. Ocazional, vor mai apare ³i corpuri de fracµii raµionale,
dar ele vor avea o prezentare satisf c toare în locul respectiv.
În cele ce urmeaz  cititorul este invitat s  gândeasc  în primul rând corpul
numerelor complexe drept corp al coecienµilor.

Deniµie 1.1.1. Un monom în variabilele x1 , x2 , . . . , xn este un produs de


forma
xα = xα1 1 · xα2 2 · · · · · xαnn ,
unde exponenµii sunt întregi nenegativi. Suma acestora |α| = α1 +α2 +· · ·+αn
se nume³te gradul total al monomului.

D m acum o deniµie formal  pentru noµiunea de polinom.

Deniµie 1.1.2. Un polinom f în variabilele x1 , x2 , . . . , xn cu coecienµi în


corpul k este o combinaµie liniar  nit  de monoame, cu coecienµi din k ,
adic  ∑
f= aα xα , aα ∈ k,
α

unde α = (α1 , α2 , . . . , αn ). Mulµimea acestor polinoame se noteaz  cu k[x] =


k[x1 , x2 , . . . , xn ].

Urm toarea deniµie practic xeaz  o terminologie.



Deniµie 1.1.3. Fie f = α aα xα un polinom în k[x].
• Num rul aα ∈ k se nume³te coecientul lui xα .

• Dac  aα ̸= 0, aα xα se nume³te termen al polinomului.

• Gradul polinomului, notat deg(f ) este maxα {|α|; α ̸= 0}.


1.1. CONCEPTE DE BAZ€ 19

Deniµie 1.1.4. Se nume³te spaµiu an n-dimensional peste corpul k

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,

prin asocierea lui (a1 , a2 , . . . , an ) cu f (a1 , a2 , . . . , an ), valoare a polinomului ce


se obµine prin înlocuirea lui x1 cu a1 , a lui x2 cu a2 , etc.
Se pune imediat întrebarea, în ce m sur  polinomul ³i funcµia polinomial 
asociat  se determin  reciproc? Întrucât diferenµei polinoamelor corespunde
diferenµa funcµiilor, ³i polinomul nul (cu toµi coecienµii nuli) dene³te evident
funcµia identic nul , întrebarea de mai sus se reformuleaz  astfel: exist  oare
polinoame nenule, care s  deneasc  funcµia polinomial  identic nul ?
R spunsul la aceast  întrebare este negativ  cum ne a³tept m de altfel 
doar în cazul corpurilor innite. Dac  un corp k este nit, ³i spre exemplu are
n elemente, c1 , c2 , . . . , cn , atunci polinomul f (x) = (x−c1 )·(x−c2 )·· · ··(x−cn )
are gradul n, deci este nenul în k[x], ³i evident dene³te funcµia polinomial 
nul  pe k .
Are loc deci urm toarea propoziµie.

Propoziµie 1.1.5. Fie k un corp innit ³i f ∈ k[x1 , x2 , . . . , xn ] un polinom.


Atunci f = 0 în k[x1 , x2 , . . . , xn ] dac  ³i numai dac  f : k n → k, este funcµia
identic nul .
Demonstraµie. Dac  polinomul este nul, funcµia polinomial  este evident nul .
Invers, raµionamentul este o inducµie dup  num rul variabilelor n. Pentru n = 1
e polinomul de grad m,

f = cm xm + cm−1 xm−1 + · · · + c1 x + c0 .

Corpul k ind innit, putem considera m + 1 valori, a0 , a1 , . . . , am , disticte


dou  câte dou . Presupunând, c  funcµia polinomial  este nul , egalit µile
f (a0 ) = 0, f (a1 ) = 0, . . . , f (am ) = 0 formeaz  un sistem de ecuaµii omogen,
necunoscutele ind cei m coecienµi ai polinomului. Determinantul acestui
sistem este
m m−1
a0 a0
m m−1 . . . a0 1
a
1 a1 . . . a1 1 ∏
... = (ai − aj ) ̸= 0,
. . . . . . . . . . . .
am am−1 . . . am 1 i<j
m m
20 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

un determinant de tip Vandermonde, diferit de 0. Prin urmare singura soluµie


a sistemului este cel nul, deci toµi coecienµii polinomului, în concluzie ³i poli-
nomul, este 0.
Pasul inductiv este simplu, ³i este l sat pe seama cititorului.

1.1.2 Variet µi ane


Trecând la punctul de vedere geometric, trebuie s  începem cu o deniµie
fundamental .
Deniµie 1.1.6. Fie f1 , f2 , . . . , fm polinoame în variabilele x1 , x2 , . . . , xn cu
coecienµi în corpul k . Se nume³te varietate an  denit  de aceste polinoame,
mulµimea zerourilor comune ale lor, adic  mulµimea notat  V (f1 , f2 , . . . , fm )
dat  prin
{(a1 , a2 , . . . , an ) : fi (a1 , a2 , . . . , an ) = 0, pentru orice i = 1, 2, . . . , m}.
Pentru a accentua caracterul geometric al acestei noµiuni s  consider m
ni³te exemple, pentru care putem face ³i reprezent ri grace. Va trebui deci
s  consider m corpul k = R al scalarilor reali.
Iat  mai întâi câteva exemple de variet µi plane.
Exemplu 1.1.7.

Figura 1.1: V (xy · (x2 + y2 − 25)) ³i V (xy(x3 − 20x − 15 − y2))


Iat  ³i programul Singular cu care am obµinut reprezentarea grac  din gura
al turat  1.1.2. În exemplele care urmeaz  se schimb  doar rândul în care se
dene³te idealul I generat de polinomul corespunz tor exemplului.

LIB "surf.lib";
ring R=0,(x,y),dp;
ideal I=xy*(x2+y2-25);
plot(I);
1.1. CONCEPTE DE BAZ€ 21

În exemplul de mai sus, factorul xy are un dublu rol. El reprezint  pe de


o parte componente ale variet µii algebrice, dar are ³i rolul unui "truc", prin
care am inclus axele de coordonate în varietatea algebric  reprezentat .
Iat  acum câteva exemple de variet µi în spaµiu. Acestea pot  puncte,
curbe, sau suprafeµe, respectiv reuniuni ale acestora. În general zerourile unui
polinom cu trei variabile reale este o suprafaµ . Programul surf apelat din
Singular este capabil s  reprezinte gracul acestor suprafeµe chiar din ecuaµia
lor implicit .

Exemplu 1.1.8.

Figura 1.2: V (x2 − y2 + z2) ³i V (x2y − z2), "Withney umbrella."

Exemplele care urmeaz  prezint  singularit µi izolate ale unor suprafeµe.

Exemplu 1.1.9.

Figura 1.3: V (z3 − zx2 + y2) ³i V (z4 − zx2 + y2)


22 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

În nal câteva suprafeµe de interes special. Mai întâi o suprafaµ  cuartic 


(ecuaµie de grad 4), având num rul maxim de singularit µi.
Apoi o serie de suprafeµe de interes pentru clasicarea singularit µiilor
suprafeµelor complexe (aici varianta lor în spaµiul real). Prima este o sin-
gularitate de tip A3 . Ecuaµia implicit  a unei singularit µi de tipul Ak este
Ak = V (xk+1 − y2 − z2), k >= 1. Aici k = 3.
Exemplu 1.1.10. O quartic 
C = V (x4 + y4 + z4 + 1 − x2 − y2 − z2 − y2z2 − z2x2 − x2y2),
respectiv singularitatea de tipul
Ak = V (xk+1 − y2 − z2), k >= 1.

Figura 1.4: O quartic  ³i A3 = V (x3 − y2 − z2).


Exemplu 1.1.11. Iat  ³i celelalte singularit µi de tip ADE.
Dk = V (x(xk−2 + y2) + z2).
E6 = V (x4 + y3 + z2).
E7 = V (y(x3 + y2) + z2).
E8 = V (x5 + y3 + z2).

Figura 1.5: D5 = V (x(x3 + y2) + z2) ³i E6 = V (x4 + y3 + z2).


1.1. CONCEPTE DE BAZ€ 23

Figura 1.6: E7 = V (y(x3 + y2) + z2) ³i E8 = V (x5 + y3 + z2).

Revenind la aspecte teoretice, s  ne aducem aminte de întreb rile pe care


le punem în leg tur  cu problema rezolv rii unui sistem de ecuaµii liniare:
Are sistemul soluµii sau nu (sunt ecuaµiile sistemului compatibile)? Dac  are,
atunci are o singur  soluµie, sau mai multe (sistemul este determinat, sau
nedeterminat)?
Pentru un sistem de ecuaµii polinomiale neliniar,  deci în leg tur  cu o
varietate algebric ,  întreb rile se formuleaz  similar:
• Sunt ecuaµiile compatibile sau nu?
• Dac  sistemul este compatibil, are un num r nit de soluµii sau nu?
• Dac  num rul soluµiilor nu este nit, care este dimensiunea geometric 
a mulµimii soluµiilor (num rul parametrilor liberi independenµi)?
Pentru a contura r spunsuri la aceste întreb ri, mai avem nevoie de un
concept de baz , cel introdus în secµiunea urm toare.
Mai înainte îns , s  vedem ce operaµii putem face cu variet µile algebrice?
Mai concret, este reuniunea, respectiv intersecµia a dou  variet µi algebrice tot
o varietate algebric ? R spunsul este dat în urm toarea propoziµie.
Propoziµie 1.1.12. Fie V ³i W variet µi ane în kn . Atunci V ∪ W ³i V ∩ W
sunt variet µi ane.
Demonstraµie. Demonstraµia acestor propriet µi este una constructiv . Putem
da explicit sistemul de ecuaµii polinomiale, ale c ror soluµii sunt reuniunea,
respectiv intersecµia celor dou  variet µi. Fie V = V (f1 , f2 , . . . , fk ) ³i W =
V (g1 , g2 , . . . , gl ). Atunci:

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

Este clar c  V, W ⊆ V (fi gj ), deci V ∪ W ⊆ V (fi gj ). Invers, e


(a1 , a2 , . . . , an ) ∈ V (fi gj ) pentru orice i, j . Dac  acest punct este în V , atunci
V (fi gj ) ⊆ V ∪ W. Dac  îns  acest punct nu se a  în V , atunci pentru m -
car un indice i0 avem fi0 (a1 , a2 , . . . , an ) ̸= 0. Îns  fi0 gj (a1 , a2 , . . . , an ) = 0
pentru orice j , deci gj (a1 , a2 , . . . , an ) = 0 pentru orice j , ceea ce arat  c 
(a1 , a2 , . . . , an ) ∈ W. Prin urmare V (fi gj ; i = 1, . . . , k, j = 1, . . . , l) ⊆ V ∪ W.
Cealalt  egalitate este imediat .

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.

Deniµie 1.1.13. O mulµime A înzestrat  cu o operaµie de adunare notat  ′ +′ ,


³i o operaµie de înmulµire compatibil  cu aceasta (distributiv  faµ  de aceasta)
notat  ′ ·′ , pentru care (A, +) este grup comutativ, ³i (A, ·) este semigrup, se
nume³te inel .
Inelul este comutativ dac  înmulµirea este comutativ , ³i este unitar , dac 
înmulµirea are element unitate.

Î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:

Propoziµie 1.1.14. Fie k un corp comutativ. Atunci k[x1 , x2 , . . . , xn ] este un


inel comutativ.

Demonstraµie. Vericarea propriet µilor care denesc structura de inel este


imediat  ³i este l sat  pe seama cititorului.

S  remarc m faptul c  singura diferenµ  în deniµia unui inel faµ  de


deniµia unui corp este c  aici nu mai pretindem existenµa unui invers pentru
ecare element nenul. Altfel spus, un corp este un inel în care ecare element
nenul este inversabil. Rezult  de aici c  problemele legate de divizibilate î³i
g sesc ca mediu general ³i abstract de studiu, structura de inel.
O prim  clasicare a elementelor unui inel este dat  prin intermediul con-
ceptelor urm toare:

Deniµie 1.1.15. Fie A un inel comutativ ³i unitar. Un element f ∈ A, f ̸= 0


se nume³te divizor al lui 0 dac  exist  g ∈ A, g ̸= 0 astfel încât f · g = 0.
1.1. CONCEPTE DE BAZ€ 25

Un element f ∈ A, f ̸= 0 se nume³te inversabil sau unitate dac  exist 


g ∈ A, g ̸= 0 astfel încât f · g = 1.
Un element nenul, care nu este divizor al lui zero se nume³te regulat . Un
inel în care nu exist  divizori ai lui zero se nume³te domeniu de integritate .
Evident, elementele inversabile sunt ³i regulate. De asemenea este u³or
de v zut c  într-un inel nit orice element regulat f , este inversabil. Pentru
aceasta este sucient s  consider m aplicaµia φ : A → A dat  de φ(g) = f g .
Din f g = f h rezult  f (g − h) = 0 deci g − h = 0, sau g = h. A³adar φ
este injectiv , deci ³i surjectiv , de unde rezult  c  exist  b ∈ A astfel ca
f (b) = ab = 1, ceea ce înseamn  c  a este inversabi.
Denim acum conceptul de ideal.
Deniµie 1.1.16. O submulµime nevid  I ⊆ A al inelului A se nume³te ideal
dac  are propriet µile
(1) Dac  f, g ∈ I atunci f − g ∈ I.
(2) Dac  f ∈ I µi h ∈ A, atunci hf ∈ I.
O prim  observaµie imediat  este faptul c  în deniµie în locul condiµiei
f − g ∈ I , se poate lua echivalent condiµia f + g ∈ I. De asemenea, se vede c 
elementul 0 face parte din orice ideal.
O dat  cu denirea unui concept se pune automat problema caracteriz rii
obiectelor pe care aceast concept le descrie. Altfel spus, este natural s  d m
exemple caracteristice de ideale. S  menµion m totu³i, c  aceast  abordare,
de³i tipic  pentru orice prezentare, ascunde ideile care au dus la cristalizarea
treptat  a conceptului respectiv, ³i nici m car nu se refer  în mod necesar la
contextul original care a generat aceast  cristalizare. În cazul de faµ  pentru
conceptul de ideal rolul determinant a avut efortul de a demonstra marea
teorem  a lui Fermat, îns  detaliile acestei istorii ne-ar duce prea departe de
ideile pe care le urm rim aici.
Revenind la exemple carecteristice de ideale, d m urm toarea propoziµie.
Propoziµie 1.1.17. Fie A un inel ³i f1 , f2 , . . . , fm ∈ A. Atunci mulµimea
< f1 , f2 , . . . , fm >= {g1 f1 + g2 f2 + · · · + gm fm | gi ∈ A, i = 1, . . . , m}
este ideal în inelul A.
Acest ideal se nume³te idealul generat de elementele f1 , f2 , . . . , fm . De aseme-
nea dac  I =< f1 , f2 , . . . , fm >, atunci spunem c  elementele f1 , f2 , . . . , fm
formeaz  o baz  pentru I . În acest caz idealul I se nume³te nit generat .
Evident un ideal nit generat are mai multe baze. Dintre bazele unui ideal
a³a numitele baze Gröbner au propriet µi speciale, despre care va  vorba în
secµiunile care urmeaz .
26 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

Deniµie 1.1.18. Un ideal de forma I =< f > se nume³te ideal principal .


Un inel în care orice ideal este principal se nume³te inel principal .

Exemple de inele principale sunt date în urm toarea propoziµie:

Propoziµie 1.1.19. Inelul Z al întregilor ³i inelul polinoamelor de o nedeter-


minat  cu coecienµi într-un corp sunt inele principale.

Demonstraµie. Fie I un ideal în Z. Dac  I = {0}, atunci I = 0 · Z =< 0 >


³i suntem gata. Dac  I ̸= {0}, atunci I conµine atât numere pozitive cât ³i
negative, deoarece odat  cu un num r din I ³i opusul acestuia (multiplul cu
−1) este în I . Fie n cel mai mic num r întreg strict pozitiv din I . Atunci este
clar c  n · Z ⊆ I . Invers, e x ∈ I arbitrar. Pe baza teoremei fundamentale a
aritmeticii, exist  un cât q ³i un rest r unic astfel ca

x = n · q + r, 0 ≤ r < n.

Din egalitatea r = x − n · q se cite³te c  r ∈ I , ceea ce nu e posibil  conform


alegerii lui n  decât dac  r = 0. Astfel x ∈ n · Z, deci I ⊆ n · Z. Rezult  deci
c  I = n · Z.
Pentru inelul polinoamelor cu coecienµi într-un corp demonstraµia este
identic  în esenµ . Diferenµa const  în faptul c  se compar  gradele poli-
noamelor, ³i se folose³te teorema împ rµirii întregi a polinoamelor, care asigur 
 ca ³i în cazul numerelor întregi  existenµa ³i unicitatea câtului ³i restului
împ rµirii.

Aceast  propoziµie este important  mai ales prin consecinµa ei dat  în


propoziµia 1.1.23 de la pagina 27. Pentru preg tirea enunµului acesteia tre-
buie s  denim conceptul abstract de cel mai mare divizor comun.

Deniµie 1.1.20. Fie A un domeniu de integritate, ³i a, b ∈ A. Spunem c 


elementul a îl divide pe b, sau c  a este un divizor al lui b, (notat a|b), dac 
exist  un element c ∈ A astfel ca a · c = b.
Spunem c  elementele a ³i b sunt asociate în divizibilitate dac  se divid
reciproc, adic  a|b ³i b|a.

Relaµia de divizibilitate este evident reexiv  ³i tranzitiv . De asemenea, se


vede imediat, c  elementele a ³i b sunt asociate dac  ³i numai dac  a = bu,
unde u este un element inversabil. Într-adev r, dac  u este inversabil atunci
exist  v astfel ca uv = 1, deci av = b, prin urmare a ³i b se divid reciproc.
Invers, dac  a ³i b se divid reciproc, adic  a = bu ³i av = b, atunci a = avu,
deci a − avu = 0, adic  a(1 − vu) = 0, de unde rezult  c  1 − vu = 0, sau
uv = 1, deci u este inversabil.
1.1. CONCEPTE DE BAZ€ 27

Deniµie 1.1.21. Fie A un domeniu de integritate, ³i a, b ∈ A. Un element


d ∈ A se nume³te cel mai mare divizor comun al elementelor a ³i b, ³i se noteaz 
d = (a, b), dac 

(i) d|a ³i d|b, adic  d este divizor comun, ³i

(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.

Observaµie 1.1.22. Într-un domeniu de integritate


< d >=< d′ >,

dac  ³i numai dac  elementele d ³i d′ sunt asociate.

Demonstraµie. Într-adev r, din < d >=< d′ >, sau d · A = d′ · A rezult  c 


d = d · 1 ∈ d′ · A ³i d′ = d′ · 1 ∈ d · A, adic  d = d′ u ³i d′ = dv , deci elementele
d ³i d′ se divid reciproc. Invers, dac  d|d′ , sau du = d′ atunci d′ · A ⊆ d · A,
deci < d′ >⊆< d >. Similar, dac  d′ |d atunci < d >⊆< d′ >. A³adar dac  d
³i d′ sunt asociate, atunci < d >=< d′ >.

Iat  ³i caracterizarea celui mai mare divizor comun în domenii de integritate


(aici Z).

Propoziµie 1.1.23. Fie a, b, d ∈ Z trei numere întregi. Num rul d este cel


mai mare divizor comun al numerelor a ³i b, d = (a, b), dac  ³i numai dac 

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,

de unde d′ · Z ⊆ d · Z. Rezult  deci c  d|d′ . Din relaµia de deniµie a lui d′ se


vede îns  c  d′ este un divizor comun al lui a ³i b, deci avem ³i d′ |d. A³adar d
³i d′ sunt asociate prin urmare < d >=< d′ >. Astfel avem

a · Z + b · Z = d · Z.

Invers, e d astfel ca a · Z + b · Z = d · Z. Din a · Z ⊆ a · Z + b · Z = d · Z


rezult  c  d|a, ³i similar d|b, deci d este un divizor comun.
Din exprimarea lui d sub forma d = ax + by , posibil  deoarece d = d · 1 ∈
d · Z = a · Z + b · Z, deducem, c  orice divizor comun al lui a ³i b este ³i un
divizor al lui d, deci d este un cel mai mare divizor.
Restul armaµiilor din enunµ sunt simple consecinµe ale celor de mai sus.

S  vedem acum ce operaµii putem efectua cu ideale. Intersecµia a dou 


ideale este ideal, întrucât propriet µi care se denesc numai cu ajutorul cuan-
ticatorului universal ("pentru orice"), se mo³tenesc la intersecµia mulµimilor.
Este u³or de v zut îns , c  reuniunea idealelor nu este în general ideal.

Deniµie 1.1.24. Fie I ³i J ideale în A. Denim suma , produsul , intersecµia


³i câtul celor dou  ideale, respectiv radicalul unui ideal, precum urmeaz :

• I + J = {f + g| f ∈ I, g ∈ J} este suma idealelor,

• IJ =< f g| f ∈ I, g ∈ J >= {f1 g1 + f2 g2 + · · · + fm gm | fi ∈ I, gi ∈ J, i =


1, . . . , m}, adic  idealul generat de produsele elementelor din cele dou 
ideale, este produsul idealelor,

• I ∩ J = {f | f ∈ I, ³i f ∈ J} este intersecµia idealelor,

• I : J = {f | f ∈ A astfel ca pentru orice g ∈ J, f g ∈ I} este câtul ide-


alelor,

• I = {f | f ∈ A, ³i exist  n > 0, astfel încât f n ∈ I} este radicalul
idealului I.

Se arat  u³or, c  suma, produsul, intersecµia ³i câtul a dou  ideale, conform


deniµiei de mai sus, este tot un ideal. Deasemenea ³i radicalul unui ideal este
tot un ideal.
Propriet µi simple ale acestora sunt date în observaµiile care urmeaz .
1.1. CONCEPTE DE BAZ€ 29

Observaµii 1.1.25. Fie I ³i J dou  ideale.

• I + J este cel mai mic ideal care conµine idealul I ³i J.

• I ∩ J este cel mai mare ideal care este conµinut în idealul I ³i J.

• I ∪ J este ideal dac  ³i numai dac  I ⊆ J sau J ⊆ I.

• Dac  I =< f1 , f2 , . . . , fk > ³i J =< g1 , g2 , . . . , gl >, atunci I + J =


< f1 , f2 , . . . , fk , g1 , g2 , . . . , gl > .

• Dac  I =< f1 , f2 , . . . , fk > ³i J =< g1 , g2 , . . . , gl >, atunci IJ =


< fi gj | i = 1, . . . , k, j = 1, . . . , l > .

Demonstraµiile acestor propriet µi sunt simple, ³i sunt l sate pe seama citi-


torului.
Alte propriet µi sunt date în propoziµiile care urmeaz .

Propoziµie 1.1.26. Fie I, J, K ideale în A. Atunci


(a) I : I = A.

(b) I : A = I.

(c) IJ ⊆ K dac  ³i numai dac  I ⊆ K : J.

(d) J ⊆ I dac  ³i numai dac  I : J = A.

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.

Propoziµie 1.1.27. Fie I, J, K, I1 , I2 , J1 , J2 ideale în A. Atunci


(a) (I1 ∩ I2 ) : J = (I1 : J) ∩ (I2 : J).

(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).

Propoziµie 1.1.28. Fie I, J ideale în A. Atunci



(a) I ⊆ I.
√ √
(b) Dac  I ⊆ J atunci I ⊆ J.
√ √ √ √
(c) IJ = I ∩ J = I ∩ J.
√ √√ √
(d) I + J = I + J.
√√ √
(e) I = I.

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

Punctul (c): S  observ m


√ √ c  IJ ⊆ I, J deci IJ ⊆ I ∩ J de unde pe baza
punctului precedent IJ = √ I ∩ J. √ √ √ √ √
Similar, I ∩ J ⊆ I, J , deci I ∩ J ⊆ I,√ J , deci√ I ∩ J ⊆ ∩
√ √ J.
I
Pentru a încheia demonstraµia, e f ∈ I ∩ J, deci f ∈ I, J. Prin
√ f√ ∈ I ³i√ f ∈ J , de unde f
urmare exist  k ³i l, astfel încât k l k+l = f k f l ∈ IJ

deci f ∈ IJ. De aici avem√ I ∩ √J ⊆ IJ. √ √
Toate acestea arat  √ c  IJ = √ I ∩ J = I ∩ J.
Punctul (d): Avem I ⊆ I ³i J ⊆ J , pe baza punctului (a). Este√clar atunci
√ √ √ √ √
c  I +J ⊆ I + J. Pe baza punctului (b) avem de√ aici I + J = I + J.
√ √
√√Punctul (d): Pe √ baza punctului (a) e clar c  I ⊇ I. Invers, e f ∈
I. Atunci f k ∈ I deci (f k )l ∈ I , pentru k ³i l√ întregi pozitivi, potrivit
√ √ √
ale³i.
√√ A³adar f ∈ I, deci f ∈ I ceea ce înseamn 
kl I ⊆ I. În concluzie

I = I.

1.1.4 Inel factor. Inel de fracµii. Localizare


Un procedeu de construcµie de inele din inele deja construite este considerarea
inelelor factor. Pe analogia situaµiei de la grupuri  unde un subgrup normal
dene³te o relaµie de congruenµ  compatibil  cu operaµia din grup  un ideal
va deni o relaµie de congruenµ  compatibil  cu cele dou  operaµii din inel.
Clasele de echivalenµ  faµ  de aceast  relaµie de echivalenµ  vor deni inelul
factor.
Exemplul caracteristic care trebuie avut în vedere este aritmetica claselor
de resturi ale numerelor întregi.

Propoziµie 1.1.29. Fie I ⊆ A un ideal. Relaµia notat  f ∼ g , ³i denit  prin


f ∼ g dac  f − g ∈ I,

este o relaµie de echivalenµ  pe A compatibil  cu operaµiile de adunare ³i în-


mulµire din A.
Demonstraµie. Relaµia ∼ este o relaµie de echivalenµ  dac  este

• reexiv , adic  f ∼ f pentru orice f ∈ A,


• simetric , adic  dac  f ∼ g atunci g ∼ f , pentru orice f, g ∈ A ³i
• tranzitiv , dac  f ∼ g ³i g ∼ h atunci f ∼ h, pentru orice f, g, h ∈ A.

Compatibilitatea cu operaµiile de adunare ³i înmulµire înseamn 

• dac  f ∼ h ³i g ∼ k , atunci f + g ∼ h + k pentru orice f, g, h, k ∈ A ³i


• dac  f ∼ h ³i g ∼ k , atunci f g ∼ hk pentru orice f, g, h, k ∈ A.
32 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

Toate aceste propriet µi sunt imediate folosind deniµia noµiunii de ideal.

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.

În concluzie propoziµia anterioar  se reformuleaz  astfel: mulµimea claselor de


echivalenµ  are structura unui inel.

Deniµie 1.1.30. Mulµimea claselor de echivalenµ  date de relaµia de


echivalenµ  denit  de idealul I se noteaz  cu A/I , ³i se nume³te inelul factor
denit de idealul I.

S  observ m totu³i c  aceast  deniµie, ca ³i propoziµia precedent  nu se


refer  în mod specic la inele de polinoame, ele sunt valabile în contextul
general al teoriei inelelor.

Deniµie 1.1.31. Fie I un ideal în A. Idealul I se nume³te maximal , dac 


este element maximal în muµimea ordonat  de incluziune a idealelor proprii ale
inelului A, adic  dac  avem pentru orice ideal J al lui A, I ⊆ J ⊆ A implic 
J = I sau J = A.

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:

Propoziµie 1.1.32. Un ideal M al lui A este maximal dac  ³i numai dac 


inelul factor A/M este corp.

Demonstraµie. Fie M ideal maximal în A. Fie fˆ = f + M un element nenul al


inelului factor A/M , adic  f ̸∈ M. Idealul I generat de f ³i M , este deci strict
mai mare decât M . Acesta ind maximal, rezult  c  I = A, deci rezult  c 
1 ∈ A are o reprezentare de forma 1 = gf + h unde h ∈ M. Trecând la clase
de echivalenµe, avem 1̂ = ĝ fˆ, deci fˆ = f + M este inversabil, deci inelul factor
este corp.
Invers, presupunem c  A/M este corp. Fie I un ideal astfel ca M ⊆ I ⊆ A.
Presupunem c  exist  un element f ∈ I care f ̸∈ M , adic  M ̸= I . Avem
atunci fˆ ̸= 0̂ deci exist  ĝ astfel ca ĝ fˆ = 1̂ sau 1 − gf ∈ M ⊆ I . Din egalitatea
1 = (1 − gf ) + gf rezult  c  1 ∈ I adic  I = A. Rezult  deci c  M este ideal
maximal.
1.1. CONCEPTE DE BAZ€ 33

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

(a1 , s1 ) ∼ (a2 , s2 ) dac  a1 s2 = a2 s1 .


Propoziµie 1.1.36. Relaµia ∼ este o relaµie de echivalenµ , compatibil  cu
operaµia de înmulµire din inelul A.
Demonstraµie. Relaµia ∼ este o relaµie de echivalenµ  pentru c 
• reexiv , adic  (a, s) ∼ (a, s) pentru orice (a, s) ∈ A × S ,
34 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

• simetric , adic  dac  (a1 , s1 ) ∼ (a2 , s2 ) atunci (a2 , s2 ) ∼ (a1 , s1 ), pentru


orice (a1 , s1 ), (a2 , s2 ) ∈ A × S ³i

• tranzitiv  adic  dac  (a1 , s1 ) ∼ (a2 , s2 ) ³i (a2 , s2 ) ∼ (a3 , s3 ) atunci


(a1 , s1 ) ∼ (a3 , s3 ), pentru orice (a1 , s1 ), (a2 , s2 ), (a3 , s3 ) ∈ A × S .

Compatibilitatea cu operaµia de înmulµire înseamn 

• dac  (a1 , s1 ) ∼ (a′1 , s′1 ) ³i (a2 , s2 ) ∼ (a′2 , s′2 ), atunci (a1 a2 , s1 s2 ) ∼


(a′1 a′2 , s′1 s′2 ) pentru orice (a1 , s1 ), (a′1 , s′1 ), (a2 , s2 ), (a′2 , s′2 ) ∈ A × S .

Toate aceste propriet µi sunt imediate folosind deniµia relaµiei ∼.

S  observ m, c  (s, s) ∼ (p, p) pentru orice s, p ∈ S , ³i de asemenea (a, s) ∼


(ap, sp), pentru orice (a, s) ∈ A × S , ³i p ∈ S .
Vom nota clasele de resturi în raport cu relaµia de echivalenµ  ∼ prin

a/s = (a, s) = {(a′ , s′ ) ∈ A × S | (a′ , s′ ) ∼ (a, s)}.

S  observ m, c  aceast  construcµie imit  denirea unei împ rµiri, prin


introducerea unui raport formal între elemente, numitorul acestui raport -
ind considerat dintr-un sistem multiplicativ, pentru a permite apoi denirea
produsului a dou  asemenea rapoarte.
La adunarea fracµiilor îns  numitorii se înmulµesc între ei, a³adar se poate
b nui c  adunarea din inel se extinde ³i pentru aceste "fracµii". O formulare
precis  a acestor idei este dat  în urm toarea propoziµie:

Propoziµie 1.1.37. Fie A un inel comutativ ³i unitar, ³i S un sistem multi-


plicativ format din elemente regulate (nondivizori ai lui 0). Atunci mulµimea
claselor de resturi notat 

AS = {(a, s) | (a, s) ∈ A × S}

formeaz  un monoid în raport cu înmulµirea denit  pe componente ale


reprezentanµilor claselor de echivalenµ .
Mai mult, aplicaµia

iS : A → AS , denit  prin iS (a) = (as, s), s ∈ S

este injectiv , prin ea adunarea din A se extinde în mod unic, astfel ca AS


s  devin  un inel, în care A este scufundat prin homomorsmul injectiv iS .
Elementul s ∈ S în deniµia lui iS este arbitrar xat, el poate  ales ³i 1, în
cazul în care 1 ∈ S .
1.1. CONCEPTE DE BAZ€ 35

Demonstraµie. În primul rând s  observ m, c  înmulµirea denit  pe com-


ponente ale reprezentanµilor claselor este o înmulµire bine denit  a claselor:
rezultatul înmulµirii nu depinde de reprezentantul ales. Acest fapt este o con-
secinµ  a ultimei propriet µi a relaµiei de echivalenµ  ∼ prezentat  mai sus.
Dac  iS (a) = iS (b), deci (as, s) ∼ (bp, p) atunci asp = bps deci a = b, de
unde rezult  injectivitatea aplicaµiei iS .
Pentru a extinde adunarea din A prin intermediul injecµiei iS , pe care dorim
s -l facem homomorsm de inele, calcul m în felul urm tor:

(a1 , s1 ) ∼ (a1 s2 , s1 s2 ) = (a1 s2 s, s)(s, s1 s2 s),


(a2 , s2 ) ∼ (a2 s1 , s1 s2 ) = (a2 s1 s, s)(s, s1 s2 s).
Pentru a p stra distributivitatea înmulµirii faµ  de adunare în AS va trebui
s  denim suma reprezentanµilor celor dou  clase de echivalenµ  astfel

(a1 , s1 ) + (a2 , s2 ) ∼ (a1 s2 s, s)(s, s1 s2 s) + (a2 s1 s, s)(s, s1 s2 s)


= ((a1 s2 s, s) + (a2 s1 s, s))(s, s1 s2 s)
= (iS (a1 s2 ) + iS (a2 s1 ))(s, s1 s2 s)
= iS (a1 s2 + a2 s1 )(s, s1 s2 s)
= ((a1 s2 + a2 s1 )s, s)(s, s1 s2 s)
= (a1 s2 + a2 s1 , s1 s2 ).

De aici rezult  ³i deniµia compatibil  cu relaµia ∼ a adun rii claselor, pe de


alt  parte rezult  ³i unicitatea acestei sume:

(a1 , s1 ) + (a2 , s2 ) = (a1 s2 + a2 s1 , s1 s2 ).


Se arat  acum prin simpla vericare a propriet µilor c  adunarea este bine
denit  (rezultatul unei adun ri nu depinde de reprezentanµii ale³i), este aso-
ciativ , comutativ , are element nul, ³i anume (0, s), respectiv ecare element
are un opus, −(a, s) = (−a, s). Deasemenea prin vericare direct  se arat  c 
înmulµirea este distributiv  faµ  de adunarea astfel denit  ³i în nal tot prin
vericare direct  rezult  ³i faptul c  iS este homomorsm de inele.

Deniµie 1.1.38. Inelul AS cu operaµiile de adunare ³i înmulµire denite mai


sus se nume³te inelul de fracµii asociat sistemului multiplicativ S , ³i se mai
noteaz  S −1 A.
Dac  A este un domeniu de integritate (nu are divizori ai lui 0) atunci
elementele nenule A∗ formeaz  evident un sistem S multiplicativ (maximal).
În acest caz S −1 A este un corp comutativ. Acest corp este numit corpul de
fracµii al inelului A.
36 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

Exemple 1.1.39. S  d m ³i câteva exemple.


• ZZ∗ = Q, corpul numerelor raµionale este corpul de fracµii al inelului
întregilor.

• Corpul de fracµii al inelului polinoamelor cu n necunoscute este corpul


de fracµii raµionale , notat

K(x1 , x2 , . . . , xn ) = {f /g | f, g ∈ k[x1 , x2 , . . . , xn ]}.

1.1.5 Leg tura dintre variet µile ane ³i ideale


În aceast  secµiune vom investiga leg tura dintre cele dou  concepte funda-
mentale introduse pân  acum: conceptul cu caracter geometric de varietate
an , ³i conceptul algebric de ideal.
O varietate an  este denit  ca mulµimea zerourilor unui set de ecuaµii
algebrice, vezi deniµia 1.1.6 de pe pagina 20. Ne intereseaz  în ce mod putem
schimba setul de ecuaµii, f r  ca mulµimea zerourilor comune acestora s  se
schimbe? Evident, înlocuirea unei ecuaµii cu ecuaµia obµinut  din suma acesteia
cu o alt  ecuaµie nu va schimba mulµimea zerourilor comune acestora. Putem
îns  descrie toate seturile de ecuaµii echivalente cu un set de ecuaµii dat?
Conceptul de ideal ne va da r spunsul la aceast  întrebare. Practic urm -
toarea propoziµie constituie un r spuns satisf c tor.
Propoziµie 1.1.40. Fie f1 , f2 , . . . , fk ∈ k[x1 , x2 , . . . , xn ] ³i g1 , g2 , . . . , gl ∈
k[x1 , x2 , . . . , xn ] dou  seturi de polinoame. Dac  ele genereaz  acela³i ideal,
atunci mulµimea zerourilor comune celor dou  seturi de polinoame coincid.
Reformulat puµin mai formal: dac 

< f1 , f2 , . . . , fk >=< g1 , g2 , . . . , gl >

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

adic  fi (a1 , a2 , . . . , an ) = 0 pentru orice i = 1, 2, . . . , k , ³i e f ∈ I arbitrar.


Avem f = g1 f1 + g2 f2 + · · · + gk fk , pentru anumite polinoame g1 , g2 , . . . , gk
potrivit alese, deci f (a1 , a2 , . . . , an ) = 0, de unde rezult  V ⊆ W , deci in
denitiv V = W .

Vom vedea în secµiunile care urmeaz , c  orice ideal de polinoame cu mai


multe variabile admite o baz  nit , deci num rul ecuaµiilor care denesc o
varietate poate  într-adev r limitat la un num r nit de ecuaµii.
Demonstraµia anterioar  sugereaz  urm toarele deniµii:

Deniµie 1.1.41. Fie I un ideal în k[x1 , x2 , . . . , xn ] ³i e V o varietate an .


Vom deni ³i vom nota varietatea denit  de idealul I

V (I) = {(a1 , a2 , . . . , an ) ∈ k n | f (a1 , a2 , . . . , an ) = 0, pentru orice f ∈ I},

respectiv idealul denit de varietatea an  V

I(V ) = {f ∈ k[x1 , x2 , . . . , xn ] | f (a) = 0, pentru orice a ∈ V },

unde am notat a = (a1 , a2 , . . . , an ).

Cu aceste notaµii începem investigaµia propriet µilor asocierilor V −→ I(V )


respectiv I −→ V (I). Primele propriet µi ale acestora sunt date în urm toarea
propoziµie:

Propoziµie 1.1.42. Fie V o varietate an . Atunci I(V ) este un ideal în


k[x1 , x2 , . . . , xn ].

Demonstraµie. Evident, dac  dou  polinoame f ³i g se anuleaz  pe punctele lui


V atunci ³i suma lor f + g se va anula pe V . De asemenea dac  f se anuleaz 
pe punctele lui V atunci pentru orice polinom g ∈ k[x1 , x2 , . . . , xn ] produsul
gf se va anula pe punctele lui V .

Se pune acum întrebarea analoag : Dat un ideal de polinoame I în ine-


lul k[x1 , x2 , . . . , xn ], este V (I) o varietate an ? R spunsul este armativ,
³i se bazeaz  pe teorema lui Hilbert a bazei, care arm  c  orice ideal în
k[x1 , x2 , . . . , xn ] este nit generat. S  trecem la detaliile acestui crucial rezul-
tat. Începem cu o deniµie care se refer  natural la proprietatea aat  în
discuµie, ³i pe care o plas m iar ³i într-un context abstract general:

Deniµie 1.1.43. Fie A un inel comutativ. Spunem c  A este Noetherian ,


dac  orice ideal al s u este nit generat.

O caracterizare a inelelor Noetheriene este dat  în urm toarea propoziµie:


38 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

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.

Demonstraµie. Fie A un inel Noetherian. Consider m un ³ir ascendent innit


de ideale
I1 ⊆ I2 ⊆ I3 ⊆ . . .
ale lui A. Fie idealul I = ∪∞
i=1 Ik (o astfel de reuniune de ideale este ideal). El
este nit generat, deci
I =< f1 , f2 , . . . , fk > .
Acum ecare element f1 , f2 , . . . , fk se a  în câte unul din idealele ³irului as-
cendent de ideale, deci toate se a  în cel cu indicele cel mai mare dintre
acestea. Astfel ³i I este inclus în acesta, ³i este clar c  ³irul de ideale devine
deci staµionar.
Invers, e I un ideal în A ³i presupunem c  orice ³ir ascendent de ideale
este staµionar în A. Fie f1 ∈ I , ³i alegem recursiv fi+1 ∈ I \ Ii unde Ii =<
f1 , f2 , . . . , fi >. Este clar c  ³irul Ii este un ³ir strict ascendent de ideale, ³i
el ind staµionar trebuie s  e nit, deci dup  un anumit rang k , fk+1 nu mai
exist . De aici rezult  c  I =< f1 , f2 , . . . , fk >, deci I este nit generat.

Teorema care urmeaz  claric  relaµia dintre idealele inelului de polinoame


k[x1 , x2 , . . . , xn ] ³i variet µile ane. R mânem pentru moment tot la enunµul
pentru contextul abstract.

Teorem  1.1.45 (Teorema lui Hilbert a bazei). Fie A un inel comutativ. Dac 
A este Noetherian atunci ³i A[x] este Noetherian.

Demonstraµie. Fie I un ideal în A[x]. Trebuie s  ar t m, c  I este nit generat.


Consider m ³irul de elemente din I în construit în felul urm tor: Alegem
f1 ̸= 0 din I astfel ca deg(f1 ) s  e minim, ³i apoi recursiv pentru i ≥ 1 alegem
fi+1 ∈ I\ < f1 , f2 , . . . , fi > tot de grad minim.
Dac  la un anumit indice alegerea lui fi+1 nu mai e posibil , atunci I =<
f1 , f2 , . . . , fi >, ³i idealul I este nit generat, ³i suntem gata.
Dac  admitem, c  procesul de construcµie al termenilor ³irului ar  nelim-
itat, atunci raµionamentul se continu  astfel: Fie ai coecientul termenului
1.1. CONCEPTE DE BAZ€ 39

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

J =< a1 , a2 , . . . , ak > . (1.1)


Arm m acum, c  I =< f1 , f2 , . . . , fk >. Într-adev r, dac  am avea incluz-
iune strict  < f1 , f2 , . . . , fk >⊂ I , atunci procesul de alegere al polinoamelor
ar continua cel puµin înc  un pas, ³i am avea înc  un element nenul de grad
minim fk+1 ∈ I\ < f1 , f2 , . . . , fk >. Observaµia crucial  acum este c  gradul
polinomului fk+1 este egal sau mai mare decât gradul oric rui polinom ales
anterior, f1 , f2 , . . . , fk . Prin urmare cu ajutorul acestora putem construi un
polinom de acela³i grad, ba chiar are acela³i termen principal ca ³i fk+1 , dar
care este în idealul generat de ace³tia, < f1 , f2 , . . . , fk >.
Explicit acest polinom se construie³te astfel. Coecientul termenului de
grad maxim al lui fk+1 este ak+1 ∈ J , ³i conform celor de mai sus (relaµia 1.1)
avem
∑k
ak+1 = ci ai .
i=1

pentru anumiµi coecienµi ci ∈ A, i = 1, . . . , k , potrivit ale³i. Polinomul


k
g= ci fi xdeg(fk+1 )−deg(fi )
i=1

este evident un polinom în idealul < f1 , f2 , . . . , fk >, deci ³i în I . Astfel,


polinomul fk+1 − g este în I , nu este în < f1 , f2 , . . . , fk >, ³i are gradul strict
mai mic decât gradul lui fk+1 , ceea ce contrazice alegerea lui fk+1 . A³adar
polinomul fk+1 nu exist , deci

I =< f1 , f2 , . . . , fk > .

Consecinµ  1.1.46. Fie k un corp. Atunci orice ideal al inelului de polinoame


k[x1 , x2 , . . . , xn ] este nit generat.

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

Noetherian. Acum aplic m recursiv Teorema lui Hilbert a bazei, (teorema


1.1.45), ³i obµinem k[x1 ], k[x1 , x2 ] = k[x1 ][x2 ], ... ³i în nal k[x1 , x2 , . . . , xn ] =
k[x1 , . . . , xn−1 ][xn ] este ecare inel Noetherian.
A³adar orice ideal al inelului k[x1 , x2 , . . . , xn ] este nit generat.

Analog propoziµiei 1.1.42 de pe pagina 37 este urm toarea propoziµie:


Propoziµie 1.1.47. Fie I un ideal în k[x1 , x2 , . . . , xn ]. Atunci V (I) este o
varietate an .
Demonstraµie. Conform consecinµei 1.1.46 idealul I este nit generat, deci
I =< f1 , f2 , . . . , fk >. S  ar t m c  V (I) = V (f1 , f2 , . . . , fk ). Incluziunea
V (I) ⊆ V (f1 , f2 , . . . , fk ) este clar .
Fie (a1 , a2 , . . . , an ) ∈ V (f1 , f2 , . . . , fk ). Fie f ∈ V (I) arbitrar. Întru-cât f
se poate scrie sub forma f = g1 f1 + g2 f2 + · · · + gk fk , ³i deoarece fi (a) = 0
pentru orice i = 1, 2, . . . , k avem f (a) = 0. A³adar (a1 , a2 , . . . , an ) ∈ V (I),
deci V (f1 , f2 , . . . , fk ) ⊆ V (I). În concluzie V (I) = V (f1 , f2 , . . . , fk ).

S  începem concret acum investigaµia propriet µilor corespondenµei ideal


varietate an , respectiv varietate an ideal. O prim  proprietate este dat 
în urm toarea propoziµie.
Propoziµie 1.1.48. Corespondenµele (vezi deniµia 1.1.41 de pe pagina 37)
V −→ I(V )
³i
I −→ V (I)
sunt antimonotone, adic  dac  V1 ⊆ V2 , atunci I(V2 ) ⊆ I(V1 ), respectiv dac 
I1 ⊆ I2 , atunci V (I2 ) ⊆ V (I1 ).
În plus, corespondenµa V −→ I(V ) este injectiv , ³i V (I(V )) = V .
Demonstraµie. Fie V1 ⊆ V2 . Este clar c  orice polinom care se anuleaz  pe o
mulµime de puncte, se anuleaz  ³i pe o submulµime a acesteia, deci I(V2 ) ⊆
I(V1 ).
Invers, e I1 ⊆ I2 . Mulµimea zerourilor comune a mai multor polinoame
este mai mic , deci este clar c  V (I2 ) ⊆ V (I1 ).
Pentru a demonstra egalitatea V (I(V )) = V s  observ m, c  incluziunea
V ⊆ V (I(V )) este o consecinµ  imediat  a deniµiilor, întru-cât orice f ∈ I(V )
se anuleaz  pe V . În cel lalt sens, e V = V (f1 , f2 , . . . , fk ). Atunci
f1 , f2 , . . . , fk ∈ I(V ) deci avem ³i < f1 , f2 , . . . , fk >∈ I(V ). Dar pe de o
parte V = V (f1 , f2 , . . . , fk ) = V (< f1 , f2 , . . . , fk >) conform demonstraµiei
propoziµiei 1.1.40 de pe pagina 36, pe de alt  parte asocierea variet µii la ideal
este antimonoton , deci V (I(V )) ⊆ V . În concluzie V (I(V )) = V . De aici
rezult  ³i injectivitatea asocierii idealului.
1.2. CONSTRUC•IA BAZEI GRÖBNER 41

Leg tura dintre operaµiile cu ideale ³i operaµiile cu variet µile ane poate


 studiat  în detaliu. Se constat  spre exemplu c , sumei a dou  ideale îi
corespunde intersecµia variet µilor ane asociate acestora, iar produsului a dou 
ideale îi corespunde reuniunea variet µilor ane asociate. În acest fel se poate
construi un veritabil dicµionar de algebr geometrie, care permite studierea
fenomenelor geometrice cu mijloace algebrice ³i invers.

1.2 Construcµia bazei Gröbner

V om prezenta în aceast  secµiune fundamentul algebric  teoretic ³i


algoritmic  al investigaµiei variet µilor ane. Acest fundament este baza
Gröbner . “tim deja c  orice ideal al inelului k[x1 , x2 , . . . , xn ] are o baz  nit .
O baza Gröbner este o baz  cu propriet µi speciale, care genereaz  acela³i
ideal. Ea se poate calcula plecând de la baza dat  cu ajutorul unui algoritm,
algoritmul Buchberger.

1.2.1 Împ rµirea polinoamelor cu o variabil 


Structura de inel a mulµimii polinoamelor k[x1 , x2 , . . . , xn ] înseamn   exprimat
într-un limbaj vag ³i degajat  posibilitatea adun rii, sc derii ³i înmulµirii
neîngr dite a polinoamelor între ele. Exact ca ³i în cazul numerelor întregi, se
pune a³adar problema studierii împ rµirii.
S  vedem mai întâi câteva exemple. Împ rµim 37 la 5, în inelul întregilor.
Obµinem câtul 7, ³i restul 2.
37 5
- 35 7 7 · 5 = 35
2
A³adar 37 = 7 · 5 + 2, sau în exprimarea academic  37 = 2( mod 5),
respectiv 37 − 2 ∈< 5 >, adic  diferenµa dintre 37 ³i 2 se a  în idealul generat
de 5 în inelul întregilor.
Similar, în inelul Q[x] al polinoamelor de o nedeterminat  x, cu coecienµi în
corpul numerelor raµionale Q, polinomul x2 + 3x + 3 împ rµit la x + 1 d  câtul
x + 2 ³i restul 1.
x2 + 3x + 3 x+1
(-) x2 + 3x + 2 x+2 (x + 2) · (x + 1) = x2 + 3x + 2
1

Avem deci relaµia x2 + 3x + 3 = (x + 1) · (x + 2) + 1, sau x2 + 3x + 3 = 1(


mod (x + 1)), respectiv x2 + 3x + 3 − 1 ∈< x + 1 >, adic  x2 + 3x + 2 se a 
în idealul generat de polinomul x + 1.
42 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

În ambele exemple câtul ³i restul sunt univoc determinate de deîmp rµitul


³i împ rµitorul dat: condiµia ca restul s  e strict mai mic decât împ rµitorul
15 (dar pozitiv), respectiv gradul polinomului rest s  e strict mai mic decât
gradul împ rµitorului x + 1 determin  valoarea câtului ³i al restului în mod
unic (vezi teorema fundamental  a aritmeticii respectiv teorema împ rµirii poli-
noamelor de o singur  nedeterminat ).

Ce s-ar întâmpla dac  am împ rµi un num r întreg (sau un polinom) la


mai multe numere (mai multe polinoame)?

S  începem cu o "împ rµire" de numere întregi. Împ rµim spre exemplu 87


la 15 ³i 6. Un sens al acestei "împ rµiri" neobi³nuite poate  reg sit în "proba"
împ rµirii: 87 = 15 · x + 6 · y + r, unde x, y sunt cele dou  câturi iar r este
un rest, care urmeaz  toate s  e determinate. Am spus un rest ³i nu restul
deoarece nu ³tim înc  dac  acest rest este unic!

S  examin m cazul exemplului nostru de "împ rµire". Avem:

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

Astfel 87 = 15 · 4 + 6 · 3 + 9 sau 87 = 15 · 2 + 6 · 9 + 3, pentru a aminti doar


câteva din posibilit µile de exprimare a "deîmp rµitului" 87 cu ajutorul unei
combinaµii liniare a celor doi "împ rµitori" 15 ³i 6.
1.2. CONSTRUC•IA BAZEI GRÖBNER 43

Putem obµine chiar ³i restul 0, spre exemplu în modul urm tor:

87 15 6
- 45 3 3 · 15 = 45
42 7 7 · 6 = 42
- 42
0

Similar, în inelul Q[x] al polinoamelor de o nedeterminat  x, cu coecienµi


în corpul numerelor raµionale Q, "împ rµim" polinomul f = 2x3 − x − 1 la
polinoamele g = x2 − x ³i h = x2 − 1. Avem printre altele urm toarele scheme
de împ rµire:

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

Acestea pot da deci "câturile" x + 1 ³i x iar restul x − 1, deoarece

f = (x + 1) · g + x · h + (x − 1),

dar ³i "câturile" x ³i x + 1 iar restul 0, deoarece

f = x · g + (x + 1) · h.

Putem conchide deci c  polinoamele f − (x − 1) ³i f se a  în idealul generat


de polinoamele g ³i h, I =< g, h >.
Sunt oare unice câturile ³i restul obµinute în aceste "împ rµiri"? Exemplele
de mai sus arat  c  ele nu sunt unice, chiar dac  impunem condiµia ca restul
s  e mai mic decât cel mai mic dintre numere, respectiv gradul restului s  e
mai mic decât gradul celui mai mic dintre împ rµitori!
44 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

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,

orice exprimare ("împ rµire") a lui 87 ca o combinaµie liniar  a lui 15 ³i 6 poate


 redus  la restul unic al împ rµirii, spre exemplu 87 = 15 · 4 + 6 · 3 + 9 poate
 redus astfel:

87 = 4 · 15 + 3 · 6 + 3 · (1 · 15 − 2 · 6) + 0
= 7 · 15 − 3 · 6 + 0.

Similar, în cazul exemplului cu polinoame, avem:

(x2 − 1, x2 − x) = x − 1,

deci împ rµirea echivalent   în care câtul ³i restul sunt unic determinate 


este urm toarea

2x3 − x − 1 x−1
(-) 2x3 − x − 1 2x2 + 2x + 1 (2x2 + 2x + 1) · (x − 1) = 2x3 − x − 1
0.
1.2. CONSTRUC•IA 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.

1.2.2 Împ rµirea polinoamelor cu mai multe variabile


S  trecem acum la împ rµirea polinoamelor cu mai multe variabile (n >= 2).
Se pune întrebarea în ce m sur  cele de mai sus sunt valabile ³i în acest nou
context? Mai precis, putem formula urm toarele întreb ri:

• Este inelul polinoamelor k[x1 , x2 , . . . , xn ] un inel principal?

• În inelul k[x1 , x2 , . . . , xn ] funcµioneaz  algoritmul lui Euclid?

• Exist  descompunere în factori ireductibili pentru orice polinom din


k[x1 , x2 , . . . , xn ], ³i dac  da, este unic  oare o astfel de descompunere?

• Exist  un cel mai mare divizor comun pentru oricare dou  polinoame din
k[x1 , x2 , . . . , xn ]?

R spunsul la primele dou  întreb ri este u³or. Un raµionament simplu


(detaliile sunt l sate pe seama cititorului) arat  c  în inelul K[x, y] idealul
I =< x, y > generat de cele dou  variabile nu este principal, adic  nu poate 
generat de un singur polinom.
Întru-cât orice inel euclidian este ³i principal, inelul de polinoame cu mai
multe variabile nu este euclidian. Este deci natural s  ne întreb m cât de
departe este acest inel de inelele euclidiene, respectiv cum poate  facut  îm-
p rµirea polinoamelor cu p strarea a cât mai mult din proprietatea de unicitate
a câturilor ³i a restului.
Pentru a r spunde la celelalte dou  întreb ri este momentul s  d m câteva
deniµii noi ³i reamintim câteva rezultate de baz  ale algebrei comutative.

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.

Are loc urm toarea propoziµie important .


Propoziµie 1.2.5. Dac  A este un inel factorial, atunci A[x] este tot
inel factorial. În consecinµ  inelul polinoamelor cu mai multe variabile
k[x1 , x2 , . . . , xn ] este factorial.
Pentru demonstraµie trimitem cititorul la oricare din tratatele clasice de
algebr .
Putem acum r spunde ³i la celelalte dou  întreb ri. Întru-cât orice corp
este inel factorial (în mod banal), inelul polinoamelor cu una sau mai multe
variabile k[x1 , x2 , . . . , xn ] este inel factorial.
Deoarece într-un inel factorial orice element ireductibil este ³i prim, rezult 
c  în aceste inele oricare dou  elemente au un cel mai mare divizor comun. El
se poate deni chiar cu ajutorul descompunerii celor dou  elemente în factori
ireductibili (deci primi) în modul obi³nuit: se aleg toµi factorii comuni (i.e.
1.2. CONSTRUC•IA BAZEI GRÖBNER 47

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.3 Ideale monomiale


Este clar c  pentru a stabili o relaµie de ordine între monoamele polinoamelor
inelului k[x1 , x2 , . . . , xn ], care au forma

xα = xα1 1 xα2 2 · · · xαnn ,


este necesar ³i sucient s  stabilim o astfel de relaµie între exponenµii (i.e.
multiexponenµii) acestora,

α = (α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.

Deniµie 1.2.6. O relaµie de ordine > pe Nn se nume³te ordonare monomial 


dac  are urm toarele trei propriet µi:
48 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

• este o relaµie total  (ordonare liniar ),

• dac  α > β atunci α + γ > β + γ ,

• este o relaµie de bineordonare, adic  orice submulµime nevid  are un cel


mai mic element.

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

bare vom da câteva exemple de ordon ri monomiale pe care le vom reg si ³i


în împlement rile algoritmilor polinoamelor cu mai multe variabile. În ceea ce
prive³te cea de a doua întrebare menµion m aici doar faptul c  problema carac-
teriz rii este rezolvat  ³i orice ordonare monomial  este descris  de o matrice,
având anumite propriet µi.

Deniµie 1.2.7. Relaµie de ordine > pe Nn denit  astfel: α > β dac  în


diferenµa α − β prima component  nenul  din stânga este pozitiv , se nume³te
ordonare lexicograc  (notat , dac  contextul cere în mod explicit, >lex ).
Se poate verica u³or, c  aceast  ordonare este ordonare monomial .
Introducem urm toarea notaµie pentru exprimarea "gradul total" al unui
monom:
|α| = α1 + α2 + . . . + αn .
Deniµie 1.2.8. Relaµia de ordine > pe Nn denit  astfel: α > β dac 
• |α| > |β| sau

• dac  |α| = |β| atunci în diferenµa α − β prima component  nenul  din


stânga este pozitiv ,

se nume³te ordonare lexicograc  graduat  (notat  uneori >grlex ).

“i înc  o ordonare utilizat  mai des este urm toarea.

Deniµie 1.2.9. Relaµia de ordine > pe Nn denit  prin: α > β dac 


• |α| > |β| sau

• dac  |α| = |β| atunci în diferenµa α − β prima component  nenul  din


dreapta este negativ ,

se nume³te ordonare invers lexicograc  graduat  (notat  >invgrlex ).

Exemple 1.2.10. S  d m câteva exemple.


1.2. CONSTRUC•IA BAZEI GRÖBNER 49

• (1, 2, 3) >lex (1, 0, 4)

• (2, 2, 3) >grlex (3, 2, 1)

• (2, 1, 2) >grlex (1, 2, 2)

• (2, 0, 1) >invgrlex (1, 1, 1)

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.

Deniµie 1.2.11. Fie f un polinom nenul în k[x1 , x2 , . . . , xn ] ³i e > o or-


donare monomial . Atunci:

(1) gradul polinomului f este

mdeg(f ) = max{α ∈ Nn : aα ̸= 0},

(2) coecientul principal al lui f este

LC(f ) = amdeg(f ) ∈ k,

(3) monomul principal al lui f este

LM(f ) = xmdeg(f ) ∈ k,

(4) iar termenul principal al lui f este

LT(f ) = LC(f ) · LM(f ).

Deniµia care urmeaz  va  important  în denirea bazei Gröbner .

Deniµie 1.2.12. Un ideal I ⊂ k[x1 , x2 , . . . , xn ] se nume³te ideal monomial


dac  exist  o submulµime de multiexponenµi A ⊂ Nn astfel ca I este format
din toate polinoamele ale c ror termeni sunt monoame având multiexponentul
din A. Vom nota un ideal monomial deci I =< xα : α ∈ A >.

D m f r  demonstraµie o caracterizare important  a idealelor monomiale:

Propoziµie 1.2.13 (lema lui Dickson). Fie I un ideal monomial în


k[x1 , x2 , . . . , xn ]. Atunci I este generat de o mulµime nit  de monoame.

În sfâr³it vom mai avea nevoie de o deniµie.


50 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

Deniµie 1.2.14. Fie I ⊂ k[x1 , x2 , . . . , xn ] un ideal nenul.


(1) Denim ³i not m mulµimea termenilor principali ai lui I prin

LT(I) = {cxα : exist  f ∈ I, astfel ca LT(f ) = cxα },

(2) respectiv idealul termenilor principali ca ind idealul generat de aceste


elemente LT(I), care va  notat prin < LT(I) >.

Este u³or de v zut c  idealul termenilor principali al unui ideal I este un


ideal monomial ³i este nit generat de mulµimea termenilor principali ai unui
set nit de polinoame ale idealului I .

1.2.4 Baze Gröbner


Având la dispoziµie ordon rile monomiale, putem trece la experimentarea "îm-
p rµirilor" polinoamelor la un set nit de divizori. Vom folosi ordonarea cea
mai la îndemân , ordonarea lexicograc . Iat  un exemplu. Fie f = 2x2 y
"deîmp rµitul" iar "împ rµitorii" f1 = x2 − x ³i f2 = xy + y .

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

A³adar, putem scrie "proba" împ rµirii:

2x2 y = 2y · (x2 − x) + 2 · (xy + y) + (−2y).

Restul −2y ne-ar putea sugera c  f nu este o combinaµie a polinoamelor f1


³i f2 , altfel spus f nu este în idealul generat de f1 ³i f2 . S  nu tragem îns 
concluzii pripite. S  efectu m acum acela³i procedeu schimbând ordinea celor
doi împ rµitori. Vom obµine:

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

De data aceasta am obµinut urm toarea reprezentare a lui f :

2x2 y = 0 · (x2 − x) + (2x − 2) · (xy + y) + 2y.


1.2. CONSTRUC•IA BAZEI GRÖBNER 51

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:

2x2 = y · (x2 − x) + x · (xy + y),

deci f = y · f1 + x · f2 , ceea ce înseamn  c  f ∈< f1 , f2 >, sau în limbajul


nostru degajat, f este "divizibil" cu f1 , f2 !
Se pune deci problema natural : cum poate  salvat algoritmul nostru de
împ rµire? R spunsul este urm torul: schimbând împ rµitorii! Mai precis, va
trebui s -i schimb m în mod potrivit, f r  s  schimb m idealul generat de ei!
Setul nou potrivit, care face decidabil  problema apartenenµei lui f la idealul
I generat de împ rµitori, deci pentru care restul împ rµirii este în cazul nostru
0, este baza Gröbner !
Pentru idealul nostru I acesta este G = {x2 − x, y}. Se veric  u³or c 
aceasta este o baz  echivalent : genereaz  acela³i ideal I ! Într-adev r, dac 
not m g1 = x2 − x ³i g2 = y , atunci avem exprim rile reciproce:
{
f1 = g1
f2 = (x + 1) · g2 ,
³i {
g1 = f1
g2 = 12 y · f1 + (− 21 x + 1)f2 ,
deci este clar c  I =< f1 , f2 >=< g1 , g2 >.
Este momentul s  d m deniµia bazei Gröbner .

Deniµie 1.2.15. Fie I un ideal în k[x1 , x2 , . . . , xn ]. O mulµime nit  de


polinoame G = {g1 , . . . , gk } din I se nume³te baz  Gröbner pentru idealul I ,
dac 
< LT(g1 ), . . . , LT(gk ) >=< LT(I) > .
52 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

O u³oar  adaptare a demonstraµiei dat  pentru teorema lui Hilbert a bazei


ne permite s  enunµ m propoziµia urm toare:

Propoziµie 1.2.16. Orice ideal I din k[x1 , x2 , . . . , xn ] are o baz  Gröbner .


Aceasta este în acela³i timp o baz  pentru I , adic  I este generat de polinoamele
din baza Gröbner .
S  demonstr m aici în schimb urm toarea propoziµie, care ne convinge c 
într-adev r baza Gröbner este cea care asigur  unicitatea restului împ rµirii.

Propoziµie 1.2.17. Consider m un ideal I în k[x1 , x2 , . . . , xn ] ³i o baz  Gröb-


ner G = {g1 , g2 , . . . , gk } pentru acest ideal. Fie f ∈ k[x1 , x2 , . . . , xn ] un poli-
nom arbitrar. Atunci exist  polinoamele g ∈ I ³i r ∈ k[x1 , x2 , . . . , xn ] cu
urm toarele propriet µi:
• f = g + r (împ rµirea),

• 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

• r este unic cu aceste dou  propriet µi.

Demonstraµie. Existenµa lui g ³i r cu primele dou  propriet µi este dat  chiar


de algoritmul împ rµirii. Trebuie s  dovedim doar unicitatea lui r. Fie f =
g + r = g ′ + r′ . Atunci r′ − r = g − g ′ ∈ I deci evident LT(r′ − r) ∈< LT(T ) >.
Dar datorit  bazei Gröbner avem < LT(T ) >=< LT(G) >, ceea ce nu este
posibil decât dac  r′ − r = 0, deci unicitatea lui r este demonstrat .

1.2.5 Algoritmul lui Buchberger


Baza Gröbner a fost introdus  de Buchberger în teza sa de doctorat ³i denumit 
astfel în onoarea conduc torului tezei. Buchberger a dat în aceast  tez  ³i un
algoritm de calcul al acestei baze. Algoritmul pleac  de la o baz  a idealului, un
set nit de polinoame, ³i într-un num r nit de pa³i calculeaz  o baz  Gröbner
pentru idealul dat.
Suntem datori s  schiµ m acest algoritm. Fie deci I =< f1 , f2 , . . . , fk ≯= 0
un ideal. Iat  algoritmul lui Buchberger:

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. CONSTRUC•IA BAZEI GRÖBNER 53

for (p, q), p, q ∈ G′ , p ̸= q


S := S(p, q) mod G′
if S ̸= 0 then G := G ∪ {S}
until G = G ′

Notaµia S := S(p, q) mod G′ trebuie explicat . Fie xγ c.m.m.m.c al


monoamelor LM(p) ³i LM(p). Atunci

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

• LT(g) ̸∈< LT(G \ {g} > pentru orice g ∈ G.


Având la dispoziµie o baz  Gröbner pentru un ideal I putem elimina pas
cu pas polinoamele care violeaz  proprietatea de minimalitate a bazei. Se
vede îns  u³or c  aceast  eliminare poate  f cut  în multe moduri, deci baza
Gröbner obµinut  nu este unic . Putem îns  face o "reducere" mai substanµial 
a bazei Gröbner , care va avea ³i o proprietate de unicitate!
Deniµie 1.2.20. O baz  Gröbner G pentru idealul I se nume³te redus  , 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

Demonstraµie. S  denim în aceast  demonstraµie un polinom g ∈ G ca ind


redus în G dac  nici un monom al lui g nu este în < LT(G \ {g} >. Evident,
reducerea lui G se va termina, când ecare element al lui este redus în el.
O prim  observaµie imediat  este c  dac  un polinom g ∈ G este redus în
G, atunci ele este redus în orice alt  baz  Gröbner minimal  din care face ³i
el parte, ³i care are acela³i set de termeni principali.
A doua observaµie este faptul c  orice polinom g al unei baze Gröbner
minimale G poate  înlocuit cu restul împ rµirii acestuia la G \ {g}, (adic  g
mod (G \ {g})), aceasta ind tot a baz  Gröbner minimal . Aceasta rezult 
direct din algoritmul lui Buchberger, deoarece LT(g) = LT(g mod (G \ {g})).
În ne s  mai observ m c  g mod (G\{g}) este redus pentru baza Gröbner
obµinut  prin dislocarea din G a lui g ³i cooptarea în locul lui al lui g mod (G\
{g}).
Aceste observaµii arat  c  procesul de reducere a unei baze Gröbner prin
eliminarea respectiv dislocarea elementelor sale conform cu observaµiilor ante-
rioare conduce la o baz  Gröbner redus .
Trebuie s  mai analiz m deci unicitatea bazei reduse. Fie G1 ³i G2 dou 
baze Gröbner reduse pentru I . Este u³or de v zut c  mulµimea termenilor
principali coincid, deci LT(G1 ) = LT(G2 ). Fie g1 ∈ G1 arbitrar. Atunci exist 
g2 ∈ G2 astfel ca LT(g1 ) = LT(g2 ). Va trebui s  ar t m c  g1 = g2 .
Pentru aceasta s  consider m diferenµa g1 − g2 . Aceasta ind în idealul I
avem (g1 − g2 ) mod G1 = 0. Dar deoarece LT(g1 ) = LT(g2 ), ace³ti termeni se
anuleaz  în diferenµ , iar termenii r ma³i nu sunt divizibili cu nici un monom
din LT(G1 ) = LT(G2 ), deoarece G1 ³i G2 sunt baze Gröbner reduse pentru I .
A³adar (g1 − g2 ) mod G1 = (g1 − g2 ). Rezult  c  g1 = g2 .

Din cele de mai sus rezult  un criteriu algoritmic de a decide egalitatea a


dou  ideale.

Observaµie 1.2.22. Seturile de polinoame {f1 , f2 , . . . , fk } ³i {g1 , g2 , . . . , gl }


genereaz  acela³i ideal, dac  bazele Gröbner reduse ale celor dou  ideale gen-
erate coincid.

1.3 Demonstraµia teoremelor de geometrie

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. DEMONSTRA•IA TEOREMELOR DE GEOMETRIE 55

descoperirea unor leg turi profunde între diverse ramuri ale matematicii, în


cazul de faµ  între algebr  ³i geometrie!
În continuare ne x m contextul presupunând urm toarele fapte: propri-
et µile geometrice admise sunt cele care se pot exprima prin ecuaµii polinomiale
(nu neap rat liniare!). Acestea se obµin cu ajutorul coordonatiz rii. Datele
problemei geometrice vor  variabile algebrice, ele putând  de dou  tipuri:
cele arbitrare (acestea vor  notate cu litera u, ³i sunt parametrii construcµi-
ilor geometrice f cute în ipoteza enunµului) ³i cele legate de propriet µile geo-
metrice date (notate cu x), num rul acestora din urm  ind egal cu num rul
propriet µilor. Presupunem deci c  ecare proprietate se exprim  cu ajutorul
unei ecuaµii algebrice (în general neliniare), iar polinoamele acestea vor  no-
tate cu h. Proprietatea care exprim  concluzia enunµului este ³i ea o ecuaµie
polinomial , notat  cu g .
Iat  descrierea sumar  a metodei. Începem cu o deniµie.

Deniµie 1.3.1. Concluzia g rezult  strict din ipotezele h1 , . . . , hn , dac  g ∈


I(V ) ⊂ R[u1 , . . . , um , x1 , . . . , xn ], unde V este varietatea an  generat  de
h1 , . . . , hn , i.e. mulµimea zerourilor acestui set de polinoame.

Avem urm toarea propoziµie.



Propoziµie 1.3.2. Dac  g este în < h1 , . . . , hn >, atunci g rezult  strict din
ipotezele h1 , . . . , hn .

Pentru demonstraµie trimitem la [12]. În continuare avem nevoie de o


deniµie care exprim  leg tura dintre independenµa algebric  a parametrilor ³i
degenerarea condiµiilor geometrice.

Deniµie 1.3.3. Concluzia g rezult  generic din ipotezele h1 , . . . , hn , dac 


g ∈ I(V ′ ) ⊂ R[u1 , . . . , um , x1 , . . . , xn ], unde V ′ este reuniunea acelor com-
ponente ale variet µii ane V generat  de h1 , . . . , hn pe care ui sunt algebric
independente.

Reamintim, c  independenµa algebric  a variabilelor ui pe o varietate an 


ireductibil  înseamn  c  nu exist  polinom nenul având numai aceste variabile
care s  se anuleze identic pe aceast  varietate. În mod uzual în teoremele
geometrice concluzia exprim  o proprietate geometric  generic , i.e. situaµia
degenerat  a propriet µilor din ipoteze se exclude.
Urm toarea teorem  reprezint  cheia aplic rii teoriei bazelor Gröbner în
demonstrarea teoremelor de geometrie (vezi [12]).

Teorem  1.3.4. Concluzia g rezult  generic din ipotezele h1 , . . . , hn , dac  una


din condiµiile echivalente urm toare este îndeplinit :
56 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

(1) Exist  un polinom nenul c(u1 , . . . , um ) ∈ R[u1 , . . . , um ] astfel ca



c · g ∈ H,

unde H =< h1 , . . . , hn >⊂ R[u1 , . . . , um , x1 , . . . , xn ].


(2) Dac  not m H̃ =< h1 , . . . , hn >⊂ R(u1 , . . . , um )[x1 , . . . , xn ], atunci

g ∈ H̃.

(3) 1 este baza Gröbner (redus ) a idealului

< h1 , . . . , hn , 1 − yg >⊂ R(u1 , . . . , um )[x1 , . . . , xn , y].

În exemplele care urmeaz  rolul principal va juca condiµia (3) care se va


reg si ³i în comenzile din codul surs  al programului Singular, pe care-l vom
folosi în aplicaµii.

1.4 Aplicaµii  Exemple în Singular

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 :

• Un inel de polinoame peste un corp.


• Localizarea unui inel de polinoame.
• Inelul factor al celor de mai sus, cu un ideal al acestora.
• Produsul tensorial al inelelor de la punctul 1 sau 2.

Corpul de coecienµi poate :


• Corpul numerelor raµionale Q, cu reprezentarea numerelor întregi în pre-
cizie innit .
• Zp unde p este un num r prim mai mic decât 2147483629.
• Un corp nit GF(pn ), unde p este un num r prim, ³i pn ≤ 215 .
• Extinderi transcendente ale lui Q ³i Zp .
• Extinderi algebrice simple ale lui Q ³i Zp .
• Corpul numerelor reale ³i complexe (cu reprezentarea numerelor în vir-
gul  mobil , cu precizie innit ).
1.4. APLICA•II  EXEMPLE ÎN SINGULAR 57

Exemple 1.4.1. Denim în Singular inelele de polinoame:


(1) Q[x, y, z],
(2) Z5 [x],
(3) Z1 1(a, b)[x, y, z],
(4) Z2 [a]/(a3 + a + 1)[x, y].
(5) R[x, y, z].
Iat  ³i secvenµele de program corespunz toare:
// (1)
ring R=0,(x,y,z),dp;
R;
// (2)
ring R=5,x,dp;
R;
// (3)
ring R=(11,a,b),(x,y,z),dp;
R;
// (4)
ring R=(2,a),(x,y),dp;
minpoly = a^3+a+1;
R;
ring R=(2^3,a),(x,y),dp;
R;
// (5) numere reale cu 50 cifre zecimale
ring R=(real,50),(x,y),dp;
R;
Comanda (4) spre exemplu dene³te inelul caracterizat de program astfel:
// characteristic : 2
// 1 parameter : a
// minpoly : (a3+a+1)
// number of vars : 2
// block 1 : ordering dp
// : names x y
// block 2 : ordering C
În cele ce urmeaz   semnal m de pe acum  nu vom insista asupra sintaxei
comenzilor programelor pe care le folosim pentru exemplic ri ³i rezolvarea
exerciµiilor. Aceste programe dispun de un ajutor (help) extensiv ³i acoperitor,
pentru ca cititorul dornic s  pun  în funcµiune matematica prezentat , s  se
l mureasc  asupra acestor aspecte  din punctul de vedere al scopului urm rit
de textul de faµ   neesenµiale.
58 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

S  consider m urm toarea teorem  de geometrie plan .

Teorem  1.4.2. Fie A, B , C ³i D patru puncte arbitrare în planul euclidian.


Presupunem c  ele sunt câte trei necoliniare, ³i nici unul nu este ortocentrul
triunghiului format de celelalte trei puncte. Consider m cele patru cercuri ale
celor nou  puncte (numit ³i cercul Euler sau cercul Feuerbach) al celor patru
triunghiuri formate de punctele date. Cele patru cercuri au un punct comun.

Figura 1.7: Patru cercuri (A)


Demonstraµia acestei teoreme este conµinut în codul surs  Singular de mai
jos. Comentariile din cod trebuie s  e suciente pentru a înµelege constituirea
acestui program.
Aceast  teorem  se bazeaz  pe o teorem  a lui Brianchon-Poncelet (1820),
care arm  c  centrul unei hiperbole echilaterale care trece prin trei puncte
date, se a  pe cercul celor nou  puncte al triunghilui.
A³adar punctul de intersecµie al celor patru cercuri este centrul hiperbolei
echilaterale determinat unic de cele patru puncte date.

// --------------------------------------------------------
//
1.4. APLICA•II  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);
// --------------------------------------------------------

Programul va întoarce 1, deci teorema este demonstrat . (De fapt în locul


comenzii groebner(I) se folose³te o variant  modicat , std(I), prescurtare de
la "standard bases". Pentru detalii vezi [12]).
Autorul nu a g sit referinµe pentru urm toarea variant  a precedentului rezul-
tat vechi.
60 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

Teorem  1.4.3. Fie A, B , C ³i D patru puncte arbitrare în planul euclidian,


ca în teorema precedent . Consider m cele patru cercuri care trec prin cele câte
trei picioare ale perpendicularelor duse dintr-un punct pe laturile triunghiului
format de celelalte trei puncte. Cele patru cercuri au din nou un punct comun.

O C

Figura 1.8: Patru cercuri (B)


Este remarcabil c  cele dou  puncte de intersecµie coincid! Demonstraµia este
un exerciµiu de programare în Singular, l sat pe seama cititorului.

O C

Figura 1.9: Patru cercuri (C)


1.5. PROBLEME PROPUSE 61

1.5 Probleme propuse


1. S  se reprezinte grac variet µile ane  din R2  ³i s  se precizeze cât
mai multe informaµii despre natura ³i dimensiunea acestora.

1-1. V (x2 − 2y).


1-2. V ((x2 − 2y) · (2x − y 2 )).
1-3. V (xy(x2 − 2y) · (2x − y 2 + 1)).
1-4. V (x − 2y + 1) ∩ V (2x − y 2 ).
1-5. V (x2 − 2y) ∩ V (2x − y 2 ).

2. S  se reprezinte grac variet µile ane  din R3  ³i s  se precizeze de


asemenea cât mai multe informaµii despre natura ³i dimensiunea acestora.

2-1. V (x2 + y 2 − z 2 − 1).


2-2. V (x2 − y 2 − z 2 − 1).
2-3. V (x2 − y 2 − z).
2-4. V (x2 + y 2 − 1).
2-5. V (x2 − y 2 − 1).
2-6. V ((x2 − 2y) · (2x − y 2 )).
2-7. V ((x2 − 2y) · (2x − z 2 )).
2-8. V (xyz(x2 − 2y)).
2-9. V (x − 2y + z + 1) ∩ V (2x − y − z + 2).
2-10. V (x2 − 2y) ∩ V (x − y + z + 1).

3. S  se stabileasc  dac  apartenenµele de mai jos sunt adev rate sau nu în


inelul R[x, y] respectiv R[x, y, z].

3-1. x6 + y 6 ∈< x3 + x2 y, xy 3 + y 4 >.


3-2. x6 − y 6 ∈< x3 + x2 y, xy 3 + y 4 >.
3-3. x6 + y 6 ∈< x3 + y 3 , x2 + y 2 >.
3-4. x2 + y 2 ∈< x3 + y 3 , x2 + y 2 >.
3-5. x2 y 2 ∈< x3 + y 3 , x2 + y 2 >.
3-6. x3 + yz 2 ∈< x3 + y 3 , xy + yz, y 2 − z 2 >.
3-7. x2 + y 2 + z 2 ∈< x3 + y 3 , xy + yz, y 2 − z 2 >.
3-8. x3 + y 4 + z 5 ∈< x3 + y 3 , xy + yz, y 2 − z 2 >.
3-9. xyz ∈< x3 + y 3 + z 3 , xy + yz + zx, x2 + y 2 + z 2 >.
3-10. x + y + z ∈< x3 + y 3 + z 3 , xy + yz + zx, x2 + y 2 + z 2 >.
3-11. x7 + y 7 + z 7 ∈< x3 + y 3 + z 3 , xy + yz + zx, x2 + y 2 + z 2 >.

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

4. S  se stabileasc  care din relaµiile (posibil mai multe)

(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].

4-1. I =< x, y >, J =< x + 2y, 2x − y >.


4-2. I =< x, y >, J =< x2 , x + y >.
4-3. I =< x2 , y 2 , xy >, J =< x + y, x3 y 3 >.
4-4. I =< x, y, z >, J =< x + 2y + z, 2x − y − x, y + z >.
4-5. I =< x + y, xy, x + z >, J =< xyz, x − z, 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...

5. S  se calculeze "restul" ³i "câturile" împ rµirii polinomului f la idealul


I , ³i s  se scrie "proba" împ rµirii.

5-1. f = x + 3y , I =< x + 2y, 2x − y >.


5-2. f = x3 y 3 , I =< x2 + y, x + y 2 >.
5-3. f = x3 + y 3 + z 3 , I =< x + y + z, x2 + y 2 + z 2 >.

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. S  se calculeze ecuaµiile implicite ale curbelor ³i suprafeµelor denite


parametric de ecuaµiile date (parametrii sunt t, u, v...).

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

7. S  se stabileasc  dac  polinomul dat este sau nu un element al radicalului


idealului dat.

7-1. f = x + y , I =< x2 , xy, y 2 >.


7-2. f = x − y , I =< x3 , x2 y, xy 2 , y 3 >.
7-3. f = x + y + z , I =< x6 , xy 2 , y 3 , z 4 + xyz >.
7-4. f = x + y + z , I =< x9 , xy 8 , y 9 , xyz >.
7-5. f = x2 + y 2 + z 2 , I =< x9 , xy 8 , z 9 , xyz >.
64 CAPITOLUL 1. TEOREME DE GEOMETRIE PE CALCULATOR

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

8. S  se determine radicalul idealului urm tor dat.

8-1. I =< x2 , xy, y 2 >.


8-2. I =< x3 , x2y, xy2, y 3 >.
8-3. I =< x4 , y 3 >.
8-4. I =< x2 + xy, y 3 >.
8-5. I =< x6 , xy 2 , y 3 , z 4 + xyz >.
8-6. I =< x9 , xy 8 , y 9 , xyz >.
8-7. I =< x9 , xy 8 , z 9 , xyz >.

Indicaµie:

LIB "primedec.lib";
ring R=0,(x,y),dp;
ideal I=x2,2xy,y2;
setring(R);
radical(I);
// -> idealul radical(I)

9. S  se calculeze intersecµia idealelor, I ∩ J pentru idealele urm toare.

9-1. I =< x2 , xy, y 2 >, J =< x3 >.


9-2. I =< x3 , x2y, xy2, y 3 >, J =< x3 , y 3 >.
9-3. I =< x4 , y 3 >, J =< x2 + y 3 >.
9-4. I =< x2 + xy, y 3 >, J =< x4 , z 2 >.
9-5. I =< x3 , xy 2 >, J =< z >.
9-6. I =< x5 , xy, xy >, J =< x, xz >.
9-7. I =< x3 + xy 2 , xyz >, J =< x + y, x + z >.
9-8. I =< x + y 2 , z >, J =< x + y, z >.
9-9. I =< x + y + z, xyz >, J =< x + y, x + z, y + z >.
1.5. PROBLEME PROPUSE 65

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

10. S  se calculeze câtul idealelor, I : J pentru idealele urm toare.

10-1. I =< x2 , xy >, J =< x3 >.


10-2. I =< x, y >, J =< x3 , y 3 >.
10-3. I =< x3 , y 3 >, J =< x, y >.
10-4. I =< x2 , y >, J =< x, z 2 >.
10-5. I =< x3 , xy, z 2 >, J =< z >.
10-6. I =< x3 , xy, z 2 >, J =< x, z >.
10-7. < x, z >, J = I =< x3 , xy, z 2 >.

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. S  se studieze dependenµa algebric  a polinoamelor date, ³i în cazul de-


pendenµei algebrice s  se determine polinomul care realizeaz  aceast  de-
pendenµ . (Reamintim c  polinoamele f1 , f2 , . . . , fk ∈ k[x1 , x2 , . . . , xn ]
sunt algebric dependente dac  exist  un polinom g ∈ K[y1 , y2 , . . . , yk ]
astfel ca g(f1 , f2 , . . . , fk ) = 0.)

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

def S=L[2]; // defineste inelul de 2+3 (x,y,f1,f2,f3) variabile


setring(S); // selecteaza acest inel
ker; // listeaza relatiile de dependenta

12. S  se demonstreze teoremele urm toare  folosind programe scrise în


Singular.

12-1. Teorema lui Pitagora.


12-2. Reciproca teoremei lui Pitagora.
12-3. Teorema în lµimilor.
12-4. Teorema medianelor.
12-5. Teorema bisectoarelor.
12-6. Teorema mediatoarelor.
12-7. Teorema bisectoarei.

13. S  se demonstreze teorema 1.4.3 de la pagina 60  ambele armaµii,


corespunz toare gurilor (B) ³i (C) respectiv.
Capitolul 2

Rezolvarea sistemelor de ecuaµii

E cuaµiile polinomiale cu o singur  variabil  se studiaz  în


cadrul unor capitole de matematic  care nu intr  în obiectivele
prezentului volum. Sisteme de ecuaµii am întâlnit îns  în capi-
tolul precedent: am v zut c  mulµimea soluµiilor unui sistem de
ecuaµii algebrice este un obiect "geometric" numit varietate an . Ecuaµiile
unui sistem pot  schimbate dup  anumite reguli cu p strarea mulµimii soluµi-
ilor sistemului, ecuaµiile (polinoamele) obµinute în acest fel dau na³tere la un
obiect algebric, numit ideal. Am v zut de asemenea c  aceast  corespondenµ 
varietate algebric   ideal, este protabil  din punctul de vedere al studiului
ambelor obiecte.
În acest capitol vom încerca s  fructic m acest studiu în direcµia studiului
rezolvabilit µii sistemelor de ecuaµii algebrice.

2.1 Sisteme de ecuaµii polinomiale

S istemele de ecuaµii pe care le vom considera în acest capitol vor 


formate din ecuaµii polinomiale. Coecienµii vor  elementele unui corp
de numere. În exemplele concrete vor  numere raµionale, numere reale, clase
de resturi modulo un num r prim, sau extensii algebrice nite ale acestora.
Forma general  a unui astfel de sistem este deci



f1 (x1 , x2 , . . . , xn ) = 0

 f (x , x , . . . , x ) = 0
2 1 2 n
(2.1)

 ...


fm (x1 , x2 , . . . , xn ) = 0

67
68 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

unde x1 , x2 , . . . , xn sunt necunoscutele sistemului iar f1 , f2 , . . . , fm ∈


K[x1 , x2 , . . . , xn ] sunt polinoame cu coecienµi în corpul de numere K.

2.1.1 Sisteme liniare


Cele mai simple sisteme de ecuaµii sunt cele liniare. În acest caz polinoamele
f1 , f2 , . . . , fm sunt liniare, deci au forma

f = a1 x1 + a2 x2 + . . . + an xn − b,

unde numerele a1 , a2 , . . . , an , b ∈ K sunt elemente ale corpului de numere K.


Teoria acestor sisteme este binecunoscut . Sunt posibile trei situaµii: sis-
temul are soluµie unic , sistemul are o innitate de soluµii (ace³tia sunt funcµii
liniare de un num r nit de parametrii), respectiv sistemul nu are soluµii.
Toate aceste situaµii sunt decise de rangul matricii coecienµilor sistemului ³i
de rangul matricii extinse , adic  rangurile matricilor:
 
a11 a12 . . . a1n
 a21 a22 . . . a2n 
 
A= . .. .. .. 
 .. . . . 
am1 am2 . . . amn
respectiv  
a11 a12 ... a1n b1
 a21 a22 ... a2n b2 
 
A= .. .. .. .. .. .
 . . . . . 
am1 am2 . . . amn bm
Reamintim c  rangul unei matrici este num rul maxim r de linii (sau coloane)
liniar independente, sau ordinul r celui mai mare minor (i.e. subdeterminant)
nenul format din elementele a r linii ³i r coloane alese din matrice.
Teoria acestor sisteme se poate formula concis în felul urm tor. Not m
r = rank(A) ³i r = rank(A). Atunci avem:

r=r sistem compatibil are soluµii


r=n sistem determinat soluµie unic 
r<n sistem nedeterminat innitate parametric  de soluµii
r<r sistem incompatibil nu are soluµii

În toate cazurile anterioare, dac  r < m atunci un num r de m − r ecuaµii


potrivit alese sunt combinaµii liniare ale celorlalte r ecuaµii, deci aceste ecuaµii
pot  eliminate din sistem f r  ca rezolvabilitatea ³i soluµiile sistemului s  e
afectate. În secµiunea de aplicaµii d m exemple pentru ecare caz.
2.1. SISTEME DE ECUA•II POLINOMIALE 69

2.1.2 Teorema lui Hilbert a zerourilor


Înainte de a intra în studiul sistemelor de ecuaµii neliniare va trebui s  contin-
u m analiza "dicµionarului" algebr -geometrie început în capitolul precedent.
S  ne aducem aminte a³adar, c  mulµimea soluµiilor unui sistem de ecuaµii
polinomiale se nume³te varietate algebric . Polinoamele care denesc sistemul
de ecuaµii denesc ³i un ideal, ³i orice polinom al acestui ideal se anuleaz  pe
punctele acestei variet µi.
Invers, dat un ideal de polinoame  conform teoremei lui Hilbert a bazei
(vezi teorema 1.1.45 de la pagina 38), mai precis a consecinµei acesteia care
urmeaz  dup  teorem   acest ideal este nit generat, deci exist  un sistem
format dintr-un num r nit de ecuaµii, ale c ror r d cini comune sunt punctele
în care se anuleaz  toate polinoamele idealului (propoziµia 1.1.47 e la pagina
40).
Am v zut de asemenea c  atât corespondenµa varietate-ideal, cât ³i core-
spondenµa ideal-varietate este antimonoton  (vezi propoziµia 1.1.48 de la pag-
ina 40).
Am demonstrat tot acolo, c  V (I(V )) = V , ³i asocierea idealului la vari-
etate este injectiv . Se pune deci problema natural , în ce m sur  o variate
an  asociat  unui ideal determin  idealul din care provine.
Avem evident I(V (I)) ⊇ I . Este u³or de v zut pe un contraexemplu simplu
c  incluziunea este strict . Într-adev r, e n = 1, I = (x2 ), deci V (I) = {0}
³i deci I(V (I)) = (x) ' I . Teorema lui Hilbert a zerourilor claric  tocmai
aceast  incluziune strict .
Înainte de a enunµa teorema lui Hilbert a zerourilor demonstr m dou  leme
care vor  folosite în demonstraµia acesteia respectiv vom demonstra ³i forma
slab  a acestei teoreme.

Lem  2.1.1. Fie I un ideal propriu în k[x1 , x2 , . . . , xn ]. Atunci exist  un ideal


maximal m $ k[x1 , x2 , . . . , xn ] care îl conµine pe I .

Demonstraµie. Într-adev r, ad ugând unul câte unul elemente ale inelului la


idealul I ³i generând astfel un ³ir strict ascendent de ideale  acesta ind nit,
la un moment dat el coincide cu întreg inelul k[x1 , x2 , . . . , xn ]. Idealul construit
în pasul anterior acestui moment este evident maximal ³i conµine idealul I .
Ideea de mai sus reluat  mai explicit arat  astfel. “tim din teorema lui
Hilbert a bazei (teorema 1.1.45 de la pagina 38) c  inelul k[x1 , x2 , . . . , xn ] este
Noetherian, ³i conform propoziµiei 1.1.44 de la pagina 38 aceasta înseamn  c 
orice ³ir de ideale ascendent este staµionar sau altfel spus orice ³ir de ideale
strict ascendent este nit.
Consider m idealul I1 = I . Acesta ind ideal propriu, exist  un ele-
ment f1 ∈ k[x1 , x2 , . . . , xn ] \ I1 . Idealul generat I2 =< f1 , I1 > este ori
70 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

î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 .

Idealele maximale ale inelelor de polinoame cu coecienµi într-un corp al-


gebric închis (e sucient s  ne limit m aici la corpul numerelor complexe) au
o form  particular . S  ne aducem aminte c  asocierea la un ideal a unei
variet µi algebrice este antimonoton : cu cât idealul este mai mare, cu atât
varietatea este mai mic . Nu este chiar atât de surprinz tor a³adar c  unui
ideal maximal îi va corespunde cea mai "mic " varietate algebric : punctul.
Dac  coordonatele acestuia sunt (a1 , a2 , . . . , an ), atunci funcµiile polinomiale
cele mai simple care se anuleaz  în acest punct sunt cele liniare. Avem a³adar
urm toarea armaµie:

Lem  2.1.2. Fie m un ideal maximal (deci propriu) în k[x1 , x2 , . . . , xn ].


Atunci exist  un punct (a1 , a2 , . . . , an ) ∈ k n astfel ca

m =< x1 − a1 , x2 − a2 , . . . , xn − an >,

adic  idealul maximal este generat de polinoamele de gradul întâi xi − ai .


Demonstraµie. Demonstraµia nu este chiar simpl . Red m aici o idee a demon-
straµiei pentru a sublinia atât plauzibilitatea rezultatului cât ³i dicultatea
demonstraµiei îns ³i. Pentru orice i, 1 ≤ i ≤ n intersecµia m ∩ k[xi ] nu este
vid , adic  idealul maximal conµine pentru ecare variabil  un polinom în
numai variabila respectiv  (aceasta este partea dicil  a demonstraµiei, vezi
[?]). Acest polinom nu poate  o constant  nenul , deoarece atunci am avea
m = k[x1 , x2 , . . . , xn ]. Corpul k ind algebric închis acest polinom de grad cel
puµin 1 se descompune în factori liniari. Dar idealul m ind maximal este ³i
prim, deci conµine unul din factorii acestei descompuneri, s  spunem factorul
(xi −ai ). Prin urmare idealul m conµine idealul < x1 −a1 , x2 −a2 , . . . , xn −an > .
Acesta îns  este un ideal maximal, deci avem egalitatea din enunµ.

Teorema lui Hilbert a zerourilor în forma sa slab  (week Nullstellensatz)


are urm torul enunµ:

Teorem  2.1.3 (Teorema lui Hilbert a zerourilor  forma slab ). Fie k un


corp algebric închis. Fie I un ideal în k[x1 , x2 , . . . , xn ], pentru care V (I) = ∅.
Atunci I = k[x1 , x2 , . . . , xn ].
Demonstraµie. Armaµia teoremei se poate reformula astfel: dac  idealul
I ⊂ k[x1 , x2 , . . . , xn ] este ideal propriu, atunci V (I) ̸= ∅. Fie m un ideal
2.1. SISTEME DE ECUA•II POLINOMIALE 71

maximal care îl conµine pe I  acesta exist  conform lemei 2.1.1. Atunci


conform lemei 2.1.2 exist  un punct (a1 , a2 , . . . , an ) ∈ k n astfel ca m =<
x1 − a1 , x2 − a2 , . . . , xn − an >. Atunci punctul (a1 , a2 , . . . , an ) este o r d cin 
comun  a polinoamelor din m deci ³i a polinoamelor din I .

În sfâr³it teorema lui Hilbert a zerourilor  dup  cum am pus la vedere în


începutul acestei secµiuni are urm torul enunµ:

Teorem  2.1.4 (Teorema lui Hilbert a zerourilor). Fie k un corp algebric


închis ³i e I un ideal propriu al inelului de polinoame k[x1 , x2 , . . . , xn ]. Atunci

I(V (I)) = I.

Demonstraµie. Incluziunea √ I(V (I)) ⊇ I este simpl . Într-adev r, dac  f i ∈ I
pentru un i ≥ 1 (i.e. f ∈ I ), atunci nu numai nu numai f i (x) = 0 pentru
orice x ∈ V (I) dar odat  cu aceasta ³i f (x) = 0, deci f ∈√I(V (I)).
Demonstr m deci incluziunea √ contrar  I(V (I)) ⊆ I . Dac  I = (0),
atunci avem I(V (I)) = I = I = (0). Fie deci I ̸= 0. Fie f ∈ I(V (I)), f ̸= 0,
³i e {g1 , g2 , . . . , gs } un sistem de generatori ai lui I . S  not m totodat 
R = k[x1 , x2 , . . . , xn ]. Consider m a nou  variabil  y . Consider m în inelul de
polinoame R[y] = k[x1 , x2 , . . . , xn , y] idealul

J =< I, yf − 1 > .

Pentru orice punct (a1 , a2 , . . . , an , b) în varietatea algebric  an  V (J) avem


bf (a1 , a2 , . . . , an ) = 1 ³i gi (a1 , a2 , . . . , an ) = 0, pentru orice i = 1, . . . , s. De aici
îns  se deduce c  (a1 , a2 , . . . , an ) ∈ V (I) ³i f (a1 , a2 , . . . , an ) ̸= 0, în contradicµie
cu alegerea lui f . Prin urmare un asemenea punct (a1 , a2 , . . . , an , b) nu exist ,
deci V (J) = ∅, ³i forma slab  a teoremei lui Hilbert a zerourilor implic  1 ∈ J .
Astfel rezult  c  exist  polinoamele h1 , h2 , . . . , hs , h ∈ R[y] astfel ca

1 = h1 · g1 + h2 · g2 + . . . + hs · gs + h · (yf − 1).

Aceast  egalitate v zut  în corpul de fracµii raµionale k(x1 , x2 , . . . , xn , y) ne


permite s  substituim y cu 1/f , de unde vom obµine


s
1
1= hi (x1 , x2 , . . . , xn , ) · gi .
f
i=1

Acum nu mai avem decât s  elimin m numitorul printr-o înmulµire corespun-


z toare ³i vom obµine c  a √ exist  o putere a lui f care este o combinaµie a
generatorilor lui I , deci f ∈ I .
72 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

2.1.3 Sisteme neliniare


Scopul principal al acestui capitol este studiul sistemelor de ecuaµii neliniare
polinomiale. A³adar în 2.1 de la pagina 67 polinoamele f vor  neliniare: vor
 sume de monoame ale variabilelor, de diverse grade.
A³a cum vom vedea în cele ce urmeaz , studiul acestor sisteme ne va con-
duce la trei alternative similare cu cele de la sisteme liniare, ³i anume: sis-
tem compatibil  cu o innitate de soluµii, sau cu un num r nit de soluµii
 respectiv sistem incompatibil, deci f r  soluµie. Interesant este îns  faptul
c  toate aceste alternative pot  recunoscute efectiv cu ajutorul algoritmului
bazei Gröbner ! S  vedem acum ³i detaliile.
Ca un rezultat imediat s  observ m c  teorema lui Hilbert a zerourilor
în forma slab  permite s  caracteriz m (inclusiv algoritmic!) rezolvabilitatea
unui sistem de ecuaµii polinomiale neliniare.

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.

Demonstraµie. Enunµul propoziµiei este doar a reformulare a teoremei lui


Hilbert a zerourilor în forma slab . Pentru cea de a doua variant , s  ob-
serv m c  dac  un ideal al unui inel conµine elementul unitate, atunci conµine
orice element, adic  coincide cu inelul, deci nu este ideal propriu (³i invers).

“tim a³adar s  decidem dac  un sistem de ecuaµii polinomial are sau nu


soluµie. În cazul în care sistemul are soluµii, se pune problema dac  num rul
acestora este nit sau innit.
S  relu m în acest scop ideile din propoziµia 1.2.17 de la pagina 52 sub
forma unui enunµ care este practic o reformulare a acesteia.

Propoziµie 2.1.6. Fie I un ideal în k[x1 , x2 , . . . , xn ], ³i e o ordonare mono-


mial  xat  în acest inel. Atunci:

• Orice f ∈ k[x1 , x2 , . . . , xn ] este congruent modulo I cu un unic polinom


r, care este o combinaµie liniar  cu coecienµi numerici ai unor monoame
din complementara mulµimii < LT(I) >, adic  din mulµimea de monoame
{xα | xα ̸∈< LT(I) >}.

• Elementele mulµimii
∑ {x α| x ̸∈< LT(I) >} sunt liniar independente mod-
α α

ulo I , adic  din α cα x = 0 mod I, rezult  cα = 0 pentru orice α.


2.1. SISTEME DE ECUA•II POLINOMIALE 73

Demonstraµie. Fie G baza Gröbner pentru I . Atunci existenµa ³i unicitatea lui


r este garantat  de propoziµia 1.2.17. Algoritmul de împ rµire a polinoamelor
cu mai multe nedeterminate  vezi condiµia de terminare a algoritmului 
asigur  faptul c  r este o combinaµie liniar  a doar monoame din mulµimea
{xα | xα ̸∈< LT(I) >}.
Partea a doua este o consecinµ  a unicit µii restului tot de la propoziµia
1.2.17.

Armaµiile conµinute în propoziµia precedent  pot  acum reinterpretate în


inelul factor k[x1 , x2 , . . . , xn ]/I . Prin urmare avem:

Corolar 2.1.7. Fie I ∈ k[x1 , x2 , . . . , xn ] un ideal. Atunci inelul factor


k[x1 , x2 , . . . , xn ]/I  ca spaµiu vectorial peste corpul k  este izomorf cu spaµiul
vectorial generat de mulµimea de monoame {xα | xα ̸∈< LT(I) >}. În particu-
lar clasa unui polinom f ∈ k[x1 , x2 , . . . , xn ]/I este reprezentat în mod standard
de restul (unic determinat) al împ rµirii lui f la baza Gröbner al lui I . Aceast 
reprezentare a claselor este compatibil  cu operaµiile de adunare ³i de înmulµire
a polinoamelor.

Î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.

2.1.4 Sisteme cu un num r nit de soluµii


Partea frumoas  a celor discutate mai sus este c  toate acestea pot  con-
vertite u³or într-un criteriu algoritmic de a decide dac  un sistem de ecuaµii
polinomiale are un num r nit de soluµii (vezi [12]).

Propoziµie 2.1.8. Fie V = V (I) o varietate an  în Cn . Fix m o ordonare


monomial  în C[x1 , x2 , . . . , xn ]. Atunci urm toarele armaµii sunt echivalente.

1. V este o mulµime nit .

2. Pentru ecare i, 1 ≤ i ≤ n, exist  un exponent mi ≥ 0, astfel ca xm


i ∈<
i

LT(I) >.

3. Fie G o baz  Gröbner pentru I . Atunci pentru ecare i, 1 ≤ i ≤ n, exist 


un mi ≥ 0, astfel ca xm
i
i
= LM(gi ), pentru un element potrivit al bazei
gi ∈ G.

4. C-spaµiul vectorial generat de de mulµimea de monoame {xα | xα ̸∈<


LT(I) >} este nit dimensional.

5. C-spaµiul vectorial C[x1 , x2 , . . . , xn ]/I este nit dimensional.


74 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

Demonstraµie. (1)⇒(2). Fie mai întâi V = ∅. Atunci 1 ∈ I (conform teo-


remei lui Hilbert a zerourilor, forma slab ), ³i putem alege mi = 0 pentru
orice 1 ≤ i ≤ n. Dac  îns  V este nevid, atunci pentru ecare coordonat  i
culegem numerele complexe (distincte) a1 , a2 , . . . , ak care apar ca ³i valori ale
coordonatei i ale punctelor din V ³i construim polinomul de o variabil 


k
f (xi ) = (xi − aj ).
j=1

Prin construcµie, polinomul f se anuleaz  în punctele lui V , deci f ∈ I(V ). Pe


baza teoremei lui Hilbert a zerourilor exist  deci m ≥ 1 astfel ca f m ∈ I . Dar
aceasta ne arat  imediat c  termenul principal al lui f m  o putere a lui xi 
este în < LT(I) >.
(2)⇒(3). Fie mi ≥ 0, astfel ca xm i
i
∈< LT(I) >. Dac  G este o baz 
Gröbner pentru I , atunci < LT(I) >=< LT(g) | g ∈ G >. Rezult  c  exist 
un polinom gi ∈ G astfel ca LT(gi ) s  divid  xm i , deci LT(gi ) este o putere a
i

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.

Putem caracteriza acum sistemele de ecuaµii cu un num r nit de soluµii.

Teorem  2.1.9. Fie I un idealul generat în C[x1 , x2 , . . . , xn ] de polinoamele


care denesc sistemul de ecuaµii 2.1. Fie G o baz  Gröbner pentru I . Sistemul
de ecuaµii are un num r nit de soluµii exact atunci când pentru ecare i exist 
un mi mi ≥ 0, astfel ca xmi = LM(gi ), pentru un polinom gi ∈ G al bazei.
i
2.2. APLICA•II  EXEMPLE IN SINGULAR 75

Demonstraµie. Rezult  direct din punctul (3) al propoziµiei anterioare 2.1.8.

Se vede în plus, c  o margine superioar  a num rului de soluµii a sistemului


de ecuaµii, este dat de produsul acestor exponenµi.
√ Menµion m c  egalitate are
loc dac  idealul I este ideal radical, adic  I = I .

2.2 Aplicaµii  Exemple in Singular

P rezent m în aceast  secµiune un num r mai mare de exemple.


Toate acestea utilizeaz  mediul de programare oferit de Singular ³i ape-
leaz  algoritmul bazei Gröbner . Vom da atât programul scris în Singular, cât
³i rezultatul rul rii acestuia.

2.2.1 Sisteme de ecuaµii liniare


D m aici câteva exemple de sisteme liniare, care ilustreaz  toate tipurile 
compatibil determinat/nedeterminat, respectiv incompatibil  al acestor sis-
teme.

Sistem de ecuaµii, 3 necunoscute, gradul 1, compatibil determinat


//
// Sistem de ecuaµii 3 necunoscute, gradul 1, coeficienti in Q
//
// are un num r finit de soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = 2x+y-2z+2,x-3y-2z-25,x-y+z-4;
ideal J = groebner(I);
J;

// scriere intr-un fisier, codificare LaTeX


LIB "latex.lib";
string file = "file.tex";
int TeXwidth = 0;
opentex(file);
texobj(file,I);
texobj(file,J);
closetex(file);
76 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

// rezolvarea efectiva a sistemului


option(redSB);
simplify(std(I),1);

// pregatire pentru un alt sistem


kill R;

Sistemul de ecuaµii iniµial:



 2x + y − z = −1
x − 3y − 2z = −6

x − y + z = 2
Sistemul de ecuaµii echivalent, care se poate rezolva, având forma "triunghi-
ular " (descris de idealul J ):

 z = 2
2y + 3z = 8

x − y + z = 2
Soluµia sistemului este:

 x = 1
y = 1

z = 2

Sistem de ecuaµii, 3 necunoscute, gradul 1, incompatibil


//
// Sistem de ecuaµii, 3 necunoscute, gradul 1, coeficienti in Q
// baza Gröbner este 1,
// nu are soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = 2x+y-2z+2,x-y-z-2,x+2y-z-5;
groebner(I);

Sistemul de ecuaµii iniµial:



 2x + y − 2z = −2
x − y − z = 2

x + 2y − z = 5
Baza Gröbner este 1. Prin urmare sistemul este incompatibil.
2.2. APLICA•II  EXEMPLE IN SINGULAR 77

Sistem de ecuaµii, 3 necunoscute, gradul 1, compatibil, nedeterminat


//
// Sistem de ecuaµii, 3 necunoscute, gradul 1, coeficienti in Q
//
// are o infinitate de soluµii, nedeterminat, z parametru
//
ring R = 0,(x,y,z),lp;
ideal I = 2x+y+2z+2,x-3y+2z-5,3x-2y+4z-3;
groebner(I);
option(redSB);
simplify(std(I),1);

Sistemul de ecuaµii iniµial:



 2x + y + 2z = −2
x − 3y + 2z = 5

3x − 2y + 4z = 3
Sistemul de ecuaµii echivalent, de forma "triunghiular ":
{
7y − 2z = −12
3x − 2y + 4z = 3
Sistemul este nedeterminat, z este parametru. Soluµia este:

 x = −8/7α − 1/7
y = 2/7α + 12/7

z = α

Sistem de ecuaµii, 3 necunoscute, gradul 1, cu 1 parametru


//
// Sistem de ecuaµii, 3 necunoscute, gradul 1, 1 parametru
// coeficienti in Q(a)
//
// are un num r finit de soluµii
//
ring R = (0,a),(x,y,z),lp;
ideal I = 2x+ay-2z+a2,ax-3y-2z-25a,x-y+az-4a+1;
groebner(I);
option(redSB);
simplify(std(I),1);
78 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

Sistemul de ecuaµii iniµial, parametric:



 2x + ay − 2z = −a2
ax + y − 2z = 2a

x − y + az = 4a − 1
Sistemul de ecuaµii echivalent:
 3
 (a − 2a + 2)z + (−3a3 + 4a2 + 12a − 2) = 0
(a3 − 2a + 2)y + (a4 − 2a2 + 22a − 4) = 0
 3
(a − 2a + 2)x + (−3a3 − 6a2 + 14a − 2) = 0
Soluµia sistemului se obµine prin împ rµirea cu coecientul necunoscutelor.

Sistem de ecuaµii, 3 necunoscute, gradul 1, 2 parametrii


//
// Sistem de ecuaµii, 3 necunoscute, gradul 1, coeficienti in Z_11
//
ring R = 11,(x,y,z),lp;
ideal I = 5x+y-2z+2,x-3y-2z-1,x-y+7z-4;
groebner(I);

Sistemul de ecuaµii iniµial, cu 2 parametrii:



 5x + y − 2z = −2
x − 3y − 2z = 1

x − y + 7z = 4
Sistemul de ecuaµii echivalent:

 z = 1
y = −3

x = 5

2.2.2 Sisteme de ecuaµii neliniare


Sistem de ecuaµii, 2 necunoscute, gradul 2
//
// Sistem de ecuaµii, 2 necunoscute, gradul 2, coeficienti in Q
// aducere la forma triunghiulara
// are soluµie
//
ring R = 0,(x,y),lp;
2.2. APLICA•II  EXEMPLE IN SINGULAR 79

ideal I = xy-x-y-22,x2+y2+3x+3y-88;
groebner(I);

Sistemul de ecuaµii iniµial:


{
xy − x − y = 22
2 2
x + 3x + y + 3y = 88

Sistemul de ecuaµii echivalent, de forma "triunghiular ":


{
y 4 + y 3 − 89y 2 + 286y + 330 = 0
23x + y 3 + 2y 2 − 87y + 176 = 0

Sistem de ecuaµii, 3 necunoscute, gradul 2


//
// Sistem de ecuaµii 3 necunoscute, gradul 2
// aducere la forma triunghiular 
//
// termenii principali ai bazei Gröbner nu conµin toate
// necunoscutele la câte o putere convenabil , prin urmare
// sistemul are o infinitate de soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = xz+xy-x+z2-2,xy2+2xz-3x+y+z-1,2z2+zy2-3z+2zy+y3-3y;
groebner(I);

Sistemul de ecuaµii dat:



 xy + xz − x + z 2 = 2
xy + 2xz − 3x + y + z
2 = 1
 3
y + y 2 z + 2yz − 3y + 2z 2 − 3z = 0

Sistemul de ecuaµii echivalent, având forma "triunghiular ":


 6
 z + 2z 5 − 7z 4 − 8z 3 + 15z 2 + 8z − 10 = 0
y + z 4 + 2z 3 − 5z 2 − 3z + 5 = 0

xz − 2x − yz + 3y + z − z − z + 1 = 0
2 2 3 2

sistemul are o innitate de soluµii.


80 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

Sistem de ecuaµii, 2 necunoscute, gradul 2, cu 1 parametru


//
// Sistem de ecuaµii 2 necunoscute, gradul 2, 1 parametru
// coeficienti in Q(a)
// aducere la forma triunghiular 
//
ring R = (0,a),(x,y),lp;
ideal I = a+axy-x+y,2+x+y+xy;
groebner(I);

Sistemul de ecuaµii iniµial, parametric:


{
axy − x + y = −a
xy + x + y = −2

Sistemul de ecuaµii echivalent, de forma "triunghiular ":


{
(a − 1)y 2 + (a − 2)y − (a + 2) = 0
−(a + 1)x − (a − 1)y − a = 0

Sistem de ecuaµii, 3 necunoscute, gradul 2, incompatibil


//
// Sistem de ecuaµii 3 necunoscute, gradul 2, coeficienti in Q
// Dac  baza Gröbner este 1, atunci ³i numai atunci
// sistemul de ecuaµii nu are soluµii
// nu are soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = x2y+4y2-17,2xy-3y2+8,xy2-5xy+1;
groebner(I);

Sistemul de ecuaµii dat:


 2
 x y + 4y 2 = 17
2xy − 3y 2 = −8

xy 2 − 5xy = −1

Baza Gröbner este 1, deci sistemul nu are soluµie.


2.2. APLICA•II  EXEMPLE IN SINGULAR 81

Sistem de ecuaµii, 3 necunoscute, gradul 2, num r nit de soluµii


//
// Sistem de ecuaµii, 3 necunoscute, gradul 2, coeficienti in Q
//
// termenii principali ai bazei Gröbner conµin toate necunoscutele
// la câte o putere convenabil ...
// sistemul are un num r finit de soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = 2xy+yz-27,3yz-2xz-25,xz-xy-4;
groebner(I);

Sistemul de ecuaµii iniµial:



 2xy + yz = 27
−2xz + 3yz = 25

−xy + xz = 4
Sistemul de ecuaµii echivalent, de form  "triunghiular ":
 2
 z − 25 = 0
5y − 3z = 0

30x − 3y z + 25y = 0
2

Sistemul are un num r nit (dou ) soluµii (2 < 3 × 2 × 3).

Sistem de ecuaµii, 3 necunoscute, gradul 3


//
// Sistem de ecuaµii, 3 necunoscute, gradul 3, coeficienti in Q
//
// are un num r finit de soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = 2x2+xy2-2z+2,x3-3zy-2z-25+z,x3-y3+xz-4;
groebner(I);

Sistemul de ecuaµii dat:



 2x2 + xy 2 − 2z + 2 = 0
x3 − 3yz − z − 25 = 0

x3 + xz − y 3 − 4 = 0
Sistemul de ecuaµii echivalent:
82 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II


 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. APLICA•II  EXEMPLE IN SINGULAR 83

Sistem de ecuaµii, 3 necunoscute, gradul 3


//
// Sistem de ecuaµii 3 necunoscute, gradul 3, coeficienti in Q
//
// are un num r finit de soluµii
//
// 27 soluµii
//
ring R = 0,(x,y,z),lp;
ideal I = x3-y3-z2+1,y3-z3-2,z3-x3+x2y-5;
groebner(I);

Sistemul de ecuaµii iniµial:



 x3 − y 3 − z 2 = −1
y3 − z3 = 2

−x + x2 y + z 3 = 5
3

Sistemul de ecuaµii echivalent, de forma "triunghiular ":



 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

În ne, sistemul are num rul cel mai mare posibil de soluµii, 27 = 3 × 3 × 3.

Sistem de ecuaµii, 3 necunoscute, gradul 4


//
// Sistem de ecuaµii 3 necunoscute, gradul 4
//
// are un num r finit de soluµii
//
// difer  doar un singur termen fata de exemplul precedent
//
ring R = 0,(x,y,z),lp;
ideal I = x3-y3-z2+1,y4-z3-2,z3-x3+x2y-5;
groebner(I);
84 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

Sistemul de ecuaµii dat:


 x3 − y 3 − z 2 = −1
y4 − z3 = 2

−x + x2 y + z 3 = 5
3

Sistemul echivalent este:

z 36 − 12z 35 + 66z 34 − 259z 33 + 999z 32 − 3488z 31 +


+9987z 30− 26924z 29 + 71037z 28 − 164116z 27 + 359443z 26 −
−780638z 25 + 1522005z 24 − 2868548z 23 + 5334964z 22 −
−9004370z 21 + 14960556z 20 − 24199784z 19 + 35734788z 18 −
−52610260z 17 + 74313032z 16 − 95421684z 15 + 124149152z 14 −
−153093600z 13 + 166826600z 12 − 193202392z 11 +
+205778048z 10 − 183765969z 9 + 197770992z 8 −
−170755968z 7 + 123037466z 6 − 137062368z 5 +
+73700992z 4 − 49132044z 3 + 65651520z 2 + 30689784 = 0

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. APLICA•II  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 ECUA•II

−269533742969156754350962756303981319687682636711424286007
8910200928419409678z 7 +
+231074135647962624531691039423213006368164894919951770035
3367450118256943706z 6 −
−122756615494727295713573371744259405539193843809357051424
9623863941654919532z 5 +
+125826176957466809520033834635107371821063108213015027455
2967957610159749828z 4 −
−792393052250852353861702261514644310895862492263359648244
917536941034339692z 3 +
+206420917632076173539312189584954666865392013564015533912
916656529156102472z 2 −
−545032840828031924370745138552277174455467026003060892852
426931006456412376z−
−477575194361137824693413533635032771708909212313290521881
85989675769736632 = 0

62991746510x + 15680280y 7 z 4 − 15384600y 7 z 3 +


+228629170y 7 z 2 − 751931950y 7 z − 148004780y 7 −
−54880980y 6 z 5 − 28475370y 6 z 4 − 952677110y 6 z 3 +
+1255557380y 6 z 2 + 333425400y 6 z + 4144133840y 6 +
+8084508y 5 z 6 + 184487376y 5 z 5 − 50366107y 5 z 4 −
−7779821886y 5 z 3 + 2109920478y 5 z 2 − 862842666y 5 z+
+27763204727y 5 − 31360560y 4 z 7 + 81363558y 4 z 6 −
−1072320383y 4 z 5 + 1684477410y 4 z 4 + 3136861377y 4 z 3 +
+3398577110y 4 z 2 − 4970014728y 4 z − 18905747224y 4 +
+109761960y 3 z 8 − 131212620y 3 z 7 + 1799884240y 3 z 6 −
−6149990770y 3 z 5 + 3373349980y 3 z 4 − 13439494530y 3 z 3 +
+23467200680y 3 z 2 − 639717540y 3 z + 25160812600y 3 −
−4042254y 2 z 9 − 113620797y 2 z 8 + 107139602y 2 z 7 +
+3297002108y 2 z 6 − 6747256212y 2 z 5 + 2933764325y 2 z 4 −
−26334378960y 2 z 3 + 22610651624y 2 z 2 − 1070851684y 2 z+
+55112549848y 2 + 15680280yz 10 − 58383186yz 9 + 490325587yz 8 −
−1805926200yz 7 + 272802136yz 6 + 683921420yz 5 +
+8931171310yz 4 + 3761772605yz 3 − 12212905339yz 2 −
−9866757747yz − 16027982146y − 54880980z 11 + 120487290z 10 −
−985148780z 9 + 4192131790z 8 − 5317148760z 7 + 12605234180z 6 −
−30092670300z 5 + 19097764840z 4 − 40862175200z 3 +
+56844430720z 2 − 544519360z + 52097682560 = 0
2.2. APLICA•II  EXEMPLE IN SINGULAR 87

Sistem de ecuaµii omogen, 2 necunoscute, gradul 2, parametric


//
// Sistem de ecuaµii 2 necunoscute, gradul 2, polinom omogen,
// 8 parametrii
// are soluµie, 4 soluµii în general
// se va rezolva o ecuaµie de gradul 4 bicuadratic 
//
ring R = (0,a,b,c,d,e,f,g,h),(x,y),lp;
ideal I = ax2+2bxy+cy2-d,ex2+2fxy+gy2-h;
groebner(I);

Sistemul de ecuaµii iniµial, omogen general de gradul 2:


{
ax2 + 2bxy + cy 2 = d
ex2 + 2f xy + gy 2 = h
Sistemul echivalent este:



 (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

Sistem de ecuaµii omogen, 2 necunoscute, gradul 3, parametric


//
// Sistem de ecuaµii 2 necunoscute, gradul 3, polinom omogen,
// 10 parametrii
// are soluµie, în general 9 soluµii
//
ring R = (0,a,b,c,d,e,f,g,h,k,l),(x,y),lp;
ideal I = ax3+bx2y+cxy2+dy3-e,fx3+gx2y+hxy2+ky3-l;
groebner(I);

Sistemul de ecuaµii iniµial, general, omogen de gradul 3:


{
ax3 + bx2 y + cxy 2 + dy 3 = e
f x3 + gx2 y + hxy 2 + ky 3 = l
Sistemul de ecuaµii echivalent este:
88 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

−(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

4a3 cef g 2 hl + a3 ceg 4 l − a3 def g 3 l + a3 e2 f 2 h3 + a3 e2 f g 3 k − a3 e2 f g 2 h2 −


2a2 b3 f ghl2 − 3a2 b2 cf 2 hl2 + 2a2 b2 cf g 2 l2 + 3a2 b2 df 2 gl2 − 3a2 b2 ef 2 gkl −
3a2 b2 ef 2 h2 l+a2 b2 ef g 2 hl−a2 bcef g 3 l+3a2 bdef 2 g 2 l−3a2 be2 f 2 g 2 k+a2 be2 f g 3 h−
a2 c3 f 3 l2 − 6a2 c2 ef 3 hl + 3a2 c2 ef 2 g 2 l − 3a2 ce2 f 3 h2 + 3a2 ce2 f 2 g 2 h − a2 ce2 f g 4 +
ab4 f 2 hl2 −ab3 cf 2 gl2 −ab3 df 3 l2 +ab3 ef 3 kl+ab3 ef 2 ghl+ab2 c2 f 3 l2 +4ab2 cef 3 hl−
ab2 cef 2 g 2 l−3ab2 def 3 gl+3ab2 e2 f 3 gk+ab2 e2 f 3 h2 −2ab2 e2 f 2 g 2 h−2abc2 ef 3 gl−
2abce2 f 3 gh + 2abce2 f 2 g 3 + 2ac3 ef 4 l + 3ac2 e2 f 4 h − 2ac2 e2 f 3 g 2 − b4 ef 3 hl +
b3 cef 3 gl + b3 def 4 l − b3 e2 f 4 k + b3 e2 f 3 gh − b2 c2 ef 4 l − b2 ce2 f 4 h − b2 ce2 f 3 g 2 +
2bc2 e2 f 4 g − c3 e2 f 5 )x −
−(a5 gk 4 − a5 h2 k 3 − a4 bf k 4 + a4 bh3 k 2 + 2a4 cf hk 3 − 3a4 cg 2 k 3 + 3a4 cgh2 k 2 −
a4 ch4 k − 4a4 df gk 3 + 3a4 df h2 k 2 + 3a4 dg 2 hk 2 − 4a4 dgh3 k + a4 dh5 +
a3 b2 g 2 k 3 − 2a3 b2 gh2 k 2 + 6a3 bcf gk 3 − 6a3 bcf h2 k 2 − 2a3 bcg 2 hk 2 + 2a3 bcgh3 k +
4a3 bdf 2 k 3 − 6a3 bdf ghk 2 + 2a3 bdf h3 k − 2a3 bdg 3 k 2 + 6a3 bdg 2 h2 k − 2a3 bdgh4 −
a3 c2 f 2 k 3 − 6a3 c2 f ghk 2 + 4a3 c2 f h3 k + 3a3 c2 g 3 k 2 − 2a3 c2 g 2 h2 k − 6a3 cdf 2 hk 2 +
6a3 cdf g 2 k 2 + 6a3 cdf gh2 k − 4a3 cdf h4 − 4a3 cdg 3 hk + 2a3 cdg 2 h3 + 6a3 d2 f 2 gk 2 −
3a3 d2 f 2 h2 k − 6a3 d2 f g 2 hk + 4a3 d2 f gh3 + a3 d2 g 4 k − a3 d2 g 3 h2 − 2a2 b3 f gk 3 +
2a2 b3 f h2 k 2 +a2 b3 g 2 hk 2 −3a2 b2 cf 2 k 3 +8a2 b2 cf ghk 2 −2a2 b2 cf h3 k−a2 b2 cg 3 k 2 −
a2 b2 cg 2 h2 k + 3a2 b2 df 2 hk 2 + 3a2 b2 df g 2 k 2 − 8a2 b2 df gh2 k + 2a2 b2 df h4 −
2a2 b2 dg 3 hk + a2 b2 dg 2 h3 + 9a2 bc2 f 2 hk 2 − 7a2 bc2 f g 2 k 2 − 2a2 bc2 f gh2 k +
2a2 bc2 g 3 hk − 12a2 bcdf 2 gk 2 + 4a2 bcdf g 2 hk + 2a2 bcdf gh3 + 2a2 bcdg 4 k −
2a2 bcdg 3 h2 − 6a2 bd2 f 3 k 2 + 12a2 bd2 f 2 ghk − 3a2 bd2 f 2 h3 − 3a2 bd2 f g 2 h2 +
a2 bd2 g 4 h + 3a2 c3 f 2 gk 2 − 6a2 c3 f 2 h2 k + 4a2 c3 f g 2 hk − a2 c3 g 4 k + 3a2 c2 df 3 k 2 +
2.2. APLICA•II  EXEMPLE IN SINGULAR 89

6a2 c2 df 2 h3 −2a2 c2 df g 3 k−4a2 c2 df g 2 h2 +a2 c2 dg 4 h+6a2 cd2 f 3 hk−3a2 cd2 f 2 g 2 k−


9a2 cd2 f 2 gh2 + 6a2 cd2 f g 3 h − a2 cd2 g 5 − 4a2 d3 f 3 gk + a2 d3 f 3 h2 + 3a2 d3 f 2 g 2 h −
a2 d3 f g 4 + ab4 f 2 k 3 − 2ab4 f ghk 2 − 6ab3 cf 2 hk 2 + 2ab3 cf g 2 k 2 + 2ab3 cf gh2 k +
2ab3 df 2 h2 k + 4ab3 df g 2 hk − 2ab3 df gh3 + 3ab2 c2 f 2 gk 2 + 4ab2 c2 f 2 h2 k −
4ab2 c2 f g 2 hk + 6ab2 cdf 3 k 2 − 4ab2 cdf 2 ghk − 4ab2 cdf 2 h3 − 4ab2 cdf g 3 k +
4ab2 cdf g 2 h2 − 6ab2 d2 f 3 hk − 3ab2 d2 f 2 g 2 k + 7ab2 d2 f 2 gh2 − 2ab2 d2 f g 3 h −
4abc3 f 3 k 2 −2abc3 f 2 ghk+2abc3 f g 3 k−6abc2 df 3 hk+8abc2 df 2 g 2 k+2abc2 df 2 gh2 −
2abc2 df g 3 h+6abcd2 f 3 gk+6abcd2 f 3 h2 −8abcd2 f 2 g 2 h+2abcd2 f g 4 +4abd3 f 4 k−
6abd3 f 3 gh + 2abd3 f 2 g 3 + 4ac4 f 3 hk − 2ac4 f 2 g 2 k − 2ac3 df 3 gk − 4ac3 df 3 h2 +
2ac3 df 2 g 2 h − 3ac2 d2 f 4 k + 6ac2 d2 f 3 gh − 2ac2 d2 f 2 g 3 − 2acd3 f 4 h + ad4 f 4 g +
b5 f 2 hk 2 − b4 cf 2 gk 2 − b4 cf 2 h2 k − b4 df 3 k 2 − 2b4 df 2 ghk + b4 df 2 h3 + b3 c2 f 3 k 2 +
2b3 c2 f 2 ghk + 4b3 cdf 3 hk + 2b3 cdf 2 g 2 k − 2b3 cdf 2 gh2 + 2b3 d2 f 3 gk − 3b3 d2 f 3 h2 +
b3 d2 f 2 g 2 h − 2b2 c3 f 3 hk − b2 c3 f 2 g 2 k − 6b2 c2 df 3 gk + 2b2 c2 df 3 h2 + b2 c2 df 2 g 2 h −
3b2 cd2 f 4 k + 2b2 cd2 f 3 gh − b2 cd2 f 2 g 3 + 3b2 d3 f 4 h − b2 d3 f 3 g 2 + 2bc4 f 3 gk +
4bc3 df 4 k − 2bc3 df 3 gh − 3bc2 d2 f 4 h + 2bc2 d2 f 3 g 2 − bd4 f 5 − c5 f 4 k + c4 df 4 h −
c3 d2 f 4 g + c2 d3 f 5 )y 7 +
+(2a5 gk 3 l − 3a5 h2 k 2 l − 2a4 bf k 3 l + 2a4 bghk 2 l + 2a4 bh3 kl + 6a4 cf hk 2 l −
5a4 cg 2 k 2 l+4a4 cgh2 kl−a4 ch4 l−6a4 df gk 2 l+6a4 df h2 kl−2a4 dgh3 l−2a4 ef gk 3 +
3a4 ef h2 k 2 + 3a4 eg 2 hk 2 − 4a4 egh3 k + a4 eh5 − 2a3 b2 f hk 2 l + a3 b2 g 2 k 2 l −
4a3 b2 gh2 kl +8a3 bcf gk 2 l −10a3 bcf h2 kl −2a3 bcg 2 hkl +2a3 bcgh3 l +6a3 bdf 2 k 2 l −
4a3 bdf ghkl + 4a3 bdg 2 h2 l + 2a3 bef 2 k 3 − 8a3 bef ghk 2 + 2a3 bef h3 k − 2a3 beg 3 k 2 +
6a3 beg 2 h2 k − 2a3 begh4 − 3a3 c2 f 2 k 2 l − 8a3 c2 f ghkl + 4a3 c2 f h3 l + 4a3 c2 g 3 kl −
2a3 c2 g 2 h2 l−12a3 cdf 2 hkl+10a3 cdf g 2 kl+2a3 cdf gh2 l−2a3 cdg 3 hl−6a3 cef 2 hk 2 +
2a3 cef g 2 k 2 + 8a3 cef gh2 k − 4a3 cef h4 − 4a3 ceg 3 hk + 2a3 ceg 2 h3 + 6a3 d2 f 2 gkl −
3a3 d2 f 2 h2 l − a3 d2 g 4 l + 6a3 def 2 gk 2 − 6a3 def 2 h2 k − 6a3 def g 2 hk + 6a3 def gh3 +
2a3 deg 4 k − 2a3 deg 3 h2 − 2a2 b3 f gk 2 l + 4a2 b3 f h2 kl + 2a2 b3 g 2 hkl − 3a2 b2 cf 2 k 2 l +
12a2 b2 cf ghkl − 2a2 b2 cf h3 l − 2a2 b2 cg 3 kl − a2 b2 cg 2 h2 l + 4a2 b2 df 2 hkl −
2a2 b2 df g 2 kl − 4a2 b2 df gh2 l − 2a2 b2 dg 3 hl + 5a2 b2 ef 2 hk 2 + 5a2 b2 ef g 2 k 2 −
8a2 b2 ef gh2 k + 2a2 b2 ef h4 − 2a2 b2 eg 3 hk + a2 b2 eg 2 h3 + 14a2 bc2 f 2 hkl −
10a2 bc2 f g 2 kl − 2a2 bc2 f gh2 l + 2a2 bc2 g 3 hl − 16a2 bcdf 2 gkl + 4a2 bcdf 2 h2 l +
2a2 bcdg 4 l − 2a2 bcef 2 gk 2 − 2a2 bcef 2 h2 k + 2a2 bcef g 2 hk + 2a2 bcef gh3 +
2a2 bceg 4 k−2a2 bceg 3 h2 −6a2 bd2 f 3 kl+2a2 bd2 f 2 ghl+4a2 bd2 f g 3 l−6a2 bdef 3 k 2 +
16a2 bdef 2 ghk − 4a2 bdef 2 h3 − 4a2 bdef g 3 k − 4a2 bdef g 2 h2 + 2a2 bdeg 4 h +
4a2 c3 f 2 gkl − 6a2 c3 f 2 h2 l + 4a2 c3 f g 2 hl − a2 c3 g 4 l + 6a2 c2 df 3 kl + 2a2 c2 df 2 ghl −
2a2 c2 df g 3 l+3a2 c2 ef 3 k 2 −4a2 c2 ef 2 ghk+6a2 c2 ef 2 h3 −4a2 c2 ef g 2 h2 +a2 c2 eg 4 h+
6a2 cd2 f 3 hl − 5a2 cd2 f 2 g 2 l + 12a2 cdef 3 hk − 4a2 cdef 2 g 2 k − 14a2 cdef 2 gh2 +
10a2 cdef g 3 h−2a2 cdeg 5 −2a2 d3 f 3 gl−6a2 d2 ef 3 gk+3a2 d2 ef 3 h2 +3a2 d2 ef 2 g 2 h−
a2 d2 ef g 4 + ab4 f 2 k 2 l − 4ab4 f ghkl − 10ab3 cf 2 hkl + 4ab3 cf g 2 kl + 2ab3 cf gh2 l +
4ab3 df 2 gkl+4ab3 df g 2 hl−4ab3 ef 2 gk 2 +2ab3 ef 2 h2 k+4ab3 ef g 2 hk−2ab3 ef gh3 +
4ab2 c2 f 2 gkl + 4ab2 c2 f 2 h2 l − 4ab2 c2 f g 2 hl + 6ab2 cdf 3 kl − 2ab2 cdf 2 ghl −
4ab2 cdf g 3 l − 4ab2 cef 2 h3 − 4ab2 cef g 3 k + 4ab2 cef g 2 h2 − 2ab2 d2 f 3 hl −
90 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

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. APLICA•II  EXEMPLE IN SINGULAR 91

Sistem de ecuaµii, coecienµi complec³i algebrici


//
// Sistem de ecuaµii cu coeficienµi Z_7(i)
//
ring R = (7,i),(x,y),lp;
minpoly = i2+1;
ideal I = (xy+(-1-i))*(x2+x+(i)*y+(-2+i)),(xy+(-1-i))*(x2+(-2+3i));
groebner(I);

Sistemul dat este (polinoame din Z7 (i)[X, Y ]):

{
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

Sistemul echivalent este:


{
−y 5 − y 4 − (i − 2)y 3 + (i − 3)y 2 − iy + (2i + 1) = 0
−(2i − 2)x + (2i + 2)y 4 + 3y 3 + (i + 2)y 2 + y − 3i = 0

Sistem de 2 ecuaµii, 2 necunoscute, coecienµi complec³i algebrici


din Q(i)
//
// Sistem de 2 ecuatii cu 2 necunoscute,
// coeficienti complecsi, Q(i)
//
// exista solutie
//
ring R = (0,i),(x,y),lp;
minpoly = i2+1;
ideal I = (xy+(-1-i))*(x2+x+(i)*y+(-2+i)),(xy+(-1-i))*(x2+(-2+3i));
groebner(I);

Sistemul de ecuaµii dat este (coecienµi din Q(i)):

{
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

Sistemul echivalent este:


92 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

 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

2.3 Rezolvarea numeric  a unui sistem nepolinomial


În aceast  secµiune facem o incursiune scurt  în afara domeniului variet µilor
algebrice. Tot ce discut m aici are doar o valoare informativ  ³i teoria prezen-
tat  nu va  fundamentat  în toate am nuntele sale. Practic accentul cade pe
cele dou  exemple, care ilustreaz  sucient de clar ideea expus .
Pentru sistemele de ecuaµii neliniare nepolinomiale nu exist  metode de
rezolvare globale (cel puµin dup  cuno³tinµele autorului prezentei c rµi). Tot
ce se poate face pentru astfel de sisteme este rezolvarea lor local . Mai precis,
pentru astfel de sisteme dispunem de metode iterative (metode de tip Newton-
Kantorovich), care construiesc ³iruri de aproximaµii pentru soluµii care se a 
în "raza de atracµie" a punctului de start al iteraµiei. Repetând construirea
acestor ³iruri cu alte ³i alte puncte de start, obµinem  eventual  alte soluµii
ale sistemului.
Cum trebuie ales punctul de start al iteraµiei? Câte soluµii are un sistem
dat într-un domeniu nit dat? La aceste întreb ri nu avem r spunsuri generale.
În cele de mai jos vom ar ta prin exemple concrete c  teoria bazelor Gröb-
ner poate  aplicat  ³i în acest context, astfel ca vom putea da r spunsuri re-
zonabile ³i la aceste întreb ri. Ideea de baz  este simpl : aproxim m sistemul
neliniar dat pe un domeniu, cu sisteme de ecuaµii polinomiale pe subdomenii
convenabil alese. Rezolv m sistemele neliniare polinomiale cu metoda bazei
Gröbner , ³i folosim soluµiile g site ca puncte de start pentru metode iterative
clasice pentru a obµine soluµiile numerice cu precizia dorit .
Formal avem deci urm toarea problem . Fie sistemul de ecuaµii neliniar:

 f (x , x , . . . , xn ) = 0
 1 1 2

 f (x , x , . . . , x ) = 0
2 1 2 n

 . ..


fn (x1 , x2 , . . . , xn ) = 0
unde f1 , . . . , fn sunt funcµii denite ³i diferenµiabile pe un domeniu dreptunghi-
ular D ⊂ Rn .
Problem  2.3.1. Presupunem c  sistemul de ecuaµii de mai sus are un num r
nit de soluµii în domeniul D. Presupunem de asemenea c  matricea Iacobi
2.3. REZOLVAREA NUMERIC€ A UNUI SISTEM NEPOLINOMIAL 93

F = (f1 , . . . , fn ) este nesingular  în aceste puncte de r d cin . S  se g seasc 


toate (!) aceste puncte cu o precizie dat .

2.3.1 Exemplu cu aproximare Bernstein


Metoda de rezolvare numeric  propus  în [23] are urm torii pa³i:
Pasul 1. Se aproximeaz  funcµiile fi cu polinoame (Bernstein [37] sau
spline).

Teorem  2.3.2. Fie domeniul D = nk=1 [0, 1] ³i e Bm operatorul Bernstein
denit de


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

unde x = (x1 , x2 , . . . , xn ) ∈ D ³i f este o funcµie continu  pe D.


Atunci limm→∞ ||Bm f − f ||∞ = 0.
Aproxim m fi cu Bm fi pentru orice i = 1, . . . , n.
Pasul 2. Se aplic  algoritmul de calcul al bazei Gröbner sistemului poli-
nomial de ecuaµii Bm fi = 0, i = 1, . . . , n pentru a obµine sistemul echivalent
"triunghiular".
Pasul 3. Se aplic  o metod  numeric  standard pentru rezolvarea ecuaµiei
polinomiale cu o singur  necunoscut . (În exemplele care vor urma am utilizat
metoda Bairstow's ([36]), dar sistemele CAS dispun de metode incorporate
pentru rezolvarea numeric  a sistemelor algebrice neliniare). Se reµin soluµiile
reale din intervalul [0, 1]. Se calculeaz  toate soluµiile sistemului triunghiular
din domeniul D.
Pasul 4. Se raneaz  soluµiile g site în pasul anterior folosindu-se aceste
valori ca puncte de start pentru metode numerice iterative standard apli-
cate sistemului iniµial. (În exemplele de mai jos am folosit metoda Newton-
Kantorovich).
Exemplu 2.3.3. S  se g seasc  toate soluµiile din [0, 1] × [0, 1] × [0, 1] ale
sistemului de ecuaµii:



z = cos(x + y)

z = x2 + y 2


z = x + y − 1
4
94 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

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

Soluµiile sistemului algebric sunt:


Pasul 3.

x1 = 0.1, y1 = 0.777, z1 = 0.627

x2 = 0.81, y2 = 0.084, z2 = 0.644


Pasul 4.

x1 = 0.093, y1 = 0.791, z1 = 0.634

x2 = 0.791, y2 = 0.093, z2 = 0.634


2.3. REZOLVAREA NUMERIC€ A UNUI SISTEM NEPOLINOMIAL 95

2.3.2 Exemplu cu aproximare spline


Presupunem de la început n = 2. De asemenea presupunem c  domeniul D este
de forma [a, b] × [c, d]. Alegem nodurile echidistante a = x0 < x1 < . . . xN = b
³i c = y0 < y1 < . . . yM = d. Not m Dij = [xi , xi+1 ] × [yj , yj+1 ] ³i

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:

(1) pe dreptunghiul Dij avem



S(f )(x, y) = Si,j (f )(x, y) = Aα,β
i,j (x − xi ) (y − yj )
α β

α,β=0,α+β≤4

(2) în nodurile (xi , yj ), i = 0, 1, . . . , N , j = 0, 1, . . . , M avem

(r,s)
Dr,s S(f )(xi , yj ) = Dr,s f (xi , yj ) := fij

unde r + s ≤ 1 ³i Dr,s este operatorul de derivare parµial .

S  reiter m teorema 2.3 din [29] (se poate consulta ³i [11] sau [34]).

Teorem  2.3.4. Dac  A2,2


i,j = 0 atunci exist  o funcµie spline bicubic  S(f )
care satisface condiµiile (1) ³i (2) pe domeniul D.

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 ECUA•II

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

Φ1 (t) = (1 − t)2 (1 + 2t),


Φ2 (t) = t2 (3 − 2t),
Φ3 (t) = t(1 − t)2 ,
Φ4 (t) = −t2 (1 − t).

Fiecare funcµie f1 ³i f2 poate  aproximat  deci cu astfel de funcµii spline,


a³adar în locul sistemului neliniar nepolinomial

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,

unde x = (x1 , x2 ) ∈ Di,j pentru ecare subdomeniu Dij , i = 0, 1, . . . , N − 1 ³i


j = 0, 1, . . . , M − 1.
Metoda din [22] are urm torii pa³i:
Pasul 1. Se aproximeaz  funcµiile diferenµiabile fi cu funcµii spline, ca mai
sus.
Pasul 2. Se aplic  algoritmul bazei Gröbner pentru cele N · M sisteme
polinomiale
{
Si,j (f1 )(x1 , x2 ) = 0
Si,j (f2 )(x1 , x2 ) = 0,
de unde pentru ecare subdomeniu Dij , i = 0, 1, . . . , N −1 ³i j = 0, 1, . . . , M −1
se obµine un sistem "triunghiular" echivalent.
2.3. REZOLVAREA NUMERIC€ A UNUI SISTEM NEPOLINOMIAL 97

Pasul 3. Se rezolv  numeric aceste sisteme cu metode standard. Se reµin


soluµiile reale din subdomenii.
Pasul 4. Soluµiile aproximative de lapasul anterior se consider  ca puncte
de start pentru metode iterative numerice standard de reyolvare a sistemelor
neliniare.
S  relu m exemplul anterior în acest context.

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

Pentru i = 0 ³i j = 1, sau D0,1 = [0, 0.333] × [0.333, 0.666] avem



 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

Pentru i = 0 ³i j = 2, sau D0,2 = [0, 0.333] × [0.666, 1] avem



 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 ECUA•II

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.

2.4 Probleme propuse


1. S  se rezolve sistemele de ecuaµii cu coecienµi în corpul numerelor
raµionale, Q.

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. S  se reyolve sistemele neliniare cu coecienµi complec³i.

2-1. {
2x2 − 3y 2 = −1
x − 2y = −1
2-2. {
2x − 3y = −1
x2 − 2y 2 = −1
100 CAPITOLUL 2. REZOLVAREA SISTEMELOR DE ECUA•II

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

Coduri corectoare de erori

N umerele raµionale, numerele reale ³i numerele complexe, îm-


preun  cu operaµiile de adunare ³i înmulµire între ele, având
propriet µi algebrice naturale obi³nuite constituie exemple de
structuri numite corpuri. Corpul numerelor reale este o ex-
tindere a corpului numerelor raµionale, iar corpul numerelor complexe este o
extindere a acestuia din urm . În acest capitol vom vedea mai în detaliu as-
pectele specice ale extinderilor corpurilor nite. Câteva dintre deniµiile ³i
rezultatele întâlnite deja sunt reiterate ³i în acest context, pentru a asigura o
relativ  independenµ  a lecturii capitolelor.
Mai înainte îns   a³a cum am mai procedat ³i în alte capitole ale acestei
c rµi  s  începem cu sfâr³itul. S  vedem ³i aici o problem  sucient de concret 
³i incitant , pentru a motiva efortul îndreptat pentru înfrângerea dicult µilor
parcurgerii ³i înµelegerii construcµiilor teoretice care vor urma.
S  presupunem c  dorim s  transmitem un mesaj printr-un canal de co-
municaµie, care nu poate garanta certitudinea nealter rii mesajului nostru. Ca
orice sistem technic, el poate altera mesajul, e ³i într-o m sur  mic . Dac  la
receptor sose³te mesajul "gre³eal  de tipar", mesajul corect poate  reconsti-
tuit eventual din context, cu condiµia ca acest context s  nu e o examinare la
distanµ  a unor studenµi la materia numit  Ortograa limbii române. Contex-
tul poate s  lipseasc  îns  cu des vâr³ire, spre exemplu în cazul unei secvenµe
de mesaj codicat de genul "AGECGKTSDTMVKUFTEWDXTFSAKL", în
care literele semnic  niveluri de gri, ale unei porµiuni de imagine transmis 
de o sond  spaµial  înregistrat  de pe suprafaµa unei planete.
Pretenµia noastr  este cu alte cuvinte de a codica informaµia util  astfel
încât, dac  în cursul transmiterii se produc unele alter ri, acestea s  poat  
detectate, ³i  de ce nu  ³i corectate! Este posibil oare a³a ceva? Vom ar ta
pe un exemplu concret, c  este posibil!

101
102 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

3.1 Un exemplu concret

S   presupunem c  dorim s  transmitem o informaµie util  constând din


patru cifre binare 0 sau 1 a c ror semnicaµie nu este important  pentru
noi, ele putînd reprezenta orice informaµie convenit  ca ind inteligent  ³i
inteligibil  între cei doi parteneri ai transmisiei, respectiv expeditorul/cel care
transmite ³i destinatarul/cel care recepteaz .
Fie acest mesaj spre exemplu

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

Dac  privim mesajul nostru de patru cifre binare ca un vector


( )
u= 1 0 1 1 ,

atunci putem calcula produsul (matricial) v = u · G  calculat dup  regulile


aritmeticii (mod 2)  ³i astfel obµinem un ³ir de 7 cifre binare:

( )
v= 1 0 1 1 0 1 0 .

Acesta va  mesajul pe care îl vom transmite. Mesajul preparat astfel este


capabil de "minuni": dac  oricare din cele 7 cifre este recepµionat eronat,
adic  se recepteaz  1 în loc de 0 sau 0 în loc de 1 undeva în acest  secvenµ ,
atunci nu numai c  faptul alter rii poate  descoperit, dar mai mult, putem
specica ³i locul exact al alter rii, ³i astfel eroarea poate  corectat !
S  simul m o eroare. S  presupunem spre exemplu c  receptorul a înregis-
trat mesajul sub forma

( )
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

pe care o vom numi matrice de control al parit µii , sau matrice de vericare


a parit µii . Cu ajutorul acesteia vom detecta eroarea, dac  ea s-a produs.
Privim acum mesajul recepµionat v ca un vector, astfel
 
1
 0 
 
 1 
 
v =
t
 0 

 0 
 
 1 
0
³i îl înmulµim cu matricea H . S  not m rezultatul înmulµirii cu s = H · v t .
Acesta este
 
1
s =  0 .
0
Tot ce avem de f cut acum este s  citim rezultatul de sus în jos în baza doi, ³i
astfel obµinem 100 adic  num rul 4. Cifra a patra este eronat !
Cititorul mai puµin credul poate verica faptul c , oricare cifr  ar  fost
alterat  din cele 7 cifre, procedeul funcµioneaz , matricea detectoare e bun  în
acest scop.
Dup  corectarea erorii mesajul corect este
( )
v= 1 0 1 1 0 1 0 .
Acum putem ignora cele 3 cifre adiµionale, ³i obµinem mesajul original nealterat
notat cu u.
S  observ m, c  procedeul nostru poate detecta ³i corecta cel mult o eroare
de o cifr  binar .
Se nasc în mod natural urm toarele întreb ri incitante: cum pot  constru-
ite astfel de matrici-minune G ³i H ? Sau ³i mai fundamental: pe ce fundament
teoretic pot  inventate astfel de mecanisme de detectare ³i corectare a eror-
ilor? Dezideratul este evident de a obµine o capacitate de detectare ³i corectare
cât mai mare cu un num r de cifre adiµionale cât mai mic posibil.
104 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Toate acestea pot  fundamentate ³i realizate cu ajutorul extensiei concep-


tului de num r. O nou  mulµime de numere utilizabil  minunat în acest scop
se nume³te... corp nit! În secµiunea 3.2 de pe pagina 108 începem studiul
sistematic al acestora.
Exerciµii 3.1.1.
1. Scrieµi un program în GAP pentru efectuarea tuturor calculelor de mai
sus.

2. Testaµi ³i alte mesaje utile, respectiv simulaµi erori în diverse poziµii,


efectuînd toate calculele cu ajutorului acestui program.

3. Daµi un r spuns argumentat la întrebarea: Dac  în mesajul recepµionat


nu se detecteaz  eroare, putem  siguri c  nu s-a produs nici o eroare în
cursul transmisiei?

Problem  3.1.2. Încercaµi s  daµi o explicaµie, de ce funcµioneaz  corect acest


mecanism de detectare ³i corectare a erorilor de cel mult o cifr  binar  (f r 
s  citiµi mai întâi indicaµia de mai jos)!
Indicaµie Observaµi faptul c  matricea H are drept coloane numerele de la 1
la 7 reprezentate în baza 2. C utaµi o analogie între modul de determinare a
cifrei binare eronate ³i o soluµie posibil  dat  problemei de mai jos.
Problem  3.1.3. Între 8 monezi  care în aparenµ  par identice  exist 
b nuiala, c  una este fals , ea, dac  exist , are o greutate puµin mai mare decât
o moned  veritabil . S  presupunem c  dispunem de un cântar cu braµe egale
cu care putem efectua doar m sur tori de comparaµie a greut µilor. Întrebarea
este: sunt oare suciente 3 cânt riri potrivite pentru a detecta existenµa unei
monezi false, ³i a chiar a identic rii ei, în caz c  exist ?

O soluµie posibil  este urm toarea: numerot m monezile cu numerele de


la 0 la 7, apoi efectu m 3 cânt riri, comparând gruprurile de monezi 0,1,2,3 ³i
4,5,6,7, apoi 0,1,4,5 ³i 2,3,6,7, iar în nal 0,2,4,6 ³i 1,3,5,7. Cântarul r mâne în
echilibru dac  nu avem moned  fals . Îns  în cazul unei monezi false, braµul
care coboar  al cântarului indic  pe rând cifrele binare ale num rului de ordine
al monezii false: înclinare la stânga înseamn  0, la dreapta înseamn  1.

0,1,2,3 4,5,6,7 0,1,4,5 2,3,6,7 0,2,4,6 1,3,5,7


0→ 000 4→ 100 0 → 0 00 2→ 010 0→ 000 1→ 001
1→ 001 5→ 101 1 → 0 01 3→ 011 2→ 010 3→ 011
2→ 010 6→ 110 4 → 1 00 6→ 110 4→ 100 5→ 101
3→ 011 7→ 111 5 → 1 01 7→ 111 6→ 110 7→ 111
3.1. UN EXEMPLU CONCRET 105

3.1.1 O prim  utilizare a programului GAP în coduri


“tim deja c  mediul de programare GAP este interpretor, adic  a³teapt 
comenzi pe un prompter, pe care le execut  imediat. Un set de instrucµi-
uni succesive poate  salvat într-un ³ier, ³i executat la o singur  comand ,
prin înc rcarea ³ierului.
S  facem o introducere brusc  în programarea elementar  a pachetului
GAP, prin intermediul prezent rii unui exemplu de program surs  comentat,
scris în acest mediu. Programul de mai jos scris în limbajul de programare
oferit de GAP este cu siguranµ  u³or de descifrat. Numele ³ierului este progr.g
³i va  înc rcat ³i executat la comanda Read("progr.g"); tastat pe prompterul
gap>
dup  ce acest ³ier a fost copiat în catalogul \bin existent în catalogul-
r d cin  în care a fost instalat programul GAP.
##################################################################
##
## progr.g
## program în GAP
## Un prim exemplu de utilizare a programului GAP în coduri
##
##################################################################

##################################################################
## 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)
##
##################################################################

## Definiµia corpului finit Z(2)


F:=GF(2);

## Definirea matricii de generare (codificare)


G:=[[ 1, 0, 0, 0, 0, 1, 1],
[ 0, 1, 0, 0, 1, 0, 1],
[ 0, 0, 1, 0, 1, 1, 0],
[ 0, 0, 0, 1, 1, 1, 1]]*One(F);

## ...³i a matricii control al parit µii (detectare a erorii)


H:=[[ 0, 0, 0, 1, 1, 1, 1],
[ 0, 1, 1, 0, 0, 1, 1],
[ 1, 0, 1, 0, 1, 0, 1]]*One(F);

## Mesajul util
u:=[[1, 0, 1, 1]]*One(F);

## Mesajul transmis
v:=u*G;

Print("\n G - matricea de generare a codului este \n\n");


Display(G);

Print("\n H - matricea detectoare de erori este \n\n");


Display(H);
3.1. UN EXEMPLU CONCRET 107

Print("\n u - mesajul util \n\n");


Display(u);

Print("\n v - mesajul codificat ³i transmis \n\n");


Display(v);

## ! Simularea unei erori


## aici se poate modifica, pentru a testa deverse erori
v[1][4]:=1 - v[1][4];
Print("\n simularea erorii ³i \n v - mesajul recepµionat \n\n");
Display(v);

## 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);

Print("\n ...corectarea erorii, \n\n");


if k > 0 then
v[1][k]:=1-v[1][k];
else
Print("\n Mesajul probabil nu conµine erori \n\n");
fi;
Display(v);

## Reconstituire mesajului original, primele 4 cifre


u:=v{[1]}{[1,2,3,4]};
Print("\n ...³i în sfâr³it mesajul original este \n\n");
Display(u);
##################################################################
108 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

3.2 Corpuri nite

E xemple de corpuri finite sunt bine cunoscute: inelele claselor de res-


turi modulo p, unde p este un num r prim sunt de fapt corpuri nite cu p
elemente. Acesta se datoreaz  faptului c  clasele de resturi nenule în acest caz
sunt inversabile. Într-adev r, dac  a este nenul ³i a < p, atunci a este relativ
prim cu p, deci cel mai mare divizor comun al lor este (a, p) = 1. Algorit-
mul extins al lui Euclid asigur  existenµa a dou  numere întregi b, c, astfel ca
ab + pc = 1. Trecînd la clase de resturi, rezult  ab = 1 mod (p), adic  a este
inversabil.
Concluzia este c  "numerele" dintr-o clas  de resturi de modul prim sunt
la fel de potrivite ca numerele raµionale, reale sau complexe în orice context în
care avem de efectuat numai cele patru operaµii de baz : adunarea, sc derea,
înmulµirea ³i împ rµirea. (Atenµie, analogia funcµioneaz  strict pân  la cele pa-
tru operaµii amintite, ne lipse³te spre exemplu ordonarea numerelor, obi³nuit 
³i specic  spre exemplu la numerele raµionale!)
Este oare lista Zp unde p este un num r prim, lista complet  a corpurilor
nite? R spunsul la aceast  întrebare este NU: exist  ³i corpuri cu alt num r
de elemente, spre exemplu 4, 9, 8, 16 etc. (dar nu ³i cu 6 elemente!).
În subsecµiunea care urmeaz  începem aceste investigaµii, tot în spiritul "cu
dicultatea faµ -în-faµ ", adic  s  vedem mai întâi fenomenul care st  la baza
construcµiei corpurilor nite.

3.2.1 O problem  de concurs în informatic 


La un concurs înformatic autorul acestei c rµi a propus urm toarea problem .

Problem  3.2.1. Se d  mulµimea formal innit 

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

care afecteaz   ³i probabil simplic   aceste expresii algebrice.


Se cere scrierea unui program  în orice limbaj care v  st  la dispoziµie  care
s  calculeze:

• cea mai mic  valoare pozitiv  a lui n pentru care an = 1, conform acestor
reguli de calcul (a0 = 1 prin convenµie), ³i

• a22 + a43 , ca un element al mulµimii iniµiale F , ³i

• r dacinile din F ale ecuaµiei x2 + a · x + a2 = 0.

Înainte de a începe discuµia soluµiei acestei probleme, se impun câteva ob-


servaµii preliminare.
Observaµii 3.2.2.
• Numerele 0 ³i 1 genereaz  prin adunare ³i sc dere toate numerele întregi
(³i numai acestea). Spre exemplu 1 + 1 = 2, 1 + 1 + 1 = 3, etc., respectiv
0 − 1 = −1, −1 − 1 = −2, etc.

• În prima instanµ  operaµiile de adunare ³i înmulµire aplicate elementelor


mulµimii F conduc la expresii polinomiale de tipul

c0 + c1 · a + c2 · a2 + . . . + ak · ak , (3.1)

unde ci sunt numere întregi.

• Dac  µinem cont de ipoteza special  legat  de adunarea lui 1, atunci


cercul gener rii numerelor se închide la 0 ³i 1. Acestea sunt singurele
numere întregi posibile. Practic numerele vor  elemente ale clasei de
resturi modulo 2, dac  µinem cont ³i de structura dat  de adunarea ³i
înmulµirea acestora.

• Apriori, nu este evident câtu³i de puµin, dac  operaµia de adunare în


mulµimea F este sau nu operaµie intern  a mulµimii F . Ea este intern 
în mulµimea generat  de F cu operaµiile de adunare µi înmulµire, adic 
mulµimea expresiilor 3.1 (polinoamelor cu nedeterminata a, ³i coecienµi
numere întregi sau clase de resturi modulo 2).

• Puterile lui a se pot transforma în polinoame ale nedeterminatei a. Spre


exemplu a6 = a + 1, a7 = a6 · a = (a + 1) · a = a2 + a, a8 = a3 + a2 ,
a9 = a4 + a3 , a10 = a5 + a4 , etc.

• Dac  facem transform rile pân  la cap t, gradele acestor polinoame nu


dep ³esc 5. Spre exemplu a11 = a6 + a5 = a + 1 + a5 = a5 + a + 1, etc.
110 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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.

• În particular, mulµimea F este nit .

Se pun acum în mod natural urm toarele întreb ri.

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?

• Este mulµimea F  cu elementele rescrise ca polinoame de grad cel mult


5  submulµime proprie a mulµimii tuturor polinoamelor 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.

S  trecem la rezolvarea problemei 3.2.1 de pe pagina 108. Calcul m puterile


succesive ale lui a folosind ³i regulile speciale de calcul. Obµinem urm torul
tabel, care conrm  observaµiile de mai sus.

an exprimarea polinomial  vectorul coecienµilor


a0 1 (1, 0, 0, 0, 0, 0)
a1 a (0, 1, 0, 0, 0, 0)
a2 a2 (0, 0, 1, 0, 0, 0)
... ... ...
a6 a+1 (1, 1, 0, 0, 0, 0)
a7 a2 + a (0, 1, 1, 0, 0, 0)
... ... ...
a22 5 4
a +a +a +1 2 (1, 0, 1, 0, 1, 1)
... ... ...
a43 5 4 2
a +a +a +a+1 (1, 1, 1, 0, 1, 1)
... ... ...
a61 a5 + a4 + 1 (1, 0, 0, 0, 1, 1)
a62 a5 + 1 (1, 0, 0, 0, 0, 1)
a63 1 (1, 0, 0, 0, 0, 0)
3.2. CORPURI FINITE 111

Tabelul este nit, i.e. puterile lui a se repet  periodic!


Ce se mai poate aa din acest tabel? Iat  câteva fapte care se pot citi
direct din acest tabel (din tabelul complet, evident).

• Prima coloan  poate  utilizat  pentru a efectua u³or înmulµirile. În-


mulµirile se reduc evident la adunarea ( mod 63) a exponenµilor.

• Coloana a treia poate  utilizat  pentru a efectua u³or adun rile. Acestea


se reduc de fapt la adunarea ( mod 2) a vectorilor.

• Propriet µi structurale pot  citite de asemenea din acest tabel: toate


polinoamele (nenule) cu coecienµi în Z2 de grad mai mic decât 6 apar
în acest tabel!

 Prin urmare r spunsul la întrebarea 3.2.4 de pe pagina 110 este DA:


toate cele 63 de polinoame nenule de grad mai mic decât 6 apar ca
puteri ale lui a!
 iar r spunsul la întrebarea 3.2.4 de pe pagina 110 este NU: mulµimea
F coincide ³i ea cu toate aceste polinoame!

• 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)

Într-un mediu de programare adecvat întocmirea acestui tabel este simpl .


Iat  o variant  scris  în Singular, apoi o variant  scris  în GAP.

link l=":a outfile"; // fi³ier outfile mod "append"


ring F=(2,a),x,dp; // inel polinoame (Z_2[a])[x]
minpoly=a^6+a+1; // "polinomul minimal" pt. "a"
for( int i=0; i <= 63; i=i+1 ) // ciclu, exponentul lui "a"
{ // string
write(l,"a^"+string(i)+" = "+string(a^i)); // - a^i -
} // outfile
close(l); // închide fi³ierul outfile

Iat  ³i rezultatul rul rii programului scris în Singular, aat în ³ierul numit


"outle". Acesta se poate deschide cu orice editor de texte.
112 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

a^0 = 1 a^32 = (a3+1)


a^1 = (a) a^33 = (a4+a)
a^2 = (a2) a^34 = (a5+a2)
a^3 = (a3) a^35 = (a3+a+1)
a^4 = (a4) a^36 = (a4+a2+a)
a^5 = (a5) a^37 = (a5+a3+a2)
a^6 = (a+1) a^38 = (a4+a3+a+1)
a^7 = (a2+a) a^39 = (a5+a4+a2+a)
a^8 = (a3+a2) a^40 = (a5+a3+a2+a+1)
a^9 = (a4+a3) a^41 = (a4+a3+a2+1)
a^10 = (a5+a4) a^42 = (a5+a4+a3+a)
a^11 = (a5+a+1) a^43 = (a5+a4+a2+a+1)
a^12 = (a2+1) a^44 = (a5+a3+a2+1)
a^13 = (a3+a) a^45 = (a4+a3+1)
a^14 = (a4+a2) a^46 = (a5+a4+a)
a^15 = (a5+a3) a^47 = (a5+a2+a+1)
a^16 = (a4+a+1) a^48 = (a3+a2+1)
a^17 = (a5+a2+a) a^49 = (a4+a3+a)
a^18 = (a3+a2+a+1) a^50 = (a5+a4+a2)
a^19 = (a4+a3+a2+a) a^51 = (a5+a3+a+1)
a^20 = (a5+a4+a3+a2) a^52 = (a4+a2+1)
a^21 = (a5+a4+a3+a+1) a^53 = (a5+a3+a)
a^22 = (a5+a4+a2+1) a^54 = (a4+a2+a+1)
a^23 = (a5+a3+1) a^55 = (a5+a3+a2+a)
a^24 = (a4+1) a^56 = (a4+a3+a2+a+1)
a^25 = (a5+a) a^57 = (a5+a4+a3+a2+a)
a^26 = (a2+a+1) a^58 = (a5+a4+a3+a2+a+1)
a^27 = (a3+a2+a) a^59 = (a5+a4+a3+a2+1)
a^28 = (a4+a3+a2) a^60 = (a5+a4+a3+1)
a^29 = (a5+a4+a3) a^61 = (a5+a4+1)
a^30 = (a5+a4+a+1) a^62 = (a5+1)
a^31 = (a5+a2+1) a^63 = 1

OutputLogTo("logfile"); // define³te fi³ier "logfile"


a:=Indeterminate(GF(2),"a");; // variabila "a", peste Z_2
f:=a^6+a+1;; // define³te poinomul f
for i in [0..63] do // ciclu, exponentul lui "a"
elem:=a^i mod f; // calculeaz  a^i mod f
Display(elem); // afi³eaz 
od; // (scrie ³i în fi³ier)
OutputLogTo(); // închide fi³ierul "logfile"
3.2. CORPURI FINITE 113

Rezultatul rul rii variantei programului de listare în mediul de progra-


mare GAP, aat în sierul numit "logle" este reprodus mai jos. (Constanta
"Z(2)^0" din acest ³ier, preferat  de GAP, trebuie înlocuit  cu varianta mai
puµin exact  dar mult mai prietenoas  "1".)

Z(2)^0 = Z(2)^0 a^32 = a^3+Z(2)^0


a = a a^33 = a^4+a
a^2 = a^2 a^34 = a^5+a^2
a^3 = a^3 a^35 = a^3+a+Z(2)^0
a^4 = a^4 a^36 = a^4+a^2+a
a^5 = a^5 a^37 = a^5+a^3+a^2
a^6 = a+Z(2)^0 a^38 = a^4+a^3+a+Z(2)^0
a^7 = a^2+a a^39 = a^5+a^4+a^2+a
a^8 = a^3+a^2 a^40 = a^5+a^3+a^2+a+Z(2)^0
a^9 = a^4+a^3 a^41 = a^4+a^3+a^2+Z(2)^0
a^10 = a^5+a^4 a^42 = a^5+a^4+a^3+a
a^11 = a^5+a+Z(2)^0 a^43 = a^5+a^4+a^2+a+Z(2)^0
a^12 = a^2+Z(2)^0 a^44 = a^5+a^3+a^2+Z(2)^0
a^13 = a^3+a a^45 = a^4+a^3+Z(2)^0
a^14 = a^4+a^2 a^46 = a^5+a^4+a
a^15 = a^5+a^3 a^47 = a^5+a^2+a+Z(2)^0
a^16 = a^4+a+Z(2)^0 a^48 = a^3+a^2+Z(2)^0
a^17 = a^5+a^2+a a^49 = a^4+a^3+a
a^18 = a^3+a^2+a+Z(2)^0 a^50 = a^5+a^4+a^2
a^19 = a^4+a^3+a^2+a a^51 = a^5+a^3+a+Z(2)^0
a^20 = a^5+a^4+a^3+a^2 a^52 = a^4+a^2+Z(2)^0
a^21 = a^5+a^4+a^3+a+Z(2)^0 a^53 = a^5+a^3+a
a^22 = a^5+a^4+a^2+Z(2)^0 a^54 = a^4+a^2+a+Z(2)^0
a^23 = a^5+a^3+Z(2)^0 a^55 = a^5+a^3+a^2+a
a^24 = a^4+Z(2)^0 a^56 = a^4+a^3+a^2+a+Z(2)^0
a^25 = a^5+a a^57 = a^5+a^4+a^3+a^2+a
a^26 = a^2+a+Z(2)^0 a^58 = a^5+a^4+a^3+a^2+a+Z(2)^0
a^27 = a^3+a^2+a a^59 = a^5+a^4+a^3+a^2+Z(2)^0
a^28 = a^4+a^3+a^2 a^60 = a^5+a^4+a^3+Z(2)^0
a^29 = a^5+a^4+a^3 a^61 = a^5+a^4+Z(2)^0
a^30 = a^5+a^4+a+Z(2)^0 a^62 = a^5+Z(2)^0
a^31 = a^5+a^2+Z(2)^0 a^63 = Z(2)^0
114 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Soluµia problemei 3.2.1 de pe pagina 108.


• Cea mai mic  valoare pozitiv  pentru n pentru care an = 1 este (conform
listelor de mai sus)
63.

• În mulµimea F avem (conform listelor, vericaµi)


a22 + a43 = a.

• Dac  observ m c  22 + 43 = 65 = 63 + 2, atunci putem scrie a22 ·


a43 = a2 . Aceasta ne aminte³te de relaµiile lui Viete, privind r d cinile
³i coecienµii unei ecuaµii algebrice. Calculul
(x − a22 ) · (x − a43 ) = x2 − (a22 + a43 ) · x + a22 · a43
= x2 − a · x + a2
= x2 + a · x + a2 ,
arat  c  a22 ³i a43 sunt r d cini ale ecuaµiei date. Faptul c  nu mai exist 
³i alte soluµii rezult  prin testarea tuturor celorlalte elemente ale lui F ,
sau... din propoziµia de mai jos!

Propriet µile mulµimii F , constatate mai sus, pot  formulate condensat într-o


propoziµie.
Propoziµie 3.2.5. Mulµimea F cu operaµiile de adunare ³i înmulµire denite
ca mai sus formeaz  o structur  de corp (nit).
Deoarece într-un corp orice element nenul este inversabil, nu exist  divizori
ai lui 0 (de ce?), deci din egalitatea x2 + a · x + a2 = (x − a22 ) · (x − a43 ) = 0 va
rezulta ori x = a22 ori x = a43 . Reamintim, c  se nume³te divizor al lui 0 un
element nenul pentru care exist  un alt element nenul astfel ca produsul celor
dou  este nul.
Ca fapt divers, includem aici ³i comanda Singular (continuare a comenzilor
de listare) pentru descompunerea polinomului/rezolvarea ecuaµiei x2 + a · x +
a2 = 0, precum ³i rezultatul întors de aceast  comand . Se recunosc  conform
listei puterilor lui a  cele dou  r d cini a43 respectiv a22 !

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

Întrebarea natural  care se pune acum este: de ce relaµia special  a6 = a+1


presupus  pentru simbolul a a avut pân  la urm  drept consecinµ  proprietatea
structural  puternic  a lui F ?
R spunsul în sine este simplu:

Fapt 3.2.6. În inelul de polinoame Z2 [a] polinomul a6 − a − 1 este ireductibil !


Se pune acum urm toarea întrebare de fond. Cum pot  construite astfel
de mulµimi F , care s  funcµioneze ca ³i corpuri de numere nite? R spunsul la
aceast  întrebare cere dezvoltarea ideilor matematice care se ascunde în spatele
acestui mecanism... teoria corpurilor nite ³i a polinoamelor cu coecienµi în
aceste corpuri.

3.2.2 Construirea corpurilor nite


Fie p un num r prim. Clasele de resturi modulo p, notat Zp formeaz  cu
adunarea ³i înmulµirea natural  (denite prin intermediul reprezentanµi arbi-
trar ale³i) un corp. Datorit  faptului c  p este num r prim, ecare element
nenul din Zp are un invers. Avem deci exemple de corpuri cu un num r nit
de elemente, mai exact pentru ecare num r prim p avem un corp nit cu p
elemente notat ³i Fp sau GF(p) (Galois Field, în onoarea lui Everist Galois).
Pe de alt  parte propoziµia 1.1.32 de pe pagina 32 este o modalitate de
generare de corpuri: inelul factor al unui inel (comutativ, unitar, f r  divizori
ai lui zero) cu un ideal maximal al s u este corp.
S  consider m deci un corp k . Inelul k[x] al polinoamelor de o nedetermi-
nat  x, cu coecienµi în k , este un inel potrivit pentru a construi un corp 
trebuie s  alegem doar un inel maximal în el. Pe de alt  parte, inelul k[x] este
euclidian (funcµioneaz  teorema/algoritmul împ rµirii cu rest al polinoamelor,
cu restul de grad minim unic!), deci este ³i principal. A³adar orice ideal în k[x]
este ideal principal (vezi propoziµia 1.1.19 de pe pagina 26), deci este generat
de un polinom.
S  alegem un polinom ireductibil f (nenul). Fie idealul I = (f ) format
din toate polinoamele divizibile cu f . Arm m, c  idealul I este maximal!
Într-adev r, Fie J , un ideal mai mare, I ⊂ J . El trebuie s  e deasemenea
ideal principal, deci J = (g). Rezult  c  f ∈ J deci f = gh. Acum deoarece
f este ireductibil g nu poate  un divizor propriu al lui f , deci ori g = 1 (sau
orice constant  nenul ) ori g = f (sau g = cf , unde c este o constant  nenul 
din k ). A³adar, ori J = (1) = k[x] ori J = (f ) = I , deci I = (f ) este maximal.
Am demonstrat a³adar c  inelul factor K = k[x]/(f ), unde f este un
polinom ireductibil, este un corp! Fie acum k unul din corpurile nite k = Fp ,
unde p este un num r prim, ³i e f un polinom ireductibil de grad n ≥ 2 cu
coecienµi din k (presupunem c  exist  un asemenea polinom). Inelul factor
116 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

ind format de clasele de resturi, elementele acestuia sunt reprezentate de


resturile posibile ale împ rµirilor cu polinomul f , adic  sunt toate polinoamele
de grad cel mult n − 1. Num rul acestora este exact pn (un polinom de grad
cel mult n − 1 are exact n coecienµi, ale³i independent unii de alµii din cele p
elemente ale lui Fp ). În concluzie, corpul K = Fp [x]/(f ) are pn elemente, deci
este un corp nit! Dac  not m clasa de echivalenµ  a lui x cu a se vede c  K
este un k spaµiu vectorial în care {1, a, a2 , . . . , an−1 } este o baz .
Avem ³i f (a) = 0, deci polinomul f are o r d cin  în K . Se vede c  k este
un subcorp al lui K . Spunem c  K este o extensie a lui k .
Fie b ∈ K arbitrar. Elementele 1, b, b2 , . . . , bn nu pot  liniar independente,
deci exist  c0 , c1 , . . . , cn ∈ k nu toate nule astfel ca c0 +c1 b+c2 b2 +. . .+cn bn = 0,
altfel spus polinomul g = c0 + c1 x + c2 x2 + . . . + cn xn are în K r d cina b. Un
asemenea polinom se nume³te polinom anulator pentru b. Mulµimea acestora
este un ideal în inelul k[x], care este inel Euclidian, deci principal, de unde
rezult  c  acest ideal este generat de un polinom gb .
Polinomul minimal al lui a în k[x] este chiar f ! Într-adev r, f este anulator
pentru a, deci divizibil cu fa ∈ k[x], dar f este ireductibil deci fa = f .
Consideraµiile de mai sus constituie demonstraµia urm toarei propoziµii.

Propoziµie 3.2.7. Fie f un polinom ireductibil de grad n ≥ 2 în inelul Zp [x],


unde p este un num r prim. Atunci inelul factor Zp [x]/(f ) este un corp nit,
cu pn elemente.

Se pune imediat urm toarea întrebare: cât de general  este aceast  con-


strucµie? R spunsul este fascinant. Toate corpurile nite se pot construi în
modul ar tat mai sus! Dicultatea a³adar se mut  la problema factoriz rii ³i la
stabilirea "primalit µii", polinoamelor cu coecienµi în Fp respectiv a gener rii
de polinoame ireductibile de grad dat n!
Pentru ca raµionamentul de mai sus s  nu e gol de conµinut  în lipsa
polinoamelor ireductibile  vom da câteva exemple concrete.

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

Corpul de 22 = 4 elemente astfel generat se noteaz  GF(22 ) ³i el are


urm toarele elemente: {0, 1, α, α + 1}, corespunz toare tuturor resturilor de
grad cel mult 1.
S  mai consemn m, c  α3 = α2 · α = (α + 1) · α = α2 + α = 1, ceea ce
era de a³teptat, deoarece în grupul multiplicativ al unui corp nit  conform
teoremei lui Lagrange  ordinul oric rui element este un divizor al ordinului
grupului, în cazul nostru acesta ind 4 − 1 = 3. Avem tabela

1 = 1
a = a
a^2 = a+1
----------------
a^3 = 1

Aceast  tabel  ne poate servi la efectuarea operaµiilor: prima coloan  este


propice pentru a face înmulµirile (adunarea modulo 3 a exponenµilor), iar cea
de a doua pentru a face adun rile (adunarea modulo 2 a coecienµilor poli-
noamelor în α).

Corpul GF(23 )

Corpul coecienµilor este tot F2 . Avem nevoie acum de un polinom ireductibil


de gradul 3. Polinoame de grad 3 sunt opt: x3 + x2 , x3 + x2 + 1, x3 + x2 + x,
x3 + x2 + x + 1, x3 + x, x3 + x + 1, x3 + 1 ³i x3 .
Dac  un polinom de gradul 3 este reductibil, atunci are un factor de gradul
unu, deci are o r d cin . Prin testarea direct  a celor opt polinoame existente
depist m dou  dintre ele care nu au r d cini în F2 : x3 + x + 1 respectiv
x3 + x2 + 1.
Not m clasa de echivalenµ  a lui x în inelul factor F2 [x]/(x3 + x + 1) cu α.
A³adar α3 + α + 1 = 0 sau α3 = α + 1 sau α · (α2 + 1) = 1 etc.
Corpul de 23 = 8 elemente astfel generat se noteaz  GF(23 ). El are urm -
toarele elemente: {0, 1, α, α + 1, α2 , α2 + 1, α2 + α, α2 + α + 1}, corespunz tor
tuturor resturilor de grad cel mult 2 posibili.
S  mai consemn m, c  ar  de a³teptat α7 = 1, deoarece în grupul mul-
tiplicativ al corpului nit  conform teoremei lui Lagrange  ordinul oric rui
element este un divizor al ordinului grupului, în cazul nostru 8 − 1 = 7. Putem
efectua calculul lui α7 manual, dar mai elegant este s  apel m la un mediu de
programare adecvat  GAP.
118 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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 ).

Sursa de inspiraµie pentru aceste descompuneri r mîne pentru moment


nedezv luit , va  divulgat  mai târziu (în subsecµiunea 3.2.6, de pe pagina
127). În corpul G avem descompunerea:

g = (x − β) · (x − β 2 ) · (x − β 4 )
f = (x − β 3 ) · (x − β 6 ) · (x − β 5 ).

Un izomorsm de corpuri las  polinoamele cu coecienµii în Z2 invariante,


deci duce o r d cin  a unui polinom tot într-o r d cin  a aceluia³i polinom. Pe
de alt  parte r d cinile unui polinom ireductibil "nu se disting" între ele, deci o
r d cin  a lui f (ca polinom cu r d cini din F ) poate  pus în corespondenµ 
cu oricare dintre r d cinile lui f (ca polinom cu r d cini din G). A³adar
corespondenµa
3.2. CORPURI FINITE 119

α −→ β 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

În schimb tabelul de mai jos arat  c  α + 1 este un generator al grupului


multiplicativ al corpului. Acest element este o r d cin  a polinomului x4 +
x3 + 1, ceea ce se veric  simplu prin calcul direct.
3.2. CORPURI FINITE 121

(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

este maximal, adic  8.

(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

3.2.3 Caracteristica unui corp nit

În secµiunea precedent  am dat o modalitate general  de construcµie a cor-


purilor nite.
S  observ m c  pasul de construcµie se poate aplica în lanµ: odat  construit
un corp, putem considera polinoame cu coecienµi în acest corp, apoi putem
c uta polinoame ireductibile peste acest corp, ³i construcµia se repet .
Se pune întrebarea natural , cât de general  este aceast  construcµie, dintre
toate corpurile nite câte se pot construi în acest mod?
R spunsul la aceast  întrebare este simplu, dar argumentaµia puµin mai lung .
Pentru ecare num r prim p ³i num r natural n ≥ 2 exist  un singur corp cu
pn elemente!
Începînd cu aceast  secµiune vom începe s  parcurgem deci drumul oare-
cum invers celui parcurs pentru construirea corpurilor nite: din propriet µile
structurale ale corpurilor nite vom deduce existenµa ³i unicitatea (pâna la
izomorsm) a corpurilor cu pn elemente.
Fie deci F un corp nit. Cum orice corp conµine 0 (elementul neutru la
adunare) ³i 1 (elementul neutru la înmulµire) care difer  între ele (altfel corpul
ar avea un singur element, ³i deci numai o singur  operaµie, caz exclus ca ind
neinteresant), putem s  c ut m cel mai mic subcorp, care conµine aceste dou 
elemente.
3.2. CORPURI FINITE 123

S  începem cu adunarea. Avem

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 .

3.2.4 Grupul multiplicativ al unui corp nit


Mai întâi s  facem o observaµie important .
Observaµie 3.2.9. Orice corp nit este spaµiu vectorial peste corpul s u prim.
Mai general, orice corp este spaµiu vectorial peste orice subcorp al s u.
Demonstraµia acestor fapte este imediat . Aceast  simpl  observaµie îns 
are o consecinµ  important .
Consecinµ  3.2.10. Num rul elementelor unui corp nit este o putere a unui
num r prim, pn . Ordinul grupului multiplicativ al unui corp nit este pn − 1.
124 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Într-adev r, Fie Fp corpul prim al corpului F , unde p este num r prim.


Alegem o baz  a lui F , {a1 , a2 , . . . , an }. Num rul elementelor spaµiului vecto-
rial F peste Fp este evident pn . Grup multiplicativ al lui F este F ∗ = F \ {0},
deci are ordinul pn − 1.
Conform teoremei lui Lagrange, ordinul ec rui element al grupului multi-
plicativ al lui F este un divizor al ordinului grupului, deci dac  not m q = pn ,
atunci pentru orice element a al lui F ∗ avem

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.

Demonstraµie. Mai întîi e n = pk . Atunci este clar c  trebuie s  avem un


element de ordin pk în grup, în caz contrar toate cele n = pk > pk−1 elementele
k−1
ale grupului ar  r d cini ale ecuaµiei xp − 1 = 0, ceea ce contrazice ipoteza.
k
Fie acum pk |n. Soluµiile ecuaµiei xp = 1 în G formeaz  un subgrup, deci
avem un grup cu un num r de elemente putere a unui num r prim ³i care
evident veric  ipoteza. Conform celor de mai sus acest subgrup este ciclic.
Fie acum n = pk11 · pk22 · . . . · pkmm descompunerea lui n în factori primi dis-
tincµi. Conform celor de mai sus exist  în G elementele a1 , a2 , . . . am de ordin
k1 , k2 , . . . , km respectiv. Elementul a1 · a2 · . . . · am are ordinul n. Într-adev r,
s  observ m dac  a, b ∈ G sunt dou  elemente de ordin p, q respectiv din
grupul comutativ G, astfel ca (p, q) = 1, atunci elementul ab are ordinul pq .
Acest lucru se vede astfel. Fie d ordinul elementului ab, deci (ab)d = 1. Dar
(ab)p q = (ap )q · (bq )p = 1 · 1 = 1, deci d|pq .
Pe de alt  parte putem scrie ³i 1 = (ab)d = ((ab)d )p = (ap )d · bpd = bpd de
unde q|pd. Dar (p, q) = 1 deci q|d. Similar p|d, ³i din nou datorit  faptului
c  (p, q) = 1 rezult  c  pq|d. Avem deci d = pq . Aplicând acest fapt în lanµ
rezult  în nal c  grupul G are un generator, deci este ciclic.
3.2. CORPURI FINITE 125

Putem enunµa deci propoziµia urm toare.

Propoziµie 3.2.12. Grupul multiplicativ al unui corp nit cu q = pn elemente


este ciclic ³i are q − 1 elemente.

Deniµie 3.2.13. Un generator al grupului multiplicativ ciclic al unui corp


nit F se nume³te element primitiv în corpul F .

Toate tabelele de operaµii calculate în secµiunea precedent  furnizeaz  ex-


emple de elemente primitive în corpurile date. Spre exemplu 1 + i ∈ GF(32 )
este un element primitiv în acest corp.
Din teorema lui Lagrange rezult  c  ordinul oric rui element nenul a al
corpului F de q = pn elemente este un divizor al lui q − 1, deci aq−1 = 1.
Rezult  deci urm toarea observaµie:

Observaµie 3.2.14. Fie F un corp nit cu q = pn elemente. Atunci elementele


corpului F sunt r d cini ale ecuaµiei

xq − x = 0.

De asemenea în corpul F avem urm toarea descompunere:



xq − x = (x − a).
a∈F

Spre exemplu avem în corpul GF(22 ):

x4 − x = x(x − 1)(x − α)(x − α2 ),

unde "regula de calcul" este α2 = α+1. Dac  efectu m înmulµirile parantezelor


folosind aceast  regul  de calcul obµinem într-adev r polinomul x4 − x.

3.2.5 Unicitatea corpurilor nite


Suntem deja în m sur  s  demonstr m unicitatea corpurilor nite. Avem
propoziµia:

Propoziµie 3.2.15. Pentru ecare num r prim p ³i num r natural n ≥ 1


exist  cel mult un singur corp nit cu pn elemente.

Demonstraµie. Cu alte cuvinte, avem de ar tat cu dou  corpuri nite cu ace-


la³i num r de elemente sunt izomorfe. Fie F ³i G dou  corpuri cu q = pn
elemente. Alegem un element primitiv α în F . Fie f polinomul minimal al lui
126 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

α. Reamintim, c  acesta este un polinom ireductibil în Fp [x], unde Fp = Zp


este corpul prim al ambelor corpuri F ³i G. Deoarece
∏ ∏
xq − x = (x − a) = (x − b),
a∈F b∈G

polinomul xq − x este anulator (i.e.αq − α = 0) pentru α, deci este divizibil


cu polinomul minimal al lui α, adic  f |(xq − x). Aceasta deoarece mulµimea
polinoamelor anulatoare pentru α este un ideal în Fp [x], unde orice ideal ind
ideal principal, este generat de un polinom, polinomul minimal al lui α, adic 
chiar polinomul f .
Rezult  a³adar c , avem o descompunere în factori liniari al lui f în F , ³i
una în G. Alegem o r d cin  β a lui f în G. S  observ m c , β trebuie s  e
element primitiv în G. Într-adev r, dac  ordinul lui β ar  d mai mic strict
decât q − 1, atunci am avea β d − 1 = 0, deci β ar  r d cin  pentru polinomul
xd − 1, altfel spus polinomul xd − 1 ar  un polinom anulator pentru β , deci
ar  divizibil cu f . Cum f (α) = 0, am avea ³i αd − 1 = 0, în contradicµie cu
alegerea lui α.
În concluzie, corespondenµa α −→ β între F ³i G, genereaz  un izomorsm
φ între grupurile ciclice F \ {0} ³i G \ {0}. Avem

φ : F −→ G, φ(αk ) = (φ(α))k = β k , φ(0) = 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.

Acum dac  presupunem i > j , (f r  a restrânge genaralitatea), putem scrie

αi + αj = 0 ⇒ αi−j = −1
q−1
⇒ i−j =
2
⇒ β i−j = −1
⇒ β i + β j = 0.

Aceasta demonstreaz  c  φ comut  ³i cu operaµia de adunare, deci este un


izomorsm de corpuri.

3.2.6 Automorsmele unui corp nit


Fie F un corp nit cu pn elemente, unde p este un num r prim. Între elementele
corpului putem efectua operaµiile de adunare ³i înmulµire cu propriet µile obi³-
nuite ale acestora, deci avem dispunem ³i de toate formulele obi³nuite care
rezult  din aceste reguli, printre ele ³i formula binomului lui Newton. Avem în
Fp = Zp coecientul binomial pentru 1 ≤ i ≤ p − 1

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.

Deniµie 3.2.16. Fie F un corp nit cu pn elemente, unde p este un num r


prim. Automorsmul Φ : F −→ F , denit prin Φ(x) = xp se nume³te auto-
morsmul Frobenius al corpului.
128 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Importanµa automorsmului Frobenius este dat  de propoziµia urm toare.

Propoziµie 3.2.17. Fie F un corp nit cu pn elemente, unde p este un num r


prim. Automorsmele lui F formeaz  un grup ciclic de ordin n, al c rui gen-
erator este automorsmul Frobenius.

Demonstraµie. Automorsmele unui corp formeaz  evident un grup, cu ele-


mentul neutru aplicaµia identic  I .
n
De asemenea, deoarece pentru orice element a al corpului F avem ap = a
avem ³i Φn = I . Dac  am avea Φm = I pentru 0 < m < n, atunci am
m m
avea ap = a pentru orice a ∈ F , deci ecuaµia xp − x = 0 ar avea mai multe
r d cini decât este gradul s u, ceea ce este imposibil într-un corp. Deci ordinul
automorsmului Φ este chiar n.
S  ar t m c  F nu mai are ³i alte automorsme. Vom face câteva observaµii.
Observaµii 3.2.18.
1. O prim  observaµie imediat  este faptul c  orice automorsm Ψ al lui F
las  invariante elementele corpului prim al lui F ,

Ψ(k · 1) = Ψ(1 + . . . + 1) = Ψ(1) + . . . Ψ(1) = 1 + . . . + 1 = k · 1.

2. Mai interesant este c  automorsmul Frobenius las  invariant numai


aceste elemente. Într-adev r, elementele l sate invariante de acest au-
tomorsm sunt cele care au proprietatea ap = a, deci sunt soluµii ale
ecuaµiei xp − x = 0. Conform teoremei lui Fermat orice element al lui
Zp veric  aceast  ecuaµie, ³i ecuaµia nu mai poate avea ³i alte r d cini
datorit  limit rii dat  de gradul ei.

3. S  mai observ m c  un automorsm al lui F este determinat de acµiunea


lui asupra unui element primitiv al lui F . Într-adev r, acesta genereaz 
grupul multiplicativ al corpului, iar imaginea lui 0 este 0.

4. O ultim  observaµie este faptul c  polinomul minimal al unui element


primitiv al lui F are o descompunere special  exprimat  cu ajutorul
automorsmului Frobenius.
S  consider m un element primitiv a, ³i s  consider m polinomul

f = (x − a)(x − Φ(a))(x − Φ2 (a)) . . . (x − Φn−1 (a)). (3.3)

Dac  extindem automorsmele P si ale lui F asupra polinoamelor F [x],


prin (suma este nit )

Ψ(a0 + a1 x + a2 x2 + . . .) = Ψ(a0 ) + Ψ(a1 )x + Ψ(a2 )x2 + . . .


3.2. CORPURI FINITE 129

atunci avem

Φ(f ) = (x − Φ(a))(x − Φ2 (a))(x − Φ3 (a)) . . . (x − a) = f.

A³adar coecienµii lui f sunt în corpul prim, ³i f (a) = 0 deci f este un


polinom anulator pentru a, deci divizibil cu polinomul minimal al lui a.
Acesta din urm  are îns  gradul n, de unde rezult  el este chiar f .
A³adar polinomul minimal al unui element primitiv a are descompunerea
dat  de (3.3).

Putem trece acum la demonstraµia propriu-zis  a propoziµiei. Fie Ψ un


automorsm al lui F . Fie a un element primitiv, ³i f polinomul lui minimal,
cu coecienµi în Fp . Conform 1 Ψ(f ) = f , pe de alt  parte conform 2 ³i 4

Ψ(f ) = (x − Ψ(a))(x − ΨΦ(a))(x − ΨΦ2 (a)) . . . (x − ΨΦn−1 (a)),

dând o alt  descompunere a lui f . Cele dou  descompuneri trebuie s  coincid 


îns , deci
Ψ(a) = Φk (a),
pentru o anumit  valoare a exponentului k , ³i se aplic  3.

Consecinµ  3.2.19. Fie p un polinom ireductibil în Fp [x] de grad m. Dac 


polinomul p are o r d cin  α într-o extensie F a corpului Fp ,atunci toate
r d cinile lui p se a  în aceast  extensie ³i ele sunt imaginile succesive ale lui
α prin automorsmul Frobenius Φ, deci p are în F urm toarea descompunere:

p = (x − α)(x − Φ(α))(x − Φ2 (α)) . . . (x − Φm−1 (α)).

Demonstraµie. Mai întâi s  observ m c ,

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

f = (x − α)(x − Φ(α))(x − Φ2 (α)) . . . (x − Φn−1 (α)),

este invariant la automorsmul Frobenius, deci are coecienµii în Fp . Avem de


asemenea f (α) = 0, deci f este polinom anulator pentru α, deci este divizibil
cu p. În consecinµ  r d cinile lui p se a  în mulµimea

{α, Φ(α)), . . . , Φn−1 (α))}.


130 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Pentru a identica r d cinile lui p în aceast  mulµime, s  not m

e = min{k > 0 | Φk (α) = α}.

Atunci evident elementele mulµimii

{α, Φ(α)), . . . , Φe−1 (α))}.

sunt distincte între ele, ³i sunt r d cinile polinomului p. S  observ m c , de


fapt acestea sunt toate r d cinile lui p. Într-adev r, orice r d cin  a lui p este
r d cin  ³i a lui f , deci este de forma Φi (α). Dar exponentul i poate  redus
sub valoarea lui e, prin împ rµire la e. Mai precis, avem împ rµirea întreag 
i = e · q + r, de unde
Φi (α) = Φr (α),
de unde rezult  m = e.

S  analiz m puµin urm toarea construcµie. Fie p un num r prim, ³i n ³i m


dou  numere naturale mai mari decât 1. Dac  avem un polinom ireductibil f
de grad n în Fp [x], putem construi o extensie a lui Fp , corpul K1 = GF(pn ).
Acesta este un spaµiu vectorial de dimensiune n peste Fp .
Fie acum g ∈ K1 [x] un polinom ireductibil, de grad m. Putem construi
deci extensia K2 = K1 [x]/(g), un spaµiu vectorial de dimensiune m peste K1 .
Evident corpul prim al lui K2 este tot Fp , deci K2 este spaµiu vectorial ³i peste
Fp . Ce dimensiune are acest spaµiu vectorial?
Este destul de simplu de ar tat c  dac 

{a1 , a2 , . . . , an }

este o baz  a lui K1 peste Fp , ³i

{b1 , b2 , . . . , bn }

este o baz  a lui K2 peste K1 , atunci

{ai · bj | 1 ≤ i ≤ n, 1 ≤ j ≤ m}

este o baz  a lui K2 peste Fp . Deci dimensiunea spaµiului vectorial K2 peste


Fp este mn.
Fie acum F o extindere a corpului Fp realizat  cu ajutorul unui polinom
ireductibil de grad n. Fie G un subcorp al corpului F . Atunci G este spaµiu
vectorial peste Fp de dimensiune m, F este spaµiu vectorial peste Fp de di-
mensiune n, deci pe baza celor de mai sus este clar c  m este un divizor al
lui n, deci trebuie s  avem m|n. Acest fapt limiteaz  existenµa subcorpurilor:
3.2. CORPURI FINITE 131

într-un corp nit cu pn elemente pot exista numai subcorpuri cu pm elemente,


unde m|n.
Se pune întrebarea natural , dac  pentru orice divizor m al lui n exist  un
subcorp în GF(pn ) având pm elemente?
R spunsul la aceast  întrebare este dat de propoziµia care va urma. Înainte
de a o enunµa intercal m aici o proprietate interesant  a polinoamelor speciale
ale c ror r d cini sunt elementele corpurile nite cu pn elemente.

Lem  3.2.20. Fie un ∈ Fp [x] polinomul dat de formula un (x) = xp − x.


n

Atunci avem

• (un , um ) = u(n,m) , unde notaµia (f, g) sau (n, m) înseamn  ca de obicei


cel mai mare divizor comun al celor dou  polinoame respectiv numere
naturale, ³i

• um |un dac  ³i numai dac  m|n.

Demonstraµie. Presupunem, f r  a restrânge generalitatea, c  n > m. Fie


n − m = d. Pe baza formulei 3.2 de la pagina 127 avem
m m+1
upm (x) = (xp − x)p = xp − xp .

Repetând ridicarea la puterea p de d ori, obµinem


d m d m+d d
upm (x) = (xp − x)p = xp − xp = un (x) − ud (x).

A³adar  dac  facem împ rµirea întreag  n = q · m + r, 0 ≤ r < m, putem


calcula cel mai mare divizor comun al polinoamelor un ³i um în felul urm tor
n−m
(un , um ) = (upm + un−m , um ) =
= (un−m , um ) =
= (un−2m , um ) = . . .
= (un−q·m , um ) =
= (um , ur ) = . . .
= (u(n,m) , u0 ) =
= (u(n,m) , 0) =
= u(n,m)

Aceasta demonstreaz  prima armaµie a lemei. Pentru partea a doua, e m|n.


Atunci (n, m) = m, ³i prima parte ne d 

(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.

Acum vom putea demonstra propoziµia:

Propoziµie 3.2.21. În corpul GF(pn ) exist  pentru ecare divizor m al lui n,


(m|n) exact un subcorp de pm elemente.

Demonstraµie. Fie F un subcorp al corpului GF(pn ). Am v zut mai sus c ,


num rul elementelor lui F este pm , unde m|n. Elementele acestui corp veric 
ecuaµia
m
um (x) = xp − x = 0.
Deci F = InvΦm = {a ∈ GF(pn ) | Φm (a) = a}, deci subcorpul F este unic
(elementele invariante la un automorsm într-un corp formeaz  un subcorp).
Invers, e m|n. S  dovedim existenµa unui subcorp al lui GF(pn ) care are
p elemente. Candidatul natural este evident F = InvΦm . Trebuie s  dovedim
m

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.

3.2.7 Existenµa unui corp cu pn elemente


Suntem în m sur  s  demonstr m c  pentru orice num r prim p ³i orice num r
natural n ≥ 2 exist  un corp nit cu pn elemente. Se cuvine s  repet m enunµul
în cadrul unei propoziµii.

Propoziµie 3.2.22. Fie p un num r prim ³i n un num r natural mai mare


decât 2. Atunci exist  un corp nit F , cu pn elemente.
n
Demonstraµie. S  consider m polinomul un (x) = xp − x, un ∈ Fp [x]. El se
descompune în factori ireductibili (deci primi) astfel
n
un (x) = xp − x = x · (x − 1) · f1 (x) · f2 (x) · . . . · fk (x).

Observaµia crucial   dup  toate discuµiile teoretice anterioare destul de nat-


ural   este c , unul dintre factorii acestei descompuneri trebuie s  nu e
divizibil cu nici unul din polinoamele um (x) unde m|n este un divizor propriu
3.2. CORPURI FINITE 133

al lui n. Într-adev r, nu este greu de ar tat, c  suma gradelor tuturor divi-


zorilor ireductibili ai polinoamelor um (x), unde m|n este divizor propriu, este
mai mic decât gradul lui un (x).
Pentru aceasta s  constat m c , pentru un m dat

deg f = pm . (3.4)
f |um , f ireductibil, monic

Î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 .

Din 3.4 scris  pentru m = n deducem c  trebuie s  existe un factor ireductibil


f al lui un care nu divide nici unul din polinoamele um , unde m|n, ³i m este
divizor propriu.
Tot ce mai avem de ar tat este c  gradul acestui polinom este chiar n ³i
deci construcµia standard al inelului factor este corpul c utat cu pn elemente.
Fie deci F = Fp [x]/(f ) = GF(pm ), unde m = deg f ³i s  not m clasa de
resturi al lui x cu α. A³adar f (α) = 0, dar întru-cât f |un avem ³i

un (α) = 0.

Dar α ∈ GF(pm ), deci avem ³i

um (α) = 0.

Rezult  c , α este o r d cin  a polinomului

(un , um ) = u(n,m) .

S  lu m acum în considerare faptul c  f este polinom minimal al lui α, deci

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.

3.2.8 Polinoame ireductibile


Am v zut în secµiunile precedente, c  un polinom ireductibil cu coecienµi
într-un corp poate juca rolul unui num r indecompozabil (prim) în construcµia
unei noi mulµimi de numere, în care împ rµirea s  e posibil  necondiµionat.
În termeni puµini mai tehnici avem o analogie perfect  între

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.

Construcµia corpurilor nite cu p elemente cu un num r prim p mare nece-


sit  algoritmi de testare a primalit µii, de generare a numerelor prime, ³i pune
problema factoriz rii numerelor întregi. Analog, construcµia corpurilor nite cu
n mare necesit  algoritmi de testare a ireductibilit µii polinoamelor, de gener-
are a polinoamelor ireductibile, ³i pune problema factoriz rii polinoamelor.
Nu ne vom aventura în tratarea sistematic  a acestor problematici, îns 
pentru a asigura un sentiment de confort dat de certitudinea c  obiectele
matematice descrise exist  cu adev rat, complet m analiza noastr  cu r spun-
sul la o singur  întrebare: cât de multe numere prime, respectiv cât de multe
polinoame ireductibile exist ?
În ceea ce prive³te numerele prime s  reamintim faptele clasice binecunos-
cute.
3.2. CORPURI FINITE 135

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

• Dac  not m cu Nq (n) num rul total al polinoamelor de grad exact n din


GF(q)[x], este u³or de v zut c 
Nq (n) = q n+1 − q n .
Are loc estimarea asimptotic :
Iq (n) 1
∼ .
Nq (n) n

S  schiµ m în schimb demonstraµia acestor fapte legate de polinoame ire-


ductibile.
Formula 3.4 de la pagina 133  este adev rat  ³i pentru q = pn  ³i poate
 convertit  u³or în formula:

d · Iq (d) = q n , (3.5)
d|n

valabil  pentru orice n ∈ N.


Aceste relaµii, considerate ca ecuaµii trebuie rezolvate în raport cu necunos-
cutele Iq (n). Aceasta se face cu formula de inversare a lui Moebius, pe care o
prezent m aici în ambele variante: aditiv  ³i multiplicativ .
136 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Deniµie 3.2.25. Funcµia µ : N −→ N denit  prin



 1, dac  n = 1,
µ(n) = (−1)k , dac  n este un produs de k numere prime distincte,

0, dac n este divizibil cu p tratul unui num r prim,

se nume³te funcµia lui Moebius .

Avem nevoie de urm toarele propriet µi ale funcµiei Moebius:

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

µ(m · n) = µ(m) · µ(n).

2. Pentru orice num r natural n avem


∑ {
1, dac  n = 1,
µ(d) =
0, dac  n > 1.
d|n

Demonstraµie. Prima proprietate este evident  din deniµia funcµiei µ. A doua


este evident  pentru n = 1, deci e n > 1. Fie

n = pα1 1 · pα2 2 · . . . · pαk k

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

= 1 + Ck1 (−1) + Ck2 (−1)2 + . . . + Ckk (−1)k


= (1 + (−1))k = 0.

Teorem  3.2.27 (Formula de inversare a lui Moebius). Formula se d  de


obicei în dou  variante: o formulare aditiv  ³i o formulare multiplicativ .
3.2. CORPURI FINITE 137

• Formula aditiv : Fie f, F : N −→ G dou  funcµii într-un grup aditiv G.


Atunci ∑
F (n) = f (d) pentru orice n (3.6)
d|n

dac  ³i numai dac 


∑ (n) ∑ (n)
h(n) = µ F (d) = µ(d)F pentru orice n. (3.7)
d d
d|n d|n

• Formula multiplicativ : Fie f, F : N −→ G dou  funcµii într-un grup


multiplicativ G. Atunci

F (n) = f (d) pentru orice n (3.8)
d|n

dac  ³i numai dac 


∏ n ∏ ( n )µ(d)
h(n) = F (d)µ( d ) = F pentru orice n. (3.9)
d
d|n d|n

Demonstraµie. Presupunem c  are loc relaµia 3.6. Folosind propoziµia 3.2.26


obµinem
∑ (n) ∑ (n)
µ F (d) = µ(d)F
d d
d|n d|n
∑ ∑
= µ(d) f (c)
d|n c| n
∑∑
d

= µ(d)f (c)
c|n d| n
∑ ∑
d

= f (c) µ(d)
c|n d| nc

= f (n).

Invers, calculul este absolut similar. În ceea ce prive³te varianta multiplicativ ,


aceasta este practic doar o schimbare a notaµiei pentru operaµia comutativ 
valabil  pentru cele dou  funcµii f ³i F .

Suntem acum în m sur  s  demonstr m rezultatul fundamental al acestei


secµiuni.
138 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Teorem  3.2.28. Num rul Iq (n) al polinoamelor ireductibile monice de grad


n din GF(q)[x], (unde q este un num r prim sau o putere a unui num r prim
q = pm ) veric  relaµiile:
1. ∑
d · Iq (d) = q n ,
d|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

3.2.9 Polinomul minimal ³i baza Gröbner


Cele mai spectaculoase descoperiri matematice sunt acele rezultate care
dezv luie leg turi strânse între domenii aparent îndep rtate. Asocierea din-
tre polinomul minimal al unui element algebric într-o extindere de corpuri cu
bazele Gröbner ale idealelor polinomiale în inele de polinoame cu mai multe
nedeterminate poate p rea la prim  vedere o astfel de întâlnire nea³teptat .
Ea m re³te în orice caz admiraµia pentru "omniprezenµa" bazei Gröbner ³i
utilitatea deosebit  a algoritmului lui Buchberger.
Problemele pe care ni le formul m sunt urm toarele.
Probleme 3.2.29.

1. Fie corpul nit F = GF(pn ) construit cu ajutorul unui polinom ire-


ductibil f ∈ Fp [x] de grad n. Dac  not m ca de obicei clasa de
echivalenµ  a lui x cu α, atunci avem f (α) = 0 ³i nu exist  polinom
anulator de grad mai mic în Fp [x] pentru α, adic  f este polinomul min-
imal al lui α. Elementele corpului F sunt polinoame de grad cel mult
n−1 în α. Fie a = g(α) ³i b = h(α) dou  elemente ale lui F . S  ne ream-
intim c  a ± b se calculeaz  simplu prin intermediul lui g ± h, înmulµirea
a · b prin g · h( mod f ), iar împ rµirea a/b prin a · 1/b, unde inversul lui
b corespunde polinomului v , obµinut cu ajutorul algoritmului lui Euclid
extins aplicat polinoamelor relativ prime f ³i h. Întru-cât (f, h) = 1
(h(α) ̸= 0, f ̸ |h) exist  u, v astfel ca uf + vh = 1 de unde 1/b = v(α).
S  se calculeze polinomul minimal al lui

• a + b,
• a − b,
• a · b,
• a/b.

2. Fie acum dou  polinoame ireductibile f, g ∈ Fp [x], de grad n, m respec-


tiv. Putem face câte o extensie a lui Fp cu ajutorul lui f ³i g respectiv,
notând cu α respectiv β clasele de echivalenµ  ale lui x în cele dou 
extinderi. Cele dou  extinderi sunt corpurile nite GF(pn ) ³i GF(pm )
respectiv. Am v zut în secµiunile precedente c  exist  ³i este unic corpul
nit cu pk elemente, respectiv pentru ecare divizor d|k corpul GF(pk )
are un singur subcorp GF(pd ). Rezult  c  cele dou  corpuri GF(pn ) ³i
GF(pm ) sunt subcorpurile (unice) ale corpului GF(pnm ).
S  se calculeze polinoamele minimale ale urm toarelor elemente din acest
corp:
140 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

• α + β,
• α − β,
• α · β,
• α/β .
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

Fp [y] −→ Fp [x]/(f ) −→ Fp (α)


y −→ F + (f ) −→ c.

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

Din aceast  propoziµie rezult  un "algoritm" de calcul al polinomului mi-


nimal al elementului c = a/b (³i celelalte operaµii): calcul m baza Gröbner
pentru idealul (f, hy − g) ∈ Fp [x, y] folosind ordonarea lexicograc  în care
x > y . Polinomul acestei baze care conµine numai variabila y este polinomul
minimal al lui c!
Pentru a rezolva problema a doua ne vom baza pe o propoziµie analoag 
pe care o d m f r  demonstraµie.

Propoziµie 3.2.31. Fie α1 , α2 , . . . , αn r d cini ale polinoamelor ireductibile


f1 , f2 , . . . , fn cu coecienµi în corpul Fp . Fie

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)

ale inelului Fp [x1 , x2 , . . . , xn , y]. Atunci polinomul minimal al lui c = a + b,


c = a − b, c = a · b, c = a/b este unicul polinom (monic) în variabila y , care
este generator al idealului I∗ ∩ Fp [y].

Dac  toate acestea nu sunt sucient de clare, ne va ajuta un exemplu


concret.

Exemplu 3.2.32. În corpul GF(26 ) construit cu ajutorul polinomului


f (x) = x6 + x + 1,

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.

Soluµia este acest scurt program scris în Singular.


142 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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

3.3 Coduri corectoare de erori

D up  aceast  preg tire destul de consistent   care a avut totu³i ³i


motivaµii intrinseci  suntem în m sur  acum s  trecem la aplicaµia
anunµat : coduri corectoare de erori.
În introducerea acestui capitol am v zut deja un exemplu concret de un
astfel de cod. Având în minte acest exemplu, vom înµelege mai bine motivaµia
construcµiilor matematice care vor urma mai jos.
Fix m de la bun început urm toarele. Informaµia pe care o trimitem este
organizat . Ea se exprim  cu ajutorul unui alfabet, ³i se grupeaz  în cuvinte
(blocuri) de aceea³i lungime. Literele acestor cuvinte transmise se pot altera.
S  analiz m puµin statistica acestor alter ri în cazul unui canal de comunicaµie
prin care transmitem informaµie binar . S  consider m deci c  literele sunt
cifrele binare  0 ³i 1  ³i c  lungimea unui cuvânt este de n de litere. S 
presupunem c  probabilitatea cu care pe acest canal cifra binar  0 devine la
recepµie 1 este aceea³i cu care cifra 1 este recepµionat  0. Un astfel de canal
de comunicaµie se nume³te canal binar simetric . S  presupunem de asemenea
c  probabilitatea recepµion rii eronate a unei cifre binare este aceea³i pentru
ecare cifr , ³i este independent de cifrele anterioare sau viitoare. S  not m
probabilitatea recepµion rii corecte a unei cifre binare cu p. Atunci într-o
secvenµ  de lungime n probabilitatea unui num r de t erori este

Cnt pn−t (1 − p)t .

Pentru p = 0.99 ³i n = 50 putem întocmi urm torul tabel:

t probabilitatea producerii a exact t erori cel mult t erori


0 60.50 % 60.50 %
1 30.56 % 91.06 %
2 7.56 % 98.62 %
3 1.22 % 99.84 %
4 0.145 % 99.99 %
...

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

Cnt+1 pn−t−1 (1 − p)t+1


< 1,
Cnt pn−t (1 − p)t

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).

Teorem  3.3.1. Pentru orice canal binar simetric de comunicaµie, pentru


orice ε > 0, pentru orice probabilitate 1 > p > 0 ³i orice rat  util  de informaµie
r > 0 pentru care avem

r < 1 + p ln(p) + (1 − p) ln(1 − p),

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 ε.

Demonstraµia acestei teoreme nu este constructiv , ea nu furnizeaz  ³i o


metod  de construcµie pentru coduri bune. Are sens a³adar c utarea de co-
duri care s  se apropie cât mai mult de performanµa asigurat  de teorema lui
Shannon.
În cele ce urmeaz  vom prezenta câteva coduri, ³i vom schiµa ³i o analiza
parametrilor acestora pentru a intui în ce m sur  ele se apropie de performanµa
maxim  posibil  pentru o rat  de eroare dat .
3.3. CODURI CORECTOARE DE ERORI 145

3.3.1 Concepte de baz 


Leg tura dintre corpurile nite ³i coduri rezid  în faptul c  literele alfabetului
de codicare vor  numere speciale: elemente ale unui corp nit de numere!
Cuvinte ale acestui alfabet vor  "cuvinte" de cod, blocuri. Iat  dicµionarul
corespunz tor pe care-l vom folosi în continuare.

concept teoria codurilor obiect matematic


ABC (colecµie simboluri) corp nit, Fq , q = pm
liter , simbol element al corpului nit, αi ∈ Fq
mesaj util, vector de elemente, α = (α1 , α2 , . . . , αk )
cuvânt cod, mesaj codicat x = (x1 , x2 , . . . , xn ), n ≥ k , xi ∈ Fq
³i transmis
mesaj recepµionat, eventual diferit vector y = (y1 , y2 , . . . , yn ), yi ∈ Fq
de cel transmis
vector eroare e=y−x

În cazul în care x1 = α1 , . . . , xk = αk simbolurile xk+1 , . . . , xn se numesc


simboluri de control . Conform tabelului de mai sus se impune deci o deniµie.

Deniµie 3.3.2. Un cod de lungime n peste corpul Fq este o submulµime


(nevid ) C a spaµiului vectorial Fqn peste Fq .

În cursul transmisiei cuvântele de cod pot suferi modic ri, deci avem


nevoie de un mecanism de evaluare a m surii acestei modic ri. Se vede ime-
diat c  num rul simbolurilor alterate este o m sur  potrivit  pentru evaluarea
"distanµei" între cele dou  cuvinte de cod: cel transmis ³i cel recepµionat.

Deniµie 3.3.3. Concepte importante noi:


• Dac  x ³i y sunt cuvinte cod vom numi distanµ  Hamming între ele
num rul simbolurilor diferite dintre perechile de simboluri care se core-
spund, deci
d(x, y) = ♯{i|xi ̸= yi }.

• Dac  x este un vector vom numi m sura Hamming al acestui vector,


notat w(x), distanµa lui faµ  de vectorul nul, adic  w(x) = d(x, 0).

• Vom numi distanµa minim  a codului C num rul

d(C) = min{d(x, y) | x, y ∈ C, x ̸= y},

adic  cea mai mic  distanµ  între dou  cuvinte de cod.


146 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

• Vom numi de asemenea bil  de raz  r cu centru în x mulµimea


Sr (x) = {y ∈ Fqn | d(x, y) ≤ r},
adic  mulµimea vectorilor aate la distanµa cel mult r de vectorul x.
Se veric  u³or c , funcµia d(x, y) are propriet µile unei distanµe:
• d(x, y) = 0 dac  ³i numai dac  x = y ,
• este simetric  adic  d(x, y) = d(y, x) ³i
• are loc ³i inegalitatea triunghiului, adic  d(x, z) ≤ d(x, y)+d(y, z), pentru
orice x, y, z ∈ Fnq .
Cuvântul de cod transmis x poate sosi la receptor alterat, y . Decodicarea care
dintr-un vector y recepµionat restabile³te cel mai probabil cuvânt de cod care a
fost transmis, se nume³te decodicare de probabilitate maxim  . Decodicarea
care îl decodic  vectorul y cu ajutorul cuvântului de cod x aat cel mai
aproape de y în sensul distanµei Hamming (dac  exist  numai unul singur), se
nume³te decodicare prin distanµ  .
Am v zut mai sus c  probabilitatea alter rii unui num r de 1, 2, 3, . . . sim-
boluri ale unui cuvânt de cod se micsoreaz  rapid, în anumite condiµii. Practic
am v zut c  dac  pe un canal de comunicaµie binar ³i simetric
p
n< ,
1−p
atunci decodicarea prin cuvântul de cod cel mai apropiat este o decodicare
de probabilitate maxim ! Vom p stra aceast  ipotez  în continuare, adic 
vom considera c  decodicarea prin cuvântul de cod cel mai apropiat este
³i decodicare de probabilitate maxim , ³i vom înµelege prin "decodicare"
decodicare prin cuvântul de cod cel mai apropiat.
Deniµie 3.3.4. Vom spune c  un cod C ⊂ Fnq corecteaz  t (t ∈ N∗ ) erori
dac  pentru orice y ∈ Fnq exist  cel mult un cuvânt de cod x ∈ C astfel ca
d(y, x) ≤ t.
Dac  avem un cod care poate corecta t erori ³i am transmis cuvântul de
cod x ∈ C ³i în cursul transmisiei se produc cel mult t erori, atunci la recepµie
putem restabili mesajul deoarece x este singurul cuvânt de cod pentru care
d(y, x) ≤ t.
S  observ m c , pentru a putea decodica cât mai multe mesaje recepµion-
ate eronat distanµa minim  a codului, adic  parametrul d = d(C) trebuie s 
e cât mai mare posibil. Acesta îns  atrage dup  sine sc derea num rului de
cuvinte cod pentru o lungime dat  n a codului, ceea ce scade cantitatea de
informaµie transmis . În concluzie problema de baz  a teoriei codurilor este:
3.3. CODURI CORECTOARE DE ERORI 147

Problem  3.3.5. Pentru un n, d ³i q = pm dat s  g sim în Fnq o submulµime


maximal  C , cu un num r de elemente cât mai mare, pentru care d(C) ≥ d.
Maximalitatea lui C înseamn , c  orice vector cu care am completa
mulµimea C ar avea ca efect d(C) < d. Întru-cât mulµimi maximale cu
d(C) ≥ d pot  mai multe, suntem interesaµi s  g sim pe cal pentru care
num rul de elemente M = |C| este cel mai mare posibil.
Observaµie 3.3.6. S  observ m c  un cod C pentru care d(C) = d, poate
detecta d−1 erori, ³i poate corecta ⌊ d−1
2 ⌋ erori (partea întreag  a lui (d−1)/2).

3.3.2 Margini pentru coduri generale


Fie C un cod din Fnq cu distanµ  minim  d = d(C), care poate corecta t erori
³i s  not m num rul cuvintelor de cod cu M = |C|. Între parametrii codului
C au loc anumite inegalit µi, care prescriu valor limit  intrinseci care nu pot
 dep ³ite.
Propoziµie 3.3.7.
1. marginea Hamming :
M (1 + (q − 1)Cn1 + Cn2 (q − 1)2 + · · · + (q − 1)t Cnt ≤ q n .

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

3.4 Coduri liniare

A m avansat ideea în secµiunea precedent  c  o alegere bun  pentru cu-


vintele unui cod, constituie o parte din vectorii unui spaµiul vectorial nit
dimensional peste un corp nit. Dac  avem în minte intenµia de a a³eza cât
mai compact bile de raz  dat  cu centrul în punctele acestui spaµiu, f r  s  se
intersecteze îns , e de a³teptat ca o astfel de a³ezare s  e ³i regulat  întru-un
anumit sens  s  ne gândim la nodurile unei reµele p tratice sau triunghiulare
regulate în plan ³i cercuri identice a³ezate pe aceast  reµea, spre exemplu.
O astfel de ordine poate  introdus  în mulµimea C dac  facem uz de
structura de spaµiu vectorial  mulµimea C ar putea s  e un subspaµiu. Astfel
C devine o "reµea" generat  (în sensul chiar al combinaµiilor liniare) de un set
de vectori de baz  bine ale³i (care ar ³i forma baza acestui subspaµiu). Un
astfel de cod se va numi cod liniar.
În termeni tehnici ideea de mai sus se realizeaz  astfel. Fie H o matrice de
tip (n − k, n) cu elemente din corpul nit Fq . Presupunem c  rangul matricii
H este maxim, adic  n − k .

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 .

Evident mulµimea C este un subspaµiu al spaµiului vectorial Fqn .

Propoziµie 3.4.2. Pentru un cod sistematic C denit de matricea H dac 


α = (α1 , α2 , . . . , αk ) = (x1 , x2 , . . . , xk ) este partea util  a mesajului, ³i
( )
H · xt = A In−k · xt = 0,

atunci
( )
x=α· Ik −At .

Astfel codicarea mesajului util (i.e. calculul cuvântului de cod corespunz tor


mesajului) se poate face prin înmulµirea mesajului cu o matrice adecvat .
3.4. CODURI LINIARE 149

Demonstraµie. Calculele sunt simple. Le reproducem totu³i aici, datorit  im-


portanµei conceptuale a acestora. Fie x = (x1 , x2 , . . . , xn ) mesajul codicat.
Avem
( )
H · xt = 0 ⇔ A In−k · xt = 0
   
x1 xk+1
 x2   xk+2 
   
⇔ A· . + . =0
 ..   .. 
xk xn
   
xk+1 α1
 xk+2   α2 
   
⇔  ..  = −A ·  .. 
 .   . 
xn αk
   
x1 α1
 x2  ( ) 
α2 
  Ik  
⇔  .. = · .. 
 .  −A  . 
xn αk
( )
⇔ (x1 , x2 , . . . , xn ) = (α1 , α2 , . . . , αk ) · Ik −At
⇔ x=α·G

Deniµie 3.4.3. Matricea G = (Ik , −At ) se nume³te matricea generatoare


canonic  pentru codul C . În general o matrice G se nume³te matrice genera-
toare pentru codul C dac  liniile matricii G formeaz  o baz  a lui C .
Se veric  imediat c  între matricea generatoare ³i matricea de control al
parit µii are loc relaµia
G · H t = 0.
Deniµie 3.4.4. Dac  C este un cod liniar de tipul (n, k) atunci codul
C ⊥ = {u ∈ Fqn |u · v = 0, pentru orice v ∈ C}

se nume³te codul dual al lui C . Aici am notat

u · v = u1 v1 + u2 v2 + . . . + un vn ,

³i a³a cum e de a³teptat u · v se nume³te produsul scalar al celor doi vectori.


Vectorii u ³i v se numesc vectori ortogonali dac  u · v = 0, în notaµie u⊥v .
Produsul scalar este biliniar ³i simetric, ceea ce se veric  imediat.
150 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Observaµie 3.4.5. Se observ  c  matricea generatoare pentru codul dual este


matricea de control al parit µii pentru cod, ³i invers.

Demonstraµie. Într-adev r, s  ne reamintim, c  liniile matricii G sunt vectori


din C , ³i formeaz  o baz  pentru C (H · Gt = 0). Rangul lui H este maxim,
k , deci dimensiunea lui C este n − k , egal cu num rul liniilor lui G. Deci
rangul lui G este de asemenea maxim, n − k . Se vede deci c  rolul lui G ³i H
este simetric, putem scrie ³i G · H t = 0, ³i rangulambelormatrici este maxim:
liniile lui H sunt vectori liniar independenµi, perpendiculari pe liniile lui G,
³i num rul lor ind maximal, k , formeaz  o baz  pentru subspaµiul vectorilor
perpendiculari pe liniile lui G, care este codul dual.

S  menµion m c  este posibil ca u · u = 0, f r  ca u = 0, deci este posibil


ca u⊥u f r  ca vectorul u s  e nul. În consecinµ , este posibil ca C ∩ C ⊥ ̸= ∅
respectiv C + C ⊥ $ Fnq , adic  suma subspaµiilor C ³i C ⊥ s  nu e întreg
spaµiul. Mai mult, este posibil s  avem ³i C = C ⊥ .

Deniµie 3.4.6. Un cod C pentru care C = C ⊥ se nume³te cod autodual .

Vom vedea printre exemplele care urmeaz , ³i un cod autodual.


Este momentul deci s  d m câteva exemple. Aceste exemple vor  reluate
³i analizate mai detaliat în secµiunea 3.6 de la pagina 182, în care prezent m
un mediu de programare specializat pentru teoria codurilor algebrice, în cadrul
sistemului GAP.

Exemple 3.4.7.

1. Fie codul binar de dimensiune k = n−1 ³i lungime n construit în felul ur-


m tor: cuvintele de cod sunt formate din mesajul util (x1 , x2 , . . . , xn−1 )
∑n−1
³i un simbolul
∑ xn de paritate, care este 1 dac  i=1 xi = 1( mod 2) ³i
este 0 dac  n−1i=1 xi = 0( mod 2). Cuvântele cod x = (x1 , x2 , . . . , xn )
veric  deci ecuaµia
∑n
xi = 0.
i=1

Dac  denim matricea cu n coloane ³i de o singur  linie (de rang 1)


( )
H= 1 1 ... 1 ,

atunci cuvintele codului veric  ecuaµia H · xt = 0. Se vede c  acest cod


detecteaz  o singur  eroare (sau un num r impar de erori).
3.4. CODURI LINIARE 151

2. Fie codul binar de dimensiune k ³i lungime n = 2k construit în felul


urm tor: cuvintele de cod sunt formate din mesajul util (x1 , x2 , . . . , xk )
repetate înc  o dat . Astfel în ecare cuvânt de cod avem

xi = xi+k , pentru orice i = 1, 2, . . . , k.

Aceste relaµii pot  privite ca un sistem de ecuaµii liniar ³i omogen în


necunoscutele
x = (x1 , x2 , . . . , xk , xk+1 , . . . , x2k ),

având matricea (de tip (k, 2k)) de rang k


( )
H= Ik −Ik ,

³i va  capabil de detectarea unei singure erori, f r  a  posibil 


corectarea acesteia. S  observ m, c  acest cod face acela³i lucru ca ³i
codul descris în primul exemplu, îns  într-un mod mult mai inecient:
lungimea codului este aici este 2k faµ  de numai k+1 din primul exemplu.

3. S  construim un cod acum repetând de dou  ori mesajul util. Acesta va


 un cod binar de dimensiune k ³i lungime n = 3k . Cuvintele de cod au
proprietatea

xi = xi+k = xi+2k , pentru orice i = 1, 2, . . . , k.

Aceste relaµii formeaz  un sistem de ecuaµii liniar ³i omogen în necunos-


cutele
x = (x1 , x2 , . . . , xk , xk+1 , . . . , x2k , x2k+1 , . . . , x3k ),

având matricea de tip (2k, 3k) ³i de rang 2k


( )
Ik −Ik 0 ( )
H= = A I2k ,
Ik 0 −Ik

unde Ik (respectiv I2k ) este matricea unitate de ordinul k (respectiv 2k ),


iar matricea A = (Ik Ik )t . Cuvintele codului veric  din nou ecuaµia
H · xt = 0. Se vede de asemenea c  acest cod detecteaz  dou  erori ³i
corecteaz  o singur  eroare. El se nume³te cod de repetiµie, ³i este clar
c  dac  s-a produs o singur  eroare, repetiµia face posibil  identicarea
³i corectarea erorii.
Pentru k = 3 avem urm torul sistem de ecuaµii i.e. relaµii de calcul ale
simbolurilor de control:
152 CAPITOLUL 3. CODURI CORECTOARE DE ERORI



 x4 = x1



 x5 = x2

x6 = x3

 x7 = x1



 x = x2
 8
x9 = x3 .

Matricea de control al parit µii este a³adar


 
1 0 0 1 0 0 0 0 0
 0 1 0 0 1 0 0 0 0 
  ( )
 0 0 1 0 0 1 0 0 0 
H=  = I3 I3 0 .
 1 0 0 0 0 0 1 0 0  I3 0 I3
 
 0 1 0 0 0 0 0 1 0 
0 0 1 0 0 0 0 0 1

Matricea de generare a acestui cod este deci


 
( ) ( ) 1 0 0 1 0 0 1 0 0
G = I3 −At = I3 I3 I3 =  0 1 0 0 1 0 0 1 0  .
0 0 1 0 0 1 0 0 1

Prin urmare o informaµie util  α = (α1 , α2 α3 ) de 3 simboluri se codic 


în cuvântul de cod de 9 simboluri:

x = (α, α, α) = α · G.

care este o combinaµie liniar  a liniilor matricii G, cu coecienµi α1 , α2 α3 .

4. S  mai consider m un cod de repetiµie binar, o variant  extrem , denit 


în felul urm tor. Fie k = 1, deci avem numai dou  mesaje utile posibile,
0 ³i 1. S  repet m mesajul util de n − 1 ori. Astfel ecare cuvânt de cod
are proprietatea x1 = x2 = . . . = xn . Considerate ca sistem de ecuaµii,
aceste egalit µi se descriu matricial sub forma H · xt = 0, unde
 
1 1 0 0 ··· 0
 1 0 1 0 ··· 0 
 
 
H =  1 0 0 1 ··· 0 
 .. .. .. .. . . .. 
 . . . . . . 
1 0 0 0 ... 1

este o matrice de tip (n − 1, n), de rang evident n − 1. Practic vom avea


numai dou  cuvinte în acest cod: (0, 0, . . . , 0) ³i (1, 1, . . . , 1), ³i se vede
3.4. CODURI LINIARE 153

c  acest cod poate detecta n − 1 erori ³i poate corecta pân  la (n − 1)/2


erori. Avem deci ³i un exemplu de cod care poate corecta multe erori,
dar preµul pl tit este raportul de informaµie util  mic, de numai 1/n. De
asemenea num rul cuvintelor de cod (2) este foarte mic în comparaµie cu
num rul total al vectorilor (2n ).

5. In acest exemplu e k = 3, ³i la cele trei simboluri ale informaµiei utile


α1 = x1 , α2 = x2 ³i α3 = x3 s  mai ad ug m alte trei simboluri de
control, calculate conform relaµiilor de mai jos:

 x4 = x1 + x2
x5 = x1 + x3

x6 = x2 + x3 .

Matricea de control al parit µii este a³adar


 
1 1 0 1 0 0 ( )
H= 1 0 1 0 1 0  = A I3 .
0 1 1 0 0 1

Matricea de generare a acestui cod este deci


 
( ) 1 0 0 1 1 0
G = I3 −At =  0 1 0 1 0 1 .
0 0 1 0 1 1

Prin urmare o informaµie util  α = (α1 , α2 α3 ) se codic  în cuvântul de


cod:
x = (α1 , α2 α3 , α1 + α2 , α1 + α3 , α2 + α3 ) = α · G,
care este o combinaµie liniar  a liniilor matricii G, cu coecienµii α1 , α2 α3 .
S  observ m, c  acest cod este capabil de detectarea a dou  erori, ³i
de corectarea unei erori (de ce?). A³adar ³tie exact atât, cât ³tie ³i
codul de la punctul 3, în schimb lungimea lui este numai 6 faµ  de 9 al
codului cu repetiµie de la punctul 3. Exemplul acesta arat , c  simpla
repetare a transmiterii informaµiei utile nu este optim  pentru detectarea
³i corectarea erorilor.

6. În sfâr³it s  consider m codul liniar binar generat de matricea genera-


toare de la începutul acestui capitol
 
1 0 0 0 0 1 1
 0 1 0 0 1 0 1 
G=  0 0 1
. (3.10)
0 1 1 0 
0 0 0 1 1 1 1
154 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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,

de unde rezult  c  toate cuvintele de cod veric  ecuaµia H · xt = 0.


Am v zut deja c , acest cod poate detecta dou  erori ³i poate corecta
o eroare. Se vede deci c , de³i atât acest cod, cât ³i cel de la exemplul
anterior 5 corecteaz  o eroare ³i detecteaz  dou , acest cod este totu³i
mai bun, deoarece raportul informaµiei utile în cuvintele de cod este mai
mare  4/7 faµ  de numai 3/6. Codul acesta nu este sistematic, a³a cum
se vede din structura matricii H , care nu are forma standard.
S  menµion m c , pentru un cod dat nici matricea H nici matricea G nu este
unic . Într-adev r, baza unui (sub-)spaµiu vectorial nu este unic . Este u³or
de v zut c , permutând liniile matricii H (sau G) respectiv prin transform ri
ale acestora elementare (adunarea unei linii la alta etc.) codul nu se schimb :
C = ker H = Im G  în termenii algebrei liniare a aplicaµiilor liniare denite
de matricile G ³i H  r mâne neschimbat. Totu³i, dac  permut m coloanele
acestor matrici, codul se schimb .
Deniµie 3.4.8. Dou  coduri liniare C ³i C ′ de acela³i tip (n, k) se numesc
coduri echivalente , dac  exist  o permutare a indicilor σ : {1, 2, . . . , n} −→
{1, 2, . . . , n}, astfel ca

(x1 , x2 , . . . , xn ) ∈ C ⇔ (xσ(1) , xσ(2) , . . . , xσ(n) ) ∈ C ′

pentru orice cuvânt cod.


Pentru coduri liniare distanµa minim  se poate calcula mai simplu.
Observaµie 3.4.9. Distanµa minim  d a unui cod liniar C este m sura cea
mai mic  a unui cuvânt de cod din C .
Într-adev r, s  observ m c  distanµa este invariant  la translaµie, adic 
d(x, y) = d(x + z, y + z). De aici rezult  d(x, y) = d(x − y, 0) = w(x − y).
Deniµie 3.4.10. Un cod liniar de lungime n, de dimensiune k ³i de distanµ 
minim  d se nume³te cod de tip (n, k, d).
3.4. CODURI LINIARE 155

S  not m cu mld(H) (Minimal Linear Dependent) num rul minim al


coloanelor liniar dependente ale lui H . Avem urm toarea propoziµie.

Propoziµie 3.4.11. Fie H matricea de control al parit µii unui cod liniar C


de tip (n, k, d), dim(C) = k < n. Atunci avem:

1. mld(H) ≤ rank(H) + 1,

2. k = n − rank(H),

3. d = mld(H),

4. d < n − k + 1.

Demonstraµie. Punctul 1 ³i 2 este evident din deniµia lui mld(H) respectiv


a matricii H . Pentru a demonstra punctul 3, s  not m coloanele matricii H
cu c1 , c2 , . . . , cn . Pentru un cuvânt de cod x = (x1 , x2 , . . . , xn ) ∈ C avem
H · xt = x1 c1 + x2 c2 + . . . + xn cn = 0. Dac  µinem cont de observaµia 3.4.9 de
la pagina 154, rezult  d = mld(H).
Acum punctul cod:mld4 este o consecinµ  a punctelor precedente. Într-
adev r, k = n−rank(H) ≤ n−mld(H)+1 = n−d+1, ³i de aici d ≤ n−k+1.

3.4.1 Margini pentru coduri liniare


Pentru coduri liniare se pot stabili ³i alte relaµii limitative între parametrii aces-
tora, respectiv unele dintre acestea constituie condiµii suciente de existenµ 
pentru coduri liniare având parametrii daµi.

Propoziµie 3.4.12.

1. marginea Gilbert-Varshamov : Dac  avem


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.

2. marginea Plotkin : Pentru orice cod liniar este valabil  inegalitatea

nM (q − 1)
d≤ .
(M − 1)q
156 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Demonstraµie. Demonstraµia punctului 1 se face prin a ar ta c  se poate con-


strui o matrice de control al parit µii H care s  deneasc  un cod cu propri-
etatea cerut . Alegem mai întâi d − 1 vectori coloan  liniar independenµi din
Fn−k
q , lucru posibil datorit  punctului 4 din propoziµia 3.4.11 de la pagina 155.
Acum prin inducµie, dac  am ales deja j − 1 ≥ d − 1 coloane astfel ca oricare
d − 1 dintre ele sunt liniar independente atunci num rul tuturor combinaµiilor
liniare ale a cel mult d − 2 vectori din ace³ti j − 1 este


d−2
i
Cj−1 (q − 1)i ,
i=0

deci conform ipotezei (³i a faptului c  coecienµii binomiali sunt cresc tori în


raport cu indicele inferior) rezult  c  alegerea unor noi vectori este posibil 
pân  valoarea lui j − 1 ajunge la n − 1, adic  valoarea lui j devine n.
S  demonstr m acum punctul 2. Fie C un cod liniar de tipul (n, k) peste
Fq ³i e indicele i, 0 ≤ i ≤ n ales astfel ca exist  în codul C un cuvânt de
cod al c rui element de ordinul i este nenul. S  not m cu Ci subspaµiul lui C
format din cuvintele care au zero pe poziµia i. Spaµiul factor C/Ci are evident
q elemente. Dac  num rul total al cuvintelor de cod este M = |C| = q k unde
k este dimensiunea codului, atunci q k−1 = q k /q = M/|Ci | = |C/Ci |, deci Ci
are q k−1 elemente. Suma total  a m surilor cuvintelor de cod nu dep ³e³te
nq k−1 (q − 1). Num rul cuvintelor de cod nenule este evident q k − 1. Avem deci

nq k−1 (q − 1) ≥ suma m surilor cuvintelor de cod ≥ d(q k − 1).

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

3.4.2 Codicarea ³i decodicarea codurilor liniare


Fie C un cod liniar de tip (n, k) peste un corp nit Fq denit cu ajutorul
matricii de control al parit µii H .
Codicarea este simpl . Dac  codul este sistematic, atunci se construie³te
imediat matricea generatoare a codului, ³i codicarea se reduce la înmulµirea
matricial  a p rµii utile a mesajului conform propoziµiei 3.4.2 de la pagina 148.
Dac  codul nu este sistematic se rezolv  sistemul de ecuaµii omogen H · xt = 0
unde rank(H) = n − k în raport cu n − k variabile, ³i partea util  a mesajului
poate  mapat  pe cei k parametrii ai soluµiei. În alµi termeni, se determin 
3.4. CODURI LINIARE 157

o baz  a nucleului ker(H) care va constitui matricea generatoare a codului.


Codicarea este atunci din nou o înmulµire matricial .
Decodicarea în ambele cazuri începe prin înmulµirea matricial  s = H · y t ,
unde y este mesajul recepµionat. Dac  rezultat este s = 0, atunci y = x ∈ C ,
³i dând la o parte simbolurile de control, avem mesajul util transmis.
Ce se întâmpl  îns  dac  s ̸= 0, adic  y ̸= x pentru ecare cuvânt de cod
x? Iat  un algoritm "simplu" de decodicare. Mai întâi trebuie s  introducem
o m sur  a erorii prin urm toarea deniµie.

Deniµie 3.4.13. Dac  vectorul recepµionat este y atunci vectorul

S(y) = H · y t

se nume³te sindromul lui y .

Cu ajutorului sindromului putem construi un algoritm de decodicare a


codului liniar C . S  observ m c , dac  e = y − x este eroarea propriu zis 
produs  în procesul transmisiei mesajului x, atunci sindromul lui y este ³i
sindromul erorii! Într-adev r, H · e = H · (y − x) = H · y − H · x = H · y − 0 =
H · y . A³adar mulµimile de vectori y + C ³i e + C coincid, y + C = e + C , ³i
reprezint  clasa de echivalenµ  a mesajului recepµionat în raport cu subspaµiul
C . Bineînµeles sindromul este nul exact atunci când H · y = 0, adic  y este
cuvânt de cod.
Dac  ne aducem aminte c , am f cut ipoteza c  erori mai multe sunt mai
puµin probabile, eroarea cea mai probabil  trebuie identicat  cu vectorul e
având acela³i sindrom cu y , dar care are m sura Hamming cea mai mic !
Iat  deci algoritmul. Întocmim un tabel (se nume³te tabela Slepian ) cu
toate clasele de echivalenµ  y + C  pentru ecare sindrom posibil avem o clas 
 ale vectorilor din Fnq , desemnând drept reprezentanµi vectorul de m sur 
Hamming cea mai mic . C ut m apoi în acest tabel mesajul recepµionat ³i
identic m reprezentantul e al clasei în care se a . Cuvântul de cod trimis
cel mai probabil este x = y − e.
Se cuvine s  d m ³i un exemplu concret. S  întocmim tabela Slepian pentru
unul din codurile date în exemplele 3.4.7 de la pagina 150. Normal, alegem
codul de lungime minim ... deci exemplul 5. Iat  tabelul (incomplet; clasele de
echivalenµ  se a  pe coloane, prima coloan  este C , conµine vectorii codului):
158 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

A 000 001 010 011 100 101 110 111

B 000000 000001 000010 100000 000100 010000 001000 001001


C 001110 001111 001100 101110 001010 011110 000110 000111
010101 . . . . . . .
011011 . . . . . . .
100011 . . . . . . .
101101 . . . . . . .
110110 . . . . . . .
111000 . . . . . . .
A. sindromul
B. reprezentanµii claselor, codurile de m sur  minim 
C. celelalte elemente ale claselor (tabel incomplet)

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.

3.5 Coduri liniare speciale

M etoda de decodificare descris  în secµiunea precedent  are o impor-


tanµ  mai mult de principiu. În practic , pentru coduri mai lungi tabelul
Slepian este foarte mare, în plus selectarea reprezentantului de m sur  minim 
este de asemenea problematic . Metode mai eciente de decodicare presupun
propriet µi speciale pentru codurile liniare folosite. În secµiunea care urmeaz 
facem cuno³tinµ  cu câteva astfel de coduri.
3.5. CODURI LINIARE SPECIALE 159

3.5.1 Coduri Hamming


Deniµie 3.5.1. Fie n = 2m − 1, m ≥ 2, q = 2, ³i e matricea H de tipul
m × (2m − 1) construit  din toµi vectorii coloan  binari nenuli de lungime m.
Codul liniar binar denit de matricea H se nume³te cod Hamming binar , ³i se
noteaz  cu Cm .
Mai general, dac  q ̸= 2, atunci matricea H construit  similar din toµi
vectorii nenuli de lungime m  dintre perechile de vectori în care unul este un
multiplu scalar al celuilalt reµinându-se numai unul  se nume³te cod Hamming .

Codul Cm este deci un cod liniar binar, de tipul (2m − 1, 2m − 1 − m, 3).


Într-adev r, deoarece 1 + 2 = 3 (sic!  egalitatea trebuie v zut  totu³i în
reprezentarea binar ), num rul minim de coloane liniar dependente este 3, deci
conform punctului 3 din propoziµia 3.4.11 de la pagina 155, distanµa minim 
a codului este d = 3. Astfel codul Hamming Cm detecteaz  dou  erori ³i
corecteaz  una, conform observaµiei 3.3.6 de la pagina 147. Mai general, codul
Hamming peste corpul Fq este un cod liniar de tipul ((q m − 1)/(q − 1), (q m −
1)/(q − 1) − m, 3). S  remarc m, c  un cod Hamming este denit practic de
num rul m (³i bineînµeles corpul de scalari dat de q ).
D m ca exemplu codul C3 , matricea de vericare a parit µii ³i matricea
de generare a acestuia. Vom folosi programul GAP, mai precis un pachet
specializat al acestuia, GUAVA, conceput pentru ca suport pentru cercet ri
în coduri algebrice corectoare de erori (vezi ³i secµiunea 3.6 pentru mai multe
detalii).

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

Pentru m = 3 avem matricea de control al parit µii 3.11 din exemplul 6 de la


pagina 153, reluat de la exemplul introductiv de la începutul acestui capitol.
Analogia cu descoperirea monezii false descris acolo constituie cheia algo-
ritmului de decodicare pentru orice cod Hamming Cm : sindromul s = S(y)
160 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

 î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 .

Deniµie 3.5.2. Dac  complet m matricea de vericare a parit µii H a unui


cod liniar C de tipul (n, k, d) cu o coloan  de zerouri, apoi cu o linie de 1,
atunci obµinem o matrice H̃ care dene³te codul extins al codului C .

Astfel matricea de control al parit µii pentru codului extins al codului C3


este  
1 1 1 1 1 1 1 1
 0 0 0 1 1 1 1 0 
H̃ = 
 0 1 1 0
.
0 1 1 0 
1 0 1 0 1 0 1 0
Acest cod are tipul (8, 4, 4), deci corecteaz  numai o eroare dar detecteaz  trei!
Pachetul GUAVA furnizeaz  matricea de vericare a parit µii în forma
standard (partea dreapt  este matricea unitate).

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 .

Pe lâng  extinderea unui cod, mai avem la dispoziµie ca mecanism de generare


de noi coduri, considerarea codului dual, conform deniµiei 3.4.4 de la pagina
149. Folosind acest mecanism, avem urm toarele coduri.

Deniµie 3.5.3. Codul dual al codului Hamming binar Cm de tipul (2m −


1, 2m − 1 − m, 3) se nume³te codul binar simplex .
3.5. CODURI LINIARE SPECIALE 161

Parametrii acestuia sunt (2m − 1, m, 2m−1 ).


gap> C_BinSim:=DualCode(C_3);
a linear [7,3,4]2..3 dual code
gap> CoveringRadius(C_BinSim);
3
gap> Display(CheckMat(C_BinSim));
1 1 1 . . . .
1 . . 1 1 . .
. 1 . 1 . 1 .
1 1 . 1 . . 1
gap> Display(GeneratorMat(C_BinSim));
. 1 1 1 1 . .
1 . 1 1 . 1 .
1 1 . 1 . . 1
Deniµie 3.5.4. Consider m codul extins Hamming, având tipul (2m , 2m −
1 − m, 4). Codul dual al acestui cod se nume³te cod Reed-Muller de ordinul
întâi.
Parametrii acestui cod sunt (2m , m + 1, 2m−1 ).
gap> C_RM:=DualCode(C_3ext);
a linear [8,4,4]2 dual code
gap> IsSelfDualCode(C_RM);
true
gap> Display(CheckMat(C_RM));
1 1 1 . . . . 1
. 1 1 1 1 . . .
. . 1 . 1 1 . 1
. . . 1 1 1 1 .
gap> Display(GeneratorMat(C_RM));
. 1 1 1 1 . . .
1 . 1 1 . 1 . .
1 1 . 1 . . 1 .
1 1 1 . . . . 1

3.5.2 Coduri liniare ciclice


Deniµie 3.5.5. Un cod C ⊂ Fqn liniar se nume³te cod ciclic, dac  permut rile
ciclice ale cuvintelor de cod sunt tot cuvinte de cod. În formule, aceast  inva-
rianµ  a mulµimii C la permut rile ciclice se exprim  astfel:
(c0 , c1 , . . . , cn−1 ) ∈ C ⇒ (cn−1 , c0 . . . , cn−2 ) ∈ C.
162 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Fie c = (c0 , c1 , . . . , cn−1 ) un vector din Fnq . Introducem notaµia Z(c) =


(cn−1 , c0 , . . . , cn−2 ) pentru permutatrea ciclic  a elementelor vectorului c. Dac 
identic m spaµiul vectorial Fqn cu spaµiul factor al polinoamelor cu coe-
cienµi în Fq cu idealul generat de polinomul X n − 1, deci cu spaµiul vectorial
Fq [X]/(X n − 1), atunci se vede c  permutarea ciclic  a elementelor unui vec-
tor, descris  de aplicaµia liniar  Z corespunde în acest spaµiu înmulµirii cu X ,
modulo X n − 1.
Avem în propoziµia care urmeaz  o caracterizare natural  a codurilor ciclice.
Fie C ⊂ Fqn un cod ciclic. S  denim aplicaµia

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).

Aplicaµia f este evident liniar  ³i bijectiv . S  observ m ³i faptul c , inelul


Fq [X]/(X n − 1) este inel principal. Orice ideal al lui este generat de (imag-
inea unui-) un singur polinom, i.e. este format din toµi multiplii acestuia.
Într-adev r, preimaginea unui ideal al inelului factor este ideal în Fq [X], care
ind ideal principal, este generat de un polinom. Idealul din inelul factor este
generat astfel de imaginea acestui polinom.
Propoziµie 3.5.6. Codul liniar C este ciclic exact atunci când imaginea lui
este ideal în inelul factor Fq [X]/(X n − 1) (polinoame modulo X n − 1).
Demonstraµie. Deoarece X n = 1 mod (X n − 1), avem

f (Z(c)) = cn−1 + c0 X + . . . + cn−2 X n−1 mod (X n − 1)


= cn−1 X n + c0 X + . . . + cn−2 X n−1 mod (X n − 1)
= X · f (c) mod (X n − 1).

Astfel f (C) este ideal în Fq [X]/(X n − 1).


Invers, dac  f (C) este ideal în Fq [X]/(X n − 1), atunci în particular în-
mulµirea cu X transform  un element

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

mod (X n − 1), deci orice cod este multiplu mod (X n − 1) al polinomului


g . În particular, codul 0 reprezentat ³i de polinomul X n − 1 este multiplu (
mod (X n − 1)) al polinomului g , deci g|(X n − 1). Într-adev r, dac  cel mai
mare divizor comun (g, X n − 1) = d este un polinom de grad strict mai mic
decât m, atunci d = gh + (X n − 1)p = gh mod (X n − 1) deci d ∈ f (C) în
contradicµie cu alegerea generatorului idealului f (C). Deci (g, X n − 1) = g
adic  g|(X n − 1). Dac  polinomul g este ³i monic (i.e. coecientul lui X m este
1), atunci ele este unic.

În felul acesta aplicaµia f identic  cuvintele de cod din C cu polinoame


de grad cel mult n − 1 cu coecienµi din Fq . Vom face aceast  identicare f r 
s  ne mai referim la aplicaµia f , prin urmare putem spune (în sensul acestei
identic ri) c  C este un ideal în Fq [X]/(X n − 1).
S  presupunem în continuare faptul c  n ³i q sunt relativ prime, (n, q) = 1.

Deniµie 3.5.7. Polinomul g care genereaz  idealul C în inelul factor


Fq [X]/(X n − 1), se nume³te polinom generator al codului C .

A³adar polinomul generator al codului ciclic C de lungime n este un divizor


al polinomului X n − 1. S  calcul m matricea generatoare a acestui cod liniar
ciclic C .

Propoziµie 3.5.8. Fie C un cod liniar ciclic de lungime n ³i dimensiune k,


generat de polinomul g = g0 + g1 X + . . . + gm X m de grad m = n − k . Atunci
matricea generatoare a codului C este
 
g0 g1 . . . gm 0 ... 0
 0 g0 . . . gm−1 gm . . . 0 
G=
 .
,
. . . . . . 
0 0 ... g0 g1 . . . gm

matrice având k linii.

Demonstraµie. Ideea construcµiei acestei matrici este înmulµirea polinomului


generator cu X . Cu un u³or abuz de notaµie putem scrie deci
 
g
 Xg 
 
G= .. 
 . 
X k−1 g
164 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

S  ar t m c  aceast  matrice genereaz  codul C . Codul ind ciclic, ³i


prima linie a matricii ind cuvânt de cod, rezult  c  celelalte k − 1 linii sunt
tot cuvinte de cod. Mai avem de ar tat c  ultima linie permutat  ciclic este
tot cuvânt de cod.
Pentru aceasta s  observ m c , exist  un polinom h de grad k

h = h0 + h1 X + . . . + hk X k ,

unde deci hk ̸= 0, astfel ca X n − 1 = g · h, sau g · h = 0 mod (X n − 1). Scris 


aceast  egalitate mai explicit este potrivit  pentru exprimarea lui X k g :
1
Xkg = − (h0 g + h1 (Xg) + . . . + hk−1 X k−1 g),
hk
ceea ce este o combinaµie liniar  a celor k linii ale matricii G. Mai avem de
menµionat c  în mod vizibil  gm ̸= o  matricea G are rangul k , deci este
matrice generatoare pentru codul C .
S  mai facem o observaµie: e informaµia util  α = (α0 , α1 , . . . , αk−1 ). S 
calcul m α · G. Avem
 
g
( )  Xg 

α·G = α0 α1 . . . αk−1 ·  .. 
 . 
X k−1 g
= α0 g + α1 Xg + . . . + αk−1 X k−1 g
= f (α)g.

Pe scurt, putem arma:

Propoziµie 3.5.9. Codicarea mesajului α este înmulµirea "polinomului" α cu


generatorul codului g .

Cu alte cuvinte operaµia de codicare este o înmulµire polinomial ! Co-


durile liniare ciclice sunt într-adev r speciale, ³i au avantaje în aplicaµii care
cer o codicare rapid .
S  vedem cum se face decodicare în cazul codurilor liniare ciclice. Începem
cu o deniµie.

Deniµie 3.5.10. Polinomul


Xn − 1
h=
g
se nume³te polinom de vericare a parit µii al codului C .
3.5. CODURI LINIARE SPECIALE 165

Numele acestui polinom este justicat în urm toarea propoziµie.

Propoziµie 3.5.11. Fie g ³i h polinomul generator ³i polinomul de vericare


a parit µii respectiv pentru un cod liniar ciclic C . Atunci

c∈C ⇔c·h=0 mod (X n − 1).

Demonstraµie. Dac  c ∈ C atunci exist  un polinom α astfel ca c = α · g .


Atunci c · h = α · g · h = α · (X n − 1) = 0 mod (X n − 1), ³i invers.

Astfel detectarea erorii este tot o înmulµire polinomial  (modulo Xn − 1)!


Rezultatul nul semnic  lipsa erorii, iar cel nenul existenµa erorii.
Din egalitatea g · h = X n − 1 se vede c  rolul polinoamelor g ³i h este
interschimbabil. Mai precis are loc urm toarea propoziµie.

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 .

Demonstraµie. Not m ca mai înainte h = h0 + h1 X + . . . + hk−1 X k−1 ³i c =


c1 X + . . . + cn−1 X n−1 . Coecientul lui xi în produsul polinoamelor c · h
c0 + ∑
este n−1j=0 cj hi−j ³i evident exponenµii puterilor lui x sunt redu³i modulo n.
S  observ m deci c  matricea de vericare a parit µii codului C este:
 
0 ... 0 0 hk 0 ... h1 h0
 0 ... 0 hk hk−1 0 ... h0 0 
 
 . . . . . . . . . 
hk ... h2 h1 h0 0 ... 0 0

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 .

Deniµie 3.5.13. Polinomul hk + hk−1 X + . . . + h0 X k se nume³te polinomul


reciproc al polinomului h.

S  d m în sfâr³it ³i un exemplu care se poate urm ri ³i f r  suport de calcul


deosebit.
166 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

Exemplu 3.5.14. Fie q = 2 ³i n = 7. Avem descompunerea X 7 − 1 = (X 3 +


X +1)(X 4 +X 2 +X +1). Alegem g = X 3 +X +1. Atunci h = X 4 +X 2 +X +1
iar h⊥ = X 4 + X 3 + X 2 + 1. Matricile de generare ³i de vericare a parit µii
G respectiv H sunt:
 
1 1 0 1 0 0 0
 0 1 1 0 1 0 0 
G=  0 0 1 1 0 1 0 

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) ,

unde coloanele sunt evident coecienµii polinoamelor r(i) .


2. Matricea generatoare a lui C este
( )
G = g (m) g (m+1) . . . g (n−1) ,
unde coloanele sunt coecienµii polinoamelor.
Demonstraµie. Pentru a demonstra 1 s  observ m c  polinoamele X i − r(i)
sunt divizibile cu g , deci X i − r(i) ∈ C . Polinoamele g (i) mod (X −1) sunt liniar
n

independente ³i formeaz  de liniile unei matrici generatoare pentru C . S  mai


observ m c  aceast  matrice va avea ³i forma canonic .
Pentru punctul 2 s  observ m c  polinoamele r(i) sunt diferite dou  câte
dou , ³i matricea H are pentru orice cuvânt de cod c proprietatea:
H · ct = c0 r0 + c1 r1 + . . . + cn−1 rn−1
= c0 + c1 X + . . . + cn−1 X n−1 mod (g)
= 0 mod (g).
3.5. CODURI LINIARE SPECIALE 167

S  vedem un exemplu concret pentru toate acestea. Vom face calculele în


GUAVA.

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

A³adar matricea generatoare în forma canonic  a codului C este


 
1 0 0 0 1 1 0
 0 1 0 0 0 1 1  ( )
G=  0 0
 = I4 A .

1 0 1 1 1
0 0 0 1 1 0 1
Este interesant s  remarc m  m car ³i pentru frumuseµea leg turilor dintre
"teoria corpurilor de numere nite" ³i teoria codurilor corectoare de erori 
urm torul fapt:
Propoziµie 3.5.16. Codurile binare Hamming sunt ciclice.
Demonstraµie. Consider m corpul nit Fq = GF (q), unde q = 2m . Grupul
multiplicativ Fq∗ al acestui corp se poate scrie cu ajutorul unui element primitiv
α sub forma mulµimii puterilor acestuia, (vezi spre exemplu tabelele exemplelor
de corpuri 3.2.2, de la paginile 116, 117, 119, 121 respectiv). A³adar ecare
putere a elementului primitiv se poate scrie astfel

αi = a0 + a1 α + a2 α2 + . . . + am−1 αm−1 .

Matricea format  din ace³ti coecienµi scri³i pe coloane este


( )
H = 1 α α2 . . . α2 −1 ,
m

o matrice de tip (m, 2m − 1) ³i conµine toµi vectorii binari nenului de lungime


m. Codul denit de H este deci codul Hamming de tipul (2m − 1, m, 3)!
3.5. CODURI LINIARE SPECIALE 169

Un vector de lungime n = 2m − 1, c = (c0 , c1 , . . . , cn−1 ), este cuvânt de cod


dac  H · ct = 0, adic  în termenii polinomiali c(α) = 0. S  ne aducem aminte
acum c  α este r d cin  numai pentru polinoamele multiplii ai polinomului s u
minimal  s -l not m pe acesta acum g  deci g|c, adic  codul C este generat
de g !

S  amintim f r  demonstraµie ³i propoziµia

Propoziµie 3.5.17. Orice cod simplex este ciclic.


Ultima întrebare pe care o punem acum este: cum se face corectarea erorii
în cazul codurilor liniare ciclice?

Propoziµie 3.5.18. Fie codul liniar ciclic C generat de polinomul g , matricea


de vericare a parit µii H . Atunci sindromul S(y) al unui mesaj recepµionat y
are proprietatea
S(y) = y mod (g).
Prin urmare dac  diferenµa e = y − c faµ  de un cuvânt de cod c este eroarea
produs  în cursul transmisiei, atunci S(y) = S(e). Dac  în plus algem cuvântul
de cod c astfel ca deg(e) < deg(g), atunci S(y) = e.

Demonstraµie. Fie y = (y0 , y1 , . . . , yn−1 ). Atunci

S(y) = H · y t = y0 r0 + y1 r1 + . . . + yn−1 rn−1


= y0 + y1 X + . . . + yn−1 X n−1 mod (g)
= y mod (g).

Pe baza acestei propoziµii se observ  deci c  sindromul cuvântului y este


nul exact atunci când polinomul y este nul mod y . A³adar în loc s  înmulµim
mesajul recepµionat cu polinomul de vericare a parit µii h putem împ rµi cu
polinomul de generare g . Mai mult, deoarece codul este ciclic dintr-un singur
reprezentant al unei clase de echivalenµ  se pot obµine toate prin înmulµire mod
X n − 1. Toate acestea se pot însuma în urm torul algoritm de decodicare:

Propoziµie 3.5.19. Fie C un cod ciclic de lungime n generat de polinomul g


peste un corp nit Fq . S  presupunem c  C poate corecta t erori.

1. Detectarea erorii. Împ rµim mesajul recepµionat y la polinomul g , ³i


reµinem restul r. Avem deci r = S(y) = S(e) = e, unde vectorul e este
eroarea cea mai probabil .
170 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

2. Corectarea erorii.Calcul m si = X i r( mod g) pentru toµi i : 0 ≤ i ≤


(n−1). Dac  în lista si se g se³te un cuvânt sj de m sur  Hamming mai
mic  decât t, atunci eroarea cea mai probabil  este X n−j sj mod (X n −1).
În caz contrar eroarea nu poate  corectat .

Exemple 3.5.20. Iat  ³i dou  exemple de calcul comentate.


• S  consider m un polinom divizor al polinomului x7 − 1. Pentru aceasta
descompunem polinomul x7 − 1 în factori...bineînµeles cu sprijinul GAP.

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 ]

Vom alege ca polinom generator al unui cod ciclic de lungime 7 polinomul

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

• S  consider m un polinom divizor al polinomului x15 − 1. Descompunem


 tot cu ajutorul GAP  polinomul x7 − 1 în factori.

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 ]

S  alegem ca polinom generator al unui cod ciclic de lungime 15 polino-


mul

g = (x4 + x + 1) · (x4 + x3 + x2 + x + 1) = x8 + x7 + x6 + x4 + 1.

gap> g:=x^8+x^7+x^6+x^4+1; % polinom generator


x^8+x^7+x^6+x^4+Z(2)^0
gap> C:=GeneratorPolCode(g,15,GF(2)); % cod ciclic generat
a cyclic [15,7,1..5]3..5 code defined by gen. pol. over GF(2)
gap> MinimumDistance(C); % distanµa minim 
5
gap> Display(GeneratorMat(C));
1 . . . 1 . 1 1 1 . . . . . .
. 1 . . . 1 . 1 1 1 . . . . .
. . 1 . . . 1 . 1 1 1 . . . .
. . . 1 . . . 1 . 1 1 1 . . .
172 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

. . . . 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

3.5.3 Coduri BCH


Printre codurile ciclice cele mai performante se num r  codurile BCH. Avan-
tajulprincipal pe care-l prezint  aceste coduri este faptul c  distanµa minim 
a lor poate  prev zut  de la început prin construcµia codului.
Începem scurta lor prezentare prin intermediul unui exemplu, care dezv luie
oarecum ideea care se a  în spatele construcµiei acestor coduri.
Plec m cu ideea aritmeticii binare ³i a codurilor Hamming, denite de
matrici de vericare a parit µii care conµin pe coloan  toate numerele nenule
pân  la 2m − 1, pentru un m dat. “tim c  aceste coduri au distanµa minim  3,
deci detecteaz  dou  erori ³i corecteaz  una. Sindromul unei erori este chiar
num rul de ordine al simbolului eronat. S  alegem m = 4, ³i deci "numerele"
corpului nit GF(24 ) de 16 elemente.
S  ne propunem construirea unui cod care corecteaz  dou  erori! Pentru
aceasta este natural încercîm dublarea num rul liniilor matricii de vericare
a parit µii codului Hamming de lungime 15 = 24 − 1, în ideea de a avea
un sindrom al erorii mai bogat în informaµie. S  consider m deci un cod cu
matricea de detectare a erorii de tipul urm tor:
( )
1 2 ... 15
H= ,
f (1) f (2) . . . f (15)

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)

Conform cerinµei precedente funcµia f trebuie s  NU aib  proprietatea f (i +


j) = f (i)+f (j), pentru a nu se confunda cu sindromul pentru o singur  eroare!
Se exclude deci funcµia f (i) = i, dar ³i funcµia f (i) = i2 , deoarece în aritmetica
binar  (i + j)2 = i2 + j 2 . Ne trebuie o funcµie deci pentru care sistemul de
ecuaµii {
i+j = s1
f (i) + f (j) = s2 ,
174 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

s  aib  soluµie unic . S  facem un experiment cu funcµia f (i) = i3 . Avem deci


de rezolvat sistemul {
i + j = s1
i3 + j 3 = s2 ,

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.

Observaµie 3.5.21. S  observ m c , folosirea polinomului reciproc polinomu-


lui 3.12 adic  a polinomului

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.

S  d m acum deniµia general  a codurilor BCH. Începem cu o teorem 


care pune bazele deniµiei acestor coduri. O d m aici f r  demonstraµie.

Teorem  3.5.22. Fie c, d, n, q ∈ N, q = pn , p un num r prim, ³i 2 ≤ d ≤ n.


Fie m ordinul multiplicativ al lui num rului q mod n. Fie de asemenea ζ o
r d cin  primitiv  de ordin n în corpul nit Fqm ³i e mζ i polinomul minimal
al lui ζ i . Not m cu I mulµimea I = {c, c + 1, . . . , c + d − 2}. Fie în sfâr³it C
un cod ciclic de lungime n peste corpul Fq .
Sunt echivalente urm toarele armaµii:

1. c ∈ C ⇔ c(ζ i ) = 0, pentru orice i ∈ I .

2. Polinomul generator al codului C este cel mai mic multiplu comun al


polinoamelor mζ i , i ∈ I .
3.5. CODURI LINIARE SPECIALE 175

3. Matricea de vericare a parit µii codului C este


 
1 ζc ... ζ c(n−1)
 1 ζ c+1 ... ζ (c+1)(n−1) 
 
H= .. .. .. 
 1 . . . 
1 ζ c+d−2 ... ζ (c+d−2)(n−1)

Deniµie 3.5.23. Codul C care are propriet µile din propoziµia precedent 


se nume³te cod BCH (dup  numele celor trei descoperitori, Bose, Chaudhuri,
Hocquenghem). Distanµa minim  a acestui cod  datorit  chiar construcµiei
lui  este cel puµin d, ³i se nume³te distanµ  proiectat  .
Dac  c = 1 atunci spunem c  C este cod BCH în sens restrâns .
Dac  n = q m − 1, codul C se nume³te primitiv .

Deniµia dat  codului BCH este justicat  de urm toarea propoziµie.

Propoziµie 3.5.24. Fie C un cod BCH cu distanµa proiectat  d. Atunci dis-


tanµa minim  a codului C este cel puµin d.

Demonstraµie. Trebuie s  ar t m c  matricea de control al parit µii H al co-


dului C are cel mult d − 1 coloane liniar dependente peste corpul GF(pm ),
conform punctului 3 din propoziµia 3.4.11 de la pagina 155. S  alegem d − 1
coloane arbitrare. Fie primele elemente ale ale acestora

ζ ci1 , ζ ci2 , . . . , ζ cid−1 .

Subdeterminantul de ordinul d − 1 este



1 1 ... 1

ζ i1 ζ i2 ... ζ id−1

ζ c(i1 +i2 +...+id−1 ) · .. .. .. ..
. . . .

ζ (d−2)i1 ζ (d−2)i2 . . . ζ (d−2)id−1


= ζ c(i1 +i2 +...+id−1 ) 1≤l<k≤d−1 (ζ
ik − ζ il ) ̸= 0,
deci diferit de 0, ceea ce demonstreaz  armaµia propoziµiei.

Cum se face codicarea ³i decodicarea codurilor BCH? Fie x un cuvânt


de cod ³i e y cuvântul recepµionat. S  not m ca de obicei vectorul de eroare
cu e = w − v . Fie ζ o r d cin  primitiv  a unit µii de ordin n. Sindromul lui
y este:
( )t
S(y) = H · y t = Sc Sc+1 . . . Sc+d−2 ,
176 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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

Propoziµie 3.5.25 (Decodicarea codurilor BCH). Fie C un cod BCH cu


distanµa proiectat  d ≥ 2t+1. Presupunem c  într-un cuvânt de cod recepµionat
y exist  cel mult t erori. Decodicare va avea urm torii pa³i:

1. Determin m sindromul
( )t
S(y) = Sc Sc+1 . . . Sc+d−2 .

2. determin m num rul maxim r ≤ t al ecuaµiilor

s0 Sj + s1 Sj+1 + . . . + sr−1 Sr+j−1 + Sr+j = 0,

astfel ca matricea sistemului s  e nesingular . Acest num r r este egal


cu num rul efectiv de erori în cuvântul recepµionat. Rezolv m acest sis-
tem maximal.

3. Determin m r d cinile polinomului

s = s0 + s1 X + . . . + sr−1 X r−1 + X r .

4. Determin m poziµiile erorilor rezolvând sistemul de ecuaµii

ei1 X i1 + ei2 X i2 + . . . + eir X ir , (eik ̸= 0, pentru orice 1 ≤ k ≤ r).

S  d m un exemplu de calcul pentru codicare ³i decodicare.

Exemplu 3.5.26. Fie α un element primitiv al corpului GF(24 ), ³i e α4 +


α+1 = 0. Fie g = x10 +x8 +x5 +x4 +x2 +x+1 polinomul generator al unui cod
BCH de tip (15, 5). S  presupunem c  recepµion m mesajul 110000011010000.
S  determin m cuvântul de cod transmis ³i mesajul util.

Presupunem cel mult dou  erori. Determin m sindromul erorii, deci sin-
dromul cuvântului recepµionat.

Si = S(αi ) = e(αi ) = (αi )i1 + (αi )i2 = X i + Y i ,

unde am notat X = αi1 ³i Y = αi2 . Avem

S13 = S3 + XY S1 ,

de unde obµinem sistemul


{
X +Y = S1
XY = S2 − S3 /S1 .
178 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

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.

3.5.4 Baza Gröbner ³i decodicarea codurilor BCH


Exist  o leg tur  profund  între codurile algebrice ciclice ³i baza Gröbner ,
care este obiectul cercet rilor curente. Nu vom intra în detalii în spaµiul acestei
c rµi, îns  nu ne putem abµine s  nu ilustr m aceast  leg tur  cu prezentarea
chiar ³i numai cu minime comentarii ale unor exemple preluate din [35].
Fie C un cod BCH care are capacitatea de corectare proiectat  a t erori
³i e (s1 , s2 , . . . , s2t ) vectorul sindromului unui mesaj recepµionat. Ideea (lui
Cooper) este de a interpreta poziµiile eronate ale mesajului recepµionat drept
r d cinile unui sistem de ecuaµii ale sindromurilor, de forma urm toare:


 f1 = ζ1 + ζ2 + . . . + ζt − s1 = 0


 f = ζ3 + ζ3 + . . . + ζ3 − s = 0
2 1 2 t 2
(3.14)

 ...



ft = ζ12t−1 + ζ22t−1 + . . . + ζt2t−1 − st = 0.
În consecinµ , polinomul ale c rui r d cini sunt erorile mesajului recepµionat,
este generatorul idealului principal
{ t }

gi fi | gi ∈ F2 (s1 , s2 , . . . , st )[ζ1 , ζ2 , . . . , ζt ] ∩ F2 (s1 , s2 , . . . , st )[ζ1 ],
i=1

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

I = (z1 + z2 − s1 , z13 + z23 − s2 ).

Baza Gröbner al idealului I este

{s1 z22 + s21 z2 + s31 + s2 , z1 + z2 + s1 }.

Primul polinom d  chiar ecuaµia 3.12 de la pagina 174! Iat  ³i programul


scris în Singular:

ring R=(2,s1,s2),(z1,z2),lp;
ideal I=z1+z2-s1,z1^3+z2^3-s2
groebner(I);

Astfel exemplul 3.5.26 de la pagina 177 se poate repeta identic aici.

• Fie C un cod BCH binar care corecteaz  t = 3 erori. Consider m inelul


de polinoame P = F2 (s1 , s2 , s3 )[z1 , z2 , y] ³i idealul

I = (z1 + z2 + z3 − s1 , z13 + z23 + z33 − s2 , z15 + z25 + z35 − s3 ).

Baza Gröbner al idealului I este


{(s31 + s2 ) · z33 + (s41 + s1 ∗ s2 ) · z32 + (s21 ∗ s2 + s3 ) · z3 +
(s61 + s31 ∗ s2 + s1 s3 + s22 ),

(s31 + s2 ) · z22 + (s31 + s2 ) · z2 · z3 + (s41 + s1 s2 ) · z2 +


(s31 + s2 ) · z32 + (s41 + s1 s2 ) · z3 + (s21 s2 + s3 ),

z1 + z2 + z3 + s1 }

Primul polinom are o singur  necunoscut  z3 , ³i este polinomul care are


drept r d cini erorile cuvântului recepµionat. Programul scris în Singular
pentru calculul acestui polinom este:

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

S  mai concretiz m exemplul pentru a simula o eroare, dou  erori sau


trei erori. Dac  codul C este codul BCH de tip (15, 5, 7) ³i polinomul
reciproc primului polinom al bazei Gröbner este (dup  o normalizare a
acestuia)

s31 s2 + s3 2 s61 + s31 s2 + s1 s3 + s22 3


σ(z) = 1 + s1 · z + ·z + ·z , (3.15)
s31 + s2 s31 + s2
1. S  presupunem c  avem o singur  eroare. Fie polinomul erorii
e(α) = α3 . Sindromul va 
( 3 )t
α α9 1

Aceste componente vor concretiza polinomul 3.15 sub forma

σ(z) = 1 + α3 · z,

deci va localiza eroarea în mod corect.


2. S  presupunem acum c  avem dou  erori. Fie polinomul erorii
e(α) = α2 + α3 . Sindromul va 
( 6 )t
α α5 α5

Polinomul 3.15 devine

σ(z) = 1 + α6 · z + α5 · z 2 = (1 + α2 · z)(1 + α3 · z),

deci din nou erorile sunt identicate.


3. În sfâr³it s  presupunem acum c  avem trei erori. Fie polinomul
erorii e(α) = α + α2 + α3 . Sindromul va 
( 11 )t
α α11 0

Polinomul 3.15 devine

σ(z) = 1 + α11 · z + α13 · z 2 + α6 · z 3 = (1 + α · z)(1 + α2 · z)(1 + α3 · z),

³i erorile sunt identicate.

3.5.5 Coduri Reed-Solomon


O form  particular  a codului BCH este codul RS (Reed-Solomon).
Deniµie 3.5.28. Un cod BCH peste Fq în sens restâns (m = 1), care are
distanµa proiectat  d ³i lungimea n = q − 1 se nume³te cod Reed-Solomon , pe
scurt cod RS .
3.5. CODURI LINIARE SPECIALE 181

Propoziµie 3.5.29. Polinomul generator al codului RS este


d−1
g= (x − ζ i ),
i=1

unde ζ este un element primitiv al corpului Fq . Distanµa minim  a codului


este d.

Demonstraµie. Pe baza punctului 2 din teorema 3.5.22 rezult  c  într-adev r


polinomul generator al codului este cel indicat. Propoziµia anterioar  arat  c 
distanµa minim  este cel puµin d. Cum avem ³i inegalitatea contrar , rezult 
c  distanµa minim  este d.

O construcµie echivalent  a codurilor RS este urm toarea. Fie


α0 , α1 , . . . , αn−1 , n elemente distincte în corpul nit Fq , unde n ≤ q . Ma-
tricea generatoare a codului RS de tip (n, k) este matricea
 
1 1 ... 1
 α0 α1 ... αn−1 
 
G= .. .. .. .. .
 . . . . 
α0k−1 α1k−1 . . . αn−1
k−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,

sau echivalent, prin calculul valorii polinomului u în punctele α0 , α1 , . . . , αn−1 .


O alt  construcµie a codurilor RS (prescurtate) este urm toarea. Alegem
un element α ∈ Fq al c rui ordin este m ≥ n. În construcµia precedent  alegem
α0 = 1, α1 = α, . . . , αn−1 = αn−1 . Atunci matricea generatoare a unui cod RS
este  
1 1 1 ... 1
 1 α α2 ... αn−1 
 
 1 α2 α 4 ... α2(n−1) 
G= .
 .. .. .. . . .. 
 . . . . . 
1 αk−1 α2(k−1) . . . α(k−1)(n−1)

Înc  o deniµie putem obµine dac  impunem unui cuvânt de lungime n ≤ m


 privit ca polinom de grad n − 1  s  se anuleze în punctele α, α2 , . . . , αn−k ,
182 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

adic  matricea de control a parit µii pentru acest cod s  e


 
1 α α2 ... αn−1
 1 α2 α 4 ... α2(n−1) 
 
H= . . . .. .. .
 .. .. .. . . 
1 αn−k α2(n−k) . . . α(n−k)(n−1)

Acest cod este cod MDS, ³i este echivalent cu cel precedent în cazul n = m.

3.6 Aplicaµii  exemple în GAP - GUAVA

A sosit momentul s  punem în funcµiune câteva coduri, s  facem câteva


exemple de codic ri ³i decodic ri. Prin erori simulate putem testa re-
spectiv ilustra capacitatea de detectare ³i corectare a erorilor a câtorva coduri.
Vom apela bineînµeles la pachetul GUAVA, deja amintit.
Pachetul GUAVA se încarc  în GAP cu comanda:

gap> LoadPackage("guava");

Va  interesant s  relu m chiar exemplele 3.4.7 de la pagina 150, s  in-


terog m parametrii codurilor ³i s  punem în funcµiune algoritmii de codicare
³i decodicare. Vom parcurge mai întâi cele ³ase exemple pe rând.

1. Prima instrucµiune este denirea codului. GUAVA cunoa³te mai multe


modalit µi de denire a unui cod: prin matricea generatoare, prin ma-
tricea de vericare a parit µii, prin intermediul denumirii codurilor con-
sacrate etc.
Denim aici codul prin matricea de vericare a parit µii ³i a³ m ³i
matricea generatoare.

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. APLICA•II  EXEMPLE ÎN GAP - GUAVA 183

[ 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), 0*Z(2), Z(2)^0, Z(2)^0 ] ]
gap> Display(G);
1 . . . . . 1
. 1 . . . . 1
. . 1 . . . 1
. . . 1 . . 1
. . . . 1 . 1
. . . . . 1 1

Interog m parametrii codului.

gap> Size(C); % num rul cuvintelor de cod


64
gap> WordLength(C); % lungimea coului
7
gap> Dimension(C); % dimensiunea codului
6
gap> Redundancy(C); % num rul simbolurilor de control
1
gap> MinimumDistance(C); % distanµa minim 
2
gap> CoveringRadius(C); % raza de acoperire
1
gap> IsLinearCode(C); % este cod liniar?
true
gap> IsMDSCode(C); % este cod MDS?
true
gap> IsPerfectCode(C); % este cod perfect?
false
gap> List(C); % lista cuvintelor cod
[ [ 0 0 0 0 0 0 0 ], [ 0 0 0 0 0 1 1 ], [ 0 0 0 0 1 0 1 ],
[ 0 0 0 0 1 1 0 ], [ 0 0 0 1 0 0 1 ], [ 0 0 0 1 0 1 0 ],
[ 0 0 0 1 1 0 0 ], [ 0 0 0 1 1 1 1 ], [ 0 0 1 0 0 0 1 ],
...
[ 1 1 1 1 0 0 0 ], [ 1 1 1 1 0 1 1 ], [ 1 1 1 1 1 0 1 ],
[ 1 1 1 1 1 1 0 ] ]

Codul dual ³i parametrii acestuia.

gap> Cd:=DualCode(C); % definirea codului dual


184 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

a cyclic [7,1,7]3 dual code


gap> Display(CheckMat(Cd)); % matricea verif. a parit.
1 1 . . . . .
. 1 1 . . . .
. . 1 1 . . .
. . . 1 1 . .
. . . . 1 1 .
. . . . . 1 1
gap> Display(GeneratorMat(Cd)); % matricea generatoare
1 1 1 1 1 1 1
gap> MinimumDistance(Cd); % ditanµa minim 
7
gap> CoveringRadius(Cd); % raza de acoperire
3

Codicare ³i decodicare: codicarea este înmulµirea mesajului util cu


matricea generatoare, respectiv ad ugarea la mesajul util al unui singur
simbol de control, suma mod 2 a simbolurilor mesajului util. Decodicare
nu exist , matricea de vericare a parit µii detecteaz  o singur  eroare.
Iat  un exemplu:

gap> u:=Codeword("110110"); % mesaj util


[ 1 1 0 1 1 0 ]
gap> c:=u*G; % mesaj codificat
[ 1 1 0 1 1 0 0 ]
gap> H*c; % verificarea codului, ok
[ 0 ]
gap> c:=Codeword("100110"); % mesaj recepµionat eronat
[ 1 0 0 1 1 0 ]
gap> H*c; % detectarea erorii, ok
[ 1 ]

2. Pentru acest cod GUAVA are o deniµie intern .

gap> C:=RepetitionCode(7,GF(2));
a cyclic [7,1,7]3 repetition code over GF(2)

Parametrii codului sunt:

gap> Size(C); % num rul cuvintelor de cod


2
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 185

gap> WordLength(C); % lungimea unui cuvânt de cod


7
gap> Dimension(C); % dimensiunea codului
1
gap> Redundancy(C); % num rul simbolurilor de control
6
gap> MinimumDistance(C);% distanµa minim 
7
gap> CoveringRadius(C); % raza de acoperire
3
gap> IsLinearCode(C); % este cod liniar?
true
gap> IsMDSCode(C); % este cod MDS?
true
gap> IsPerfectCode(C); % este cod perfect?
true
gap> List(C); % lista cuvintelor de cod
[ [ 0 0 0 0 0 0 0 ], [ 1 1 1 1 1 1 1 ] ]

Codul ind perfect ³i având raza de acoperire 3 = (7 − 1)/2, orice vector


al spaµiului vectorial F72 se a  într-o bil  de raz  cel mult 3 cu centrul
într-un cuvânt de cod. În acest caz simplu  avantajul simplit µii extreme
este c  aceste propriet µi pot  v zute ³i nemijlocit  avem doar dou 
bile de raz  3 care conµin împreun  toµi vectorii spaµiului. Calcul m ³i
matricea generatoare ³i matricea de vericare a parit µii.

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

Codul dual, matricea generatoare ³i matricea de vericare a parit µii


pentru acesta.

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

S  vedem acum o codicare ³i decodicare, i.e. corectare de eroare. Pen-


tru aceasta redenim mai întâi codul prin propria lui matrice generatoare,
pentru a-l face GUAVA s  uite structura de cod ciclic ³i s -l considere
numai cu structura de cod liniar. Aceasta va avea ca efect utilizarea im-
plicit  a algoritmului de decodicare general pentru coduri liniare, bazat
pe calcului sindromului.

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.

gap> u:=Codeword("1"); % mesajul util


[ 1 ]
gap> c:=u*G; % cuvântul de cod generat
[ 1 1 1 1 1 1 1 ]
gap> H*c; % testarea cuvântului, ok
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 187

[ 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

gap> IsMDSCode(C); % este cod MDS?


false
gap> IsPerfectCode(C); % este cod perfect?
false
gap> List(C); % lista cuvintelor cod
[ [ 0 0 0 0 0 0 ], [ 0 0 1 0 0 1 ],
[ 0 1 0 0 1 0 ], [ 0 1 1 0 1 1 ],
[ 1 0 0 1 0 0 ], [ 1 0 1 1 0 1 ],
[ 1 1 0 1 1 0 ], [ 1 1 1 1 1 1 ] ]

Matricea generatoare este:

gap> G:=GeneratorMat(C); % matricea generatoare


[ [ 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(G);
1 . . 1 . .
. 1 . . 1 .
. . 1 . . 1

Codul dual ³i parametrii acestuia:

gap> Cd:=DualCode(C); % Codul dual


a cyclic [6,3,1..2]2..3 dual code
gap> C=Cd; % C=dualul lui C?
true
gap> IsSelfDualCode(C); % este cod auto-dual?
true
gap> Gd:=Display(GeneratorMat(Cd));
1 . . 1 . .
. 1 . . 1 .
. . 1 . . 1
gap> Hd:=Display(CheckMat(Cd));
1 . . 1 . .
. 1 . . 1 .
. . 1 . . 1
gap> MinimumDistance(Cd); %...pt codul dual
2
gap> CoveringRadius(Cd); %...pt codul dual
3
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 189

Codicarea este o simpl  înmulµire matricial . Decodicarea este posibil 


doar întîmpl tor: distanµa minim  2 nu asigur  a decodicare unic .

gap> u:=Codeword("110"); % mesajul util


[ 1 1 0 ]
gap> c:=u*G; % mesajul codificat
[ 1 1 0 1 1 0 ]
gap> H*c; % verificare, este cuvânt de cod
[ 0 0 0 ]
gap> Decodeword(C,c); % decodificare identic 
[ 1 1 0 1 1 0 ]
gap> c:=Codeword("100110"); % eroare simulat  în poziµia 3
[ 1 0 0 1 1 0 ]
gap> H*c; % eroarea este detectat 
[ 0 1 0 ]
gap> Decodeword(C,c); % decodificat  "corect"
[ 1 1 0 1 1 0 ]
gap> c:=Codeword("110111"); % eroare simulat  în poziµia 6
[ 1 1 0 1 1 1 ]
gap> H*c; % eroarea este detectat 
[ 0 0 1 ]
gap> Decodeword(C,c); % decodificat  "incorect"
[ 1 1 1 1 1 1 ]

4. Codul de repetiµie tripl . Denirea matricii de vericare a parit µii, ³i a


codului. A³eaz  matricea generatoare.

gap> H:=Z(2)*[[1, 0, 0, 1, 0, 0, 0, 0, 0],


[0, 1, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 1, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 1]];;
gap> Display(H);
1 . . 1 . . . . .
. 1 . . 1 . . . .
. . 1 . . 1 . . .
1 . . . . . 1 . .
. 1 . . . . . 1 .
. . 1 . . . . . 1
gap> C:=CheckMatCode(H,GF(2));
190 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

a linear [9,3,1..3]3 code defined by check matrix over GF(2)


gap> G:=Display(GeneratorMat(C));
1 . . 1 . . 1 . .
. 1 . . 1 . . 1 .
. . 1 . . 1 . . 1

Parametrii codului:

gap> Size(C); % num rul cuvintelor de cod


8
gap> WordLength(C); % lungimea coului
9
gap> Dimension(C); % dimensiunea codului
3
gap> Redundancy(C); % num rul simbolurilor de control
6
gap> MinimumDistance(C); % distanµa minim 
3
gap> CoveringRadius(C); % raza de acoperire
3
gap> IsLinearCode(C); % este cod liniar?
true
gap> IsMDSCode(C); % este cod MDS?
false
gap> IsPerfectCode(C); % este cod perfect?
false
gap> List(C); % lista cuvintelor cod
[ [ 0 0 0 0 0 0 0 0 0 ], [ 0 0 1 0 0 1 0 0 1 ],
[ 0 1 0 0 1 0 0 1 0 ], [ 0 1 1 0 1 1 0 1 1 ],
[ 1 0 0 1 0 0 1 0 0 ], [ 1 0 1 1 0 1 1 0 1 ],
[ 1 1 0 1 1 0 1 1 0 ], [ 1 1 1 1 1 1 1 1 1 ] ]

Codul dual ³i parametrii acestuia:

gap> Cd:=DualCode(C); % codul dual


a cyclic [9,6,1..2]1..3 dual code
gap> Display(GeneratorMat(Cd)); % matricea generatoare
1 . . 1 . . . . .
. 1 . . 1 . . . .
. . 1 . . 1 . . .
. . . 1 . . 1 . .
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 191

. . . . 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

Iat  ³i exemple de codicare ³i decodicare. Codicarea este numai o


înmulµire matricial . Distanµa minim  ind 3, este posibil  corectarea
unei singure erori.

gap> u:=Codeword("110"); % mesajul util


[ 1 1 0 ]
gap> c:=u*G; % mesajul codificat
[ 1 1 0 1 1 0 1 1 0 ]
gap> H*c; % verificare, e cuvânt de cod
[ 0 0 0 0 0 0 ]
gap> Decodeword(C,c); % decodificare corect 
[ 1 1 0 1 1 0 1 1 0 ]
gap> c:=Codeword("100110110"); % eroare simulat , poziµia 2
[ 1 0 0 1 1 0 1 1 0 ]
gap> H*c; % eroarea este detectat 
[ 0 1 0 0 1 0 ]
gap> Decodeword(C,c); % ³i decodificat  corect
[ 1 1 0 1 1 0 1 1 0 ]

5. Acest cod are urm toarea matrice de vericare a parit µii ³i matrice de


generare:

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

Urm toarele comenzi a³eaz  parametrii codului:

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 
3
gap> CoveringRadius(C); % raza de acoperire
2
gap> IsLinearCode(C); % este cod liniar?
true
gap> IsMDSCode(C); % este cod MDS?
false
gap> IsPerfectCode(C); % este cod perfect?
false
gap> List(C); % lista cuvintelor cod
[ [ 0 0 0 0 0 0 ], [ 0 0 1 0 1 1 ],
[ 0 1 0 1 0 1 ], [ 0 1 1 1 1 0 ],
[ 1 0 0 1 1 0 ], [ 1 0 1 1 0 1 ],
[ 1 1 0 0 1 1 ], [ 1 1 1 0 0 0 ] ]

Iat  un exemplu de codicare ³i de decodicare. Codul corecteaz  o


singur  eroare.

gap> Cd:=DualCode(C); % codul dual


a linear [6,3,1..3]2 dual code
gap> Display(CheckMat(Cd)); % matr. verif. parit.
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 193

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> u:=Codeword("110"); % mesajul util


[ 1 1 0 ]
gap> c:=u*G; % mesajul codificat
[ 1 1 0 0 1 1 ]
gap> H*c; % verificare, este cuvânt de cod
[ 0 0 0 ]
gap> Decodeword(C,c); % decodificare identic 
[ 1 1 0 0 1 1 ]
gap> c:=Codeword("100011"); % eroare simulat  în poziµia 2
[ 1 0 0 0 1 1 ]
gap> H*c; % avem eroare, eroare detectat 
[ 1 0 1 ]
gap> Decodeword(C,c); % decodificat  corect
[ 1 1 0 0 1 1 ]

6. În nal ultimul exemplu (6) de la pagina 153.

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> Size(C); % num rul cuvintelor de cod


16
gap> WordLength(C); % lungimea coului
7
gap> Dimension(C); % dimensiunea codului
4
gap> Redundancy(C); % num rul simbolurilor de control
3
gap> MinimumDistance(C); % distanµa minim 
3
gap> CoveringRadius(C); % raza de acoperire
1
gap> IsLinearCode(C); % este cod liniar?
true
gap> IsMDSCode(C); % este cod MDS?
false
gap> IsPerfectCode(C); % este cod perfect?
true
gap> List(C); % lista cuvintelor cod
[ [ 0 0 0 0 0 0 0 ], [ 0 0 0 1 1 1 1 ],
[ 0 0 1 0 1 1 0 ], [ 0 0 1 1 0 0 1 ],
[ 0 1 1 1 1 0 0 ], [ 0 1 1 0 0 1 1 ],
[ 0 1 0 1 0 1 0 ], [ 0 1 0 0 1 0 1 ],
[ 1 1 1 0 0 0 0 ], [ 1 1 1 1 1 1 1 ],
[ 1 1 0 0 1 1 0 ], [ 1 1 0 1 0 0 1 ],
[ 1 0 0 1 1 0 0 ], [ 1 0 0 0 0 1 1 ],
[ 1 0 1 1 0 1 0 ], [ 1 0 1 0 1 0 1 ] ]

Tabela Slepian, cu reprezentanµii claselor de echivalenµ  se poate obµine


tot cu ajutorul pachetului GUAVA. Prima coloan  conµine vectorii eroare
 de m sur  minim . Prima linie corespunde cuvintelor codului, acestea
 ³i numai acestea  au sindromul nul.
3.6. APLICA•II  EXEMPLE ÎN GAP - GUAVA 195

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 ] ] ]

gap> Cd:=DualCode(C); % codul dual


a linear [7,3,1..4]2..3 dual code
gap> Display(CheckMat(Cd)); % matr. verif. parit.
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 1 . 1 . . 1
gap> MinimumDistance(Cd); % distanµa minim 
4
gap> CoveringRadius(Cd); % raza de acoperire
3

Exemplu de codicare ³i decodicare.

gap> u:=Codeword("110"); % mesajul util


[ 1 1 0 ]
gap> c:=u*G; % mesajul codificat
[ 0 1 1 1 1 0 0 ]
gap> H*c; % verificare, este cuvânt de cod
[ 0 0 0 ]
gap> Decodeword(C,c); % decodificare identic 
[ 0 1 1 1 1 0 0 ]
gap> c:=Codeword("0101100");% eroare simulat  în poziµia 3
[ 0 1 0 1 1 0 0 ]
gap> Syndrome(C,c); % sindromul arat  poziµia erorii
[ 0 1 1 ]
gap> Decodeword(C,c); % decodificat  corect
196 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

[ 0 1 1 1 1 0 0 ]

Linia a patra a tabelului sindromurilor arat  c  vectorul de eroare este

[ 0 0 0 1 0 0 0 ]

care sc zut din mesajul eronat reface cuvântul de cod al mesajului.

S  d m ³i un exemplu în care utiliz m facilit µi specice ale GUAVA 


numeroase coduri sunt deja implementate ³i pot  invocate prin numele lor.

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. APLICA•II  EXEMPLE ÎN GAP - GUAVA 197

3.6.1 Utilizarea codurilor


Cercetarea matematic  în domeniul codurilor algebrice continu . Scopul ur-
m rit este descoperirea de coduri cât mai apropiate de limitele teoretice, de
marginile impuse de teorie, respectiv analiza codurilor care se pot construi prin
mijloace deja avute la dispoziµie. Nu am amintit nimic despre coduri bazate
pe geometrie algebric  (coduri AG), ³i despre coduri convoluµionale.
În încheiere s  menµion m f r  comentarii o problem  înc  deschis  din
domeniul teoriei codurilor corectoare de erori: nu se ³tie dac  exist  sau nu un
cod binar auto-dual de tipul (72, 36, 16) (pentru detalii vezi [35]).
S  enumer m acum câteva din utiliz rile codurilor corectoare de erori, din
care se poate intui importanµa acestui capitol de matematic  pentru diverse
domenii inginere³ti.

• Coduri BCH sunt utilizate de sistemele de comunicaµii europene ³i


transatlantice. Mesajul util are lungimea de 231 de simboluri ³i este
utilizat un polinom generator de grad 24, astfel lungimea cuvântului de
cod este 231 + 24 = 255. Codul detecteaz  cel puµin 6 erori.
• O aplicaµie interesant  a codurilor RS este codicarea informaµiei pe
(ast zi înc ) cel mai utilizat (cel puµin în distribuirea muzicii de calitate
HiFi) suport de memorie, compact discul, CD. El folose³te dou  coduri
RS peste corpul GF(28 ) având distanµa minim  5. Codicarea ³i decodi-
care este subtil  în sensul c  este încorporat ³i un mecanism de corectare
a zgîrâeturilor  i.e. a blocurilor compacte de erori  prin distribuirea
structurii cuvintelor de cod pe porµiuni zice mai mari. Astfel deterior ri
locale care distrug porµiuni insemnate totu³i nu afecteaz  decodicarea
intact  a informaµiei de pe CD.
• Codul Reed-Solomon (7, 2) a fost folosit de satelitul US Defense Depart-
ment Tactical Satellite
• Codul Reed-Solomon (31, 15) este folosit în comunicaµiile militare tactice.
• Reµeaua INTELSAT V folose³te codul BCH (127, 112) care detecteaz  3
³i corecteaz  3 erori.
• Memoriile digitale foto folosesc un cod Reed-Solomon de lungime 63 peste
corpul nit F26 .
• Un cod ciclic (CRC) era folosit la corectarea erorilor de citire ale infor-
maµiilor înregistrate pe benzi magnetice.
• Sondele spaµiale Mariner ale NASA foloseau codul Reed-Muller (32, 6, 16)
la transmiterea codicat  a fotograilor din spaµiul cosmic.
198 CAPITOLUL 3. CODURI CORECTOARE DE ERORI

• Coduluri binare de tip (2k , k, 2k−1 ) Walsh-Hadamard (ortogonale) sunt


folosite în telefonia mobil  celular  pentru identicarea staµiilor mobile
active în cadrul unei staµii xe. Lungimea tipic  a codului este de 64 de
biµi.

• 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.

3.7 Probleme propuse


1. S  se determine elementele primitive ale corpurilor F7 , F11 , F13 , F17 ³i
F19 .
Indicaµie: Trebuie g sit un generator al grupului multiplicativ al corpu-
lui. Pentru corpul F7 acest grup are 6 elemente, deci avem nevoie de un
element de ordin 6. 23 = 1 mod 7, deci 2 nu este de ordin 7. 32 ̸= 1
mod 7 ³i 33 ̸= 1 mod 7 deci doar 36 = 1 mod 7 deci 3 este un element
primitiv. Deoarece 43 = 1 mod 7, 4 nu este element primitiv. 52 ̸= 1
mod 7, ³i 53 ̸= 1 mod 7 deci vom avea 56 = 1 mod 7 deci 5 este ele-
ment primitiv. În sfâr³it, 6 = −1 mod 7 deci 6 are ordinul 2. Elementele
primitive sunt deci 3 ³i 5. (Se observ  c  5 = 3−1 .)
Alt  soluµie (în GAP ): Pentru ecare a = 2, 3, . . . , 6 se ruleaz  ciclul for
de mai jos. Elementul a este element primitiv dac  ³i numai dac  doar
ultima putere are valoarea 1.

for i in [1..6] do
p:=a^i;
Print(p,"\n");
od;
3.7. PROBLEME PROPUSE 199

2. În care din inelul de polinoame peste coecienµi din corpurile F2 , F3 , F5 ,


F7 , F17 este polinomul x2 + 1 ireductibil?
Indicaµie: Polinomul ind de gradul 2, el este ireductibil exact atunci,
când nu are r d cini. Se testeaz  toate elementele corpului dat.
Alt  soluµie în Singular :
ring R=2,x,dp;
poly f=x2+1;
factorize(f);
// -> factorii lui f, si multiplicitatile acestora
...³i înc  una în GAP :
x:=Indeterminate(GF(2),"x");
f:=x^2+1;
Factors(f);
% -> factorii lui f, factorii multiplii sunt repetate
3. S  se determine toate polinoamele ireductibile de grad 2 în inelul de
polinoame peste coecienµi din corpurile F5 , F7 , F11 ³i F17 .
Indicaµie: Polinoamele ind de gradul 2, ele sunt ireductibile exact
atunci, când nu au r d cini. Se testeaz  toate polinoamele de grad 2
cu toate elementele corpului dat.

4. Câte polinoame monice ireductibile de grad 3 ³i de grad 4 exist  în inele


de polinoame GF(23 )[x], GF(32 )[x] ³i GF(11)[x]? Daµi câte un exemplu
de astfel de polinom!
Indicaµie: Se folose³te teorema 3.2.28 de la pagina 138.
5. S  se determine polinomul minimal (peste corpul prim GF(p)) pentru
elementele de mai jos (din corpul nit GF(pn )).

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

6. S  se studieze în mediul de programare GAP-GUAVA codul ciclic de


lungime 8, generat de polinomul x2 + Z(3)0 . S  se determine:

(a). Distanµa minim .


(b). Polinomul de vericare a parit µii.
(c). Matricea generatoare.
(d). Matricea de control.
(e). S  se verice dac  sunt cuvinte de cod ³i dac  nu s  se decodice
cuvintele x5 − x3 + x ³i x4 + x3 + x2 − x.

7. S  se studieze în mediul de programare GAP-GUAVA codul ciclic de


lungime 31, generat de polinomul x5 + x2 + 1. S  se determine:

(a). Distanµa minim .


(b). Polinomul de vericare a parit µii.
(c). Matricea generatoare.
(d). Matricea de control.
(e). S  se verice dac  sunt cuvinte de cod ³i dac  nu s  se decodice
cuvintele x25 + x20 + x19 + x18 + x17 + x15 + x13 + x9 + x4 + x3 + x
³i x30 + x25 + x22 + x19 + x10 + x6 + x5 + x3 + x.

8. S  se studieze în mediul de programare GAP-GUAVA codul ciclic de


lungime 31, al c rui polinom de vericare a parit µii este x1 0 + x8 + x7 +
x5 + x3 + x2 + Z(2)0 . S  se determine:

(a). Distanµa minim .


(b). Polinomul generator.
(c). Matricea generatoare.
(d). Matricea de control.
(e). S  se verice dac  sunt cuvinte de cod ³i dac  nu s  se decodice
cuvintele x30 + x29 + x27 + x26 + x25 + x23 + x21 + x16 + x13 + x11 +
x10 + x7 + x6 + x5 + x4 + x3
³i x28 + x27 + x25 + x23 + x22 + x21 + x20 + x19 + x18 + x17 + x11 +
x9 + x8 + x7 + x6 + x5 + x3 + x + Z(2)0 .
Bibliograe
[1] ***, GAP - Groups, Algorithms, Programming - a System for Computa-
tional Discrete Algebra, version 4.4 (2010)
http://www.gap-system.org/
http://www.gap-system.org/Doc/manuals.html

[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

[3] ***, Singular, A Computer Algebra System for Polynomial Computations,


HTML User Manual for Singular Version 3-1-2, Oct 2010
http://www.singular.uni-kl.de/
http://www.singular.uni-kl.de/Manual/latest/index.htm

[4] ***, Singular libraries - Coding Theory,


http://www.singular.uni-kl.de/Manual/latest/sing1400.htmSEC1476

[5] ***, Singular libraries - Symbolic-numerical Solving,


http://www.singular.uni-kl.de/Manual/latest/sing1316.htmSEC1392

[6] W. W. Adams, Ph. Loustaunau, An Introduction to Groebner Bases, Gra-


duate Studies in Mathematics, vol 3,
American Mathematical Society, 1996

[7] Th. Becker, V. Weispfenning, Gröbner bases: a Computational Approach


to Commutative Algebra,
Springer Verlag, New York, 1993

[8] J. Borwein, D. Bayley, R. Girgensohn, Experimentation in Mathematics -


Computational Path to Discovery,
A.K. Peters, Natick, Massachusetts, 2004

201
202 BIBLIOGRAFIE

[9] J. Borwein, D. Bayley, Mathematics bz Experiment - Plausible Reasoning


in the 21st Century,
A.K. Peters, Natick, Massachusetts, 2004

[10] S.Bulygin, R. Pellikaan, Bounded distance decoding of Linear error-


correcting codes with Gröbner bases,
Journal of Symbolic Computation 44 (2009), pp. 1626-1643

[11] C. K. Chui, Multivariate splines


SIAM, Philadelphia, PA, (1988)

[12] D. Cox, J. Little, D. O'Shea, Ideals, varieties, and algorithms, An Intro-


duction to Computational Algebraic Geometry and Commutative Algebra,
Springer Verlag, New York, (third edition) 2007

[13] I. Creang , D. Simovici, Teoria codurilor,


Editura Didactic  ³i Pedagogic , Bucure³ti, 1975

[14] S. Crivei, A. M rcu³, Ch. S c rea, Cs. Szántó, Computational Algebra


with Applications to Coding Theory and Criptography,
Editura Fundaµiei pentru Studii Europene, Cluj-Napoca, 2006

[15] W. Decker, C. Lossen, Computing in Algebraic Geometry - A Quick Start


using Singular,
Springer Verlag, Berlin, 2006

[16] J. von zur Gathen, Modern Computer Algebra,


second edition, Cambridge University Press, 2003

[17] G.-M. Greuel, G. Pster, A Singular introduction to commutative algebra,


Springer-Verlag, Berlin, 2002, 2008

[18] L. Györ, S. Gy®ri, I. Vajda, Információ és kódelmélet,


Typotex Kiadó, 2000

[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

[20] B. Hasset, Introduction to Algebraic Geometry,


Cambridge University Press, 2007

[21] A. Horváth, Proving Geometric Theorems via Gröbner Bases Theory,


Buletinul ³tiinµic al Universit µii Baia Mare, seria B, Matematica-
Informatica, vol XIV (2000), nr 1, pp. 49-58.
BIBLIOGRAFIE 203

[22] A. Horváth, B. Finta, Finding Roots of Nonlinear Systems of Equations


on a Domain, Mathematica Pannonica, 15/1 (2004), pp. 37-44

[23] A. Horváth, B. Finta, Solving Nonlinear Systems of Equations on a Do-


main, Bulletins for Applied and Computer Mathematics, BAM-1973, vol.
XLIV, nr.4, 2002 Technical University of Budapest, (XCIX), pp. 129-135.

[24] W. C. Human, V. Pless, Fundamentals of Error-Correcting Codes,


Cambridge University Press, 2003

[25] D. Ionescu, Codicare ³i coduri,


Editura Tehnic , Bucure³ti, 1981

[26] R.Lidl, H. Niederreiter, The Finite Fields,


Cambridge University Press, second edition reprinted, 2000

[27] F.J. Macwilliams, N.J.A. Sloane, The Theory of Error-Correcting Codes,


North-Holland, Amsterdam, 1977

[28] A. Marcus, Komputeralgebra,


Egyetemi Kiadó, Kolozsvár, 2005

[29] Gh. Micula, S. Micula, Handbook of Splines, Kluwer Academic Publishers,


Dordrecht, Boston, London, 1999

[30] T. Mora, Solving Polynomial Equation Systems I,


Cambridge University Press, 2003

[31] T. Murphy, Finite Fields,


Trinity College, University of Dublin, Course 373, 2003

[32] V. Pless, Introduction to the Theory of Error Correcting Codes,


John Wiley and Sons, New York, 1998

[33] H.E. Rose, Linear Algebra - A Pure Mathematical Approach,


Birkhäuser Verlag, Basel, 2002

[34] L.L. Schumaker, Spline functions: basic theory,


John Wiley and Sons, New York, 1981

[35] M. Sala et all, Gröbner Bases, Coding and Cryptography,


Cambridge University Press, 2003

[36] S. s. Kuo, Numerical Methods and Computers,


Addison-Wesley, London, (1965)
204 BIBLIOGRAFIE

[37] D. D. Stancu, The Remainder of certain Linear Approximation Formulas


in Two Variables,
J. SIAM Numer. Anal., Ser. B, Vol 1, USA, (1964), pp. 137-153

[38] W. V. Vasconcelos, Computational Methods in Commutative Algebra and


Algebraic Geometry,
Springer Verlag, Berlin, 1998
List  de guri
1 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.1 V (xy · (x2 + y2 − 25)) ³i V (xy(x3 − 20x − 15 − y2)) . . . . . 20


1.2 V (x2 − y2 + z2) ³i V (x2y − z2), "Withney umbrella." . . . 21
1.3 V (z3 − zx2 + y2) ³i V (z4 − zx2 + y2) . . . . . . . . . . . . . 21
1.4 O quartic  ³i A3 = V (x3 − y2 − z2). . . . . . . . . . . . . . . 22
1.5 D5 = V (x(x3 + y2) + z2) ³i E6 = V (x4 + y3 + z2). . . . . . . 22
1.6 E7 = V (y(x3 + y2) + z2) ³i E8 = V (x5 + y3 + z2). . . . . . . 23
1.7 Patru cercuri (A) . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.8 Patru cercuri (B) . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.9 Patru cercuri (C) . . . . . . . . . . . . . . . . . . . . . . . . . . 60

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

funcµie m sur  Hamming, 145


Moebius, 136 margine
Gilbert-Varshamov, 155
Gilbert-Varshamov Hamming, 147
margine, 155 Plotkin, 155
grad Sigleton, 147
al polinomului, 18 matrice
total al monomului, 18 de control, 103, 148
de vericare, 103
Hamming
forma standard, 148
cod, 159
generatoare, 102, 149
binar, 159
canonic , 149
distanµ , 145
monom, 18
m sur , 145
coecientul lui, 18
margine, 147
gradul total, 18
ideal, 25 principal, 49
al termenilor principali, 50 mulµime
baz  pentru, 25 a termenilor principali, 50
câtul lor, 28
Noether
denit de varietate, 37
inel, 37
generat, 25
nit, 25 ordonare
intersecµia lor, 28 lexicograc , 48
maximal, 32 graduat , 48
monomial, 49 invers graduat , 48
prim, 46 monomial , 47
principal, 26
produsul lor, 28 Plotkin
radicalul lui, 28 margine, 155
suma lor, 28 polinom, 18
inel, 24 anulator, 116
comutativ, 24 coecient principal, 49
de fracµii, 35 de vericare a parit µii, 164
domeniu de integritate, 25 generator, 163
factor, 32 gradul lui, 18, 49
factorial, 46 monic, 135
local, 33 reciproc, 165
208 GLOSAR

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

tabela Slepian, 157


termen
al polinomului, 18

varietate
an , 20
denit  de ideal, 37
vector
ortogonal, 149

S-ar putea să vă placă și