Vous êtes sur la page 1sur 61

Algebra Computazionale

Serena Cical`o
Willem de Graaf

ii

Indice
1 Basi di Gr
obner
1.1 Basi di Gr
obner . . . . . . . . . . . . . . . . . . . . .
1.1.1 Anelli polinomiali . . . . . . . . . . . . . . .
1.1.2 Il caso di polinomi in una variabile . . . . . .
1.1.3 Ordini monomiali . . . . . . . . . . . . . . . .
1.1.4 Algoritmo di divisione con resto . . . . . . .
1.1.5 Ideali monomiali . . . . . . . . . . . . . . . .
1.1.6 Basi di Gr
obner . . . . . . . . . . . . . . . .
1.1.7 Calcolare basi di Gr
obner . . . . . . . . . . .
1.2 Applicazioni di basi di Gr
obner . . . . . . . . . . . .
1.2.1 Risolvere equazioni polinomiali . . . . . . . .
1.2.2 Applicazioni di basi di Gr
obner in geometria
1.2.3 Polly-cracker . . . . . . . . . . . . . . . . . .
1.3 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
2
3
4
6
8
9
15
15
17
21
22

2 Fattorizzazione di numeri interi in fattori primi


2.1 Fattorizzazione . . . . . . . . . . . . . . . . . . .
2.1.1 Metodo di Fermat . . . . . . . . . . . . .
2.1.2 Basi di fattori . . . . . . . . . . . . . . . .
2.1.3 Frazioni continue . . . . . . . . . . . . . .
2.1.4 Fattorizzazione con frazioni continue . . .
2.1.5 Curve ellittiche . . . . . . . . . . . . . . .
2.1.6 Fattorizzazione con curve ellittiche . . . .
2.1.7 Complessit`
a . . . . . . . . . . . . . . . . .
2.2 Esercizi . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

25
25
25
26
27
31
34
37
41
41

3 Fattorizzazione di polinomi
3.1 Alcuni fatti generali sui polinomi . . . . . . .
3.2 Lalgoritmo di Berlekamp . . . . . . . . . . .
3.3 Algoritmo di Cantor-Zassenhaus (1981) . . .
3.4 Fattorizzazione di polinomi in Q . . . . . . .
3.4.1 Sollevamento di Hensel . . . . . . . . .
3.4.2 Sollevamento di Hensel per pi`
u fattori
3.5 Esercizi . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

43
43
44
48
49
51
56
57

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Capitolo 1

Basi di Gr
obner
1.1

Basi di Gr
obner

1.1.1

Anelli polinomiali

Sia k indichiamo un campo. Indichiamo con k[x1 , . . . , xn ] lanello polinomiale in n variabili,


cio`e
X
k[x1 , . . . , xn ] = {
ci1 ...in xi11 xinn | ci1 ...in k}.
i1 ,...,in

Esempio 1.1.1 In una variabile scriviamo k[x], in due variabili scriviamo k[x, y] e in tre
variabili k[x, y, z].
Se = (1 , . . . , n ), i Z, scriviamo x = x1 1 xnn . Questo elemento `e chiamato
monomio.
Esempio 1.1.2 Abbiamo che x2 yz 10 `e un monomio. Invece 2x2 y + 3yz `e un polinomio.
P
In generale un polinomio pu`
o essere scritto come c x .
Un anello R si dice commutativo se `e un anello e f g = gf per ogni f, g R.
Definizione 1.1.3 Sia R un anello commutativo. Un sottoinsieme I R `e chiamato ideale
se
- 0 I;
- se f, g I anche f + g I;
- se f I e g R allora gf I.
Nella teoria delle basi di Gr
obner avremo a che fare solamente con anelli polinomiali.
Quindi R = k[x1 , . . . , xn ].
Siano f1 , . . . , fs k[x1 , . . . , xn ] e poniamo
s
X
gi fi | gi k[x1 , . . . , xn ]}.
I ={
i=1

Allora I `e un ideale di k[x1 , . . . , xn ]. Questo si vede facilmente.

Basi di Gr
obner
Vedremo pi`
u avanti che ogni ideale di k[x1 , . . . , xn ] `e di questa forma.
Notazione. Indichiamo I con I = hf1 , . . . , fs i e diciamo che I `e generato da f1 , . . . , fs .
Problema fondamentale: Dato I = hf1 , . . . , fs i e g k[x1 , . . . , xn ] determinare se g I.

Esempio 1.1.4 Sia R = k[x, y, z], f1 = xyz xy, f2 = x2 y yz e g = yz 2 yz. Vogliamo


vedere se g hf1 , f2 i o meno.
Si ha che
xf1 zf2 = x2 y + yz 2
quindi aggiungendo f2 si trova
xf1 zf2 + f2 = yz 2 yz = g
dunque g = xf1 + (1 z)f2 hf1 , f2 i.
Esempio 1.1.5 Sia I k[x, y, z] lideale generato da f1 = x2 yz yz x, f2 = xy 2 z xy y,
f3 = xyz 2 xy z. Si pu`
o provare che x2 z 2 e y z sono elementi di I. Ma certamente
non `e molto ovvio.
Si vede che provare che f hf1 , . . . , fs i pu`
oPessere abbastanza complicato. Ma almeno
sappiamo che dobbiamo trovare hi tali che f = i hi fi . Provare che f 6 hf1 , . . . , fs i sembra
ancora pi`
u complicato.

1.1.2

Il caso di polinomi in una variabile

Lemma 1.1.6 Sia I k[x] un ideale. Allora esiste un h k[x] tale che I = hhi.
Dimostrazione. Sia h un elemento non nullo di grado minimo in I. Sia f I. Allora
f = qh + r con q, r k[x] e deg(r) < deg(h).
Poiche r = f qh I segue che r = 0 in quanto h `e di grado minimo in I. Quindi f = qh.

Adesso sia I = hhi k[x] e f k[x]. Abbiamo la seguente procedura per verificare se
f I o meno:
1) Si scrive f = qh + r con deg(r) < deg(h). (Divisone con resto.)
2) Se r = 0 allora f I altrimenti f 6 I.
La prova del Lemma 1.1.6 dimostra che questa procedura funziona. (Osserviamo che se I
`e generato da h allora h `e un elemento di I di grado minimale.)
Vorremo trovare qualcosa di analogo nel caso di pi`
u variabili. Nel caso di una variabile
m
n
usiamo un ordine sui monomi x < x se m < n. Su questo si basa la divisione con resto.
Per pi`
u variabili facciamo una cosa analoga.

1.1 Basi di Gr
obner

1.1.3

Ordini monomiali

Ricordiamo che x = x1 1 xnn dove = (1 , . . . , n ).


Definizione 1.1.7 Un ordine sullinsieme {x } dei monomi di k[x1 , . . . , xn ] `e chiamato
ordine monomiale se
1) `e totale, cio`e per ogni , abbiamo x x oppure x x e quindi due elementi sono
confrontabili.
2) `e moltiplicativo, cio`e se x x allora x x x x per ogni .
3) Non ci sono catene infinite discendenti x(1) > x(2) > . . ..
Scriviamo N = Z0 . Possiamo identificare {x | Nn } e Nn tramite x .
Quindi se `e un ordine monomiale, otteniamo un ordine su Nn con < se x < x .
Allora le condizioni per essere un ordine monomiale diventano:
1) `e totale.
2) Se allora + + per ogni .
3) Non ci sono catene infinite discendenti.
Nel seguito, quando parliamo di un ordine monomiale, a volte usiamo lordine sui monomi,
e a volte su Nn , secondo quale `e il pi`
u conveniente.
Spesso la seguente osservazione `e utile.
Lemma 1.1.8 Poniamo 0 = (0, . . . , 0) Nn e sia < un ordine monomiale. Allora > 0
per ogni Nn , 6= 0 .
Dimostrazione. Se < 0 allora + < + 0 = . Nello stesso modo troviamo che
(k + 1) < k. Quindi abbiamo trovato una catena discendente infinita, che `e una contraddizione.

Esempio 1.1.9 (Ordine lessicografico). Si indica con <lex . Si ha che <lex se i < i
dove i `e minimale con i 6= i .
Per esempio in k[x, y, z] abbiamo che
xy 2 z 100 <lex x2 yz
e
xyz <lex xy 3 .
Dimostriamo ora che <lex `e un ordine monomiale.
Dimostrazione. Per provare che <lex `e monomiale bisogna controllare che verifichi le tre
propriet`a. Si ha:
1) E totale. Questo `e ovvio perche se 6= esiste i con i 6= i .
2) Se <lex e i minimale con i 6= i e quindi i < i . Allora i `e ancora minimale con
( + )i 6= ( + )i e
( + )i = i + i < i + i = ( + )i .

Basi di Gr
obner

Quindi ( + ) <lex ( + ).
3) Sia (i) per i 1 con (1) >lex (2) >lex . . . una catena discendente infinita. Usiamo
linduzione su n (n `e il numero di variabili) per trovare una contraddizione.
Se n = 1 `e ovvio che non esistano catene discendenti infinite.
Assumiamo che non ci siano catene discendenti infinite per n 1 variabili (sempre con
<lex ).
Osserviamo che 0 (i)1 (1)1 .
Quindi
(1)1
[
{(i) | i 1} =
Ck
k=0

dove Ck = {(i) | i 1, (i)1 = k}.


Quindi almeno un Ck0 deve essere infinito.
Allora facciamo Ck0 = {(2 , . . . , n ) | Ck0 }.
Questa `e una catena discendente infinita per <lex con n 1 variabili. Quindi abbiamo
una contraddizione.

Esempio 1.1.10 (Ordine lessicografico graduato). Si indica con <glex .
Sia || = 1 + . . . + n . Questo `e il grado del monomio x . Definiamo <glex se

- || < ||

- oppure || = || e <lex .

E ovvio che <glex `e un ordine monomiale.

1.1.4

Algoritmo di divisione con resto

P
Sia f = c x k[x1 , . . . , xn ] e sia un ordine monomiale fissato. Sia massimale per
lordine con c 6= 0. Allora x `e chiamato monomio di testa di f e denotato con LM(f )
(per leading monomial), mentre c `e chiamato coefficiente di testa di f e denotato con
LC(f ).
Fissiamo un ordine monomiale su R = k[x1 , . . . , xn ]. Per f R indichiamo con LM(f )
il monomio di testa e con LC(f ) il coefficiente di testa di f .
Algoritmo 1.1.11 Dati: f1 , . . . , fs R, g R.
Calcoliamo: r R tale che g = h1 f1 + . . . + hs fs + r con hi R e nessun monomio di r
`e divisibile per un LM(fi ).
1) Poniamo g = g, r = 0;
2) Se g = 0 ci fermiamo;
3) Sia x = LM(
g ), c = LC(
g ). Se esiste fi tale che LM(fi ) divide x allora poniamo
c
x fi
g = g
LC(fi )
dove x LM(fi ) = x . Altrimenti poniamo
g = g cx
Torniamo a 2).

r = r + cx .

1.1 Basi di Gr
obner

Proposizione 1.1.12 Lalgoritmo 1.1.11 termina correttamente.


Dimostrazione. Abbiamo che LM(
g ) diminuisce ad ogni passo. Quindi lalgoritmo termina
sempre perche non ci sono catene discendenti infinite.
Inoltre abbiamo sempre che g (
g + r) I dove I = hf1 , . . . , fs i. Questo `e sicuramente
vero allinizio (
g = g, r = 0). Se `e vero per g e r e
g1 = g

c
x f i
LC(fi )

allora
g (
g1 + r1 ) = g (
g + r) +

r1 = r
c
x f i
LC(fi )

e quindi anche g (
g1 + r1 ) I.
Se invece g1 = g1 cx e r1 = r + cx allora
g (
g1 + r1 ) = g (
g + r) I.
Segue che quando lalgoritmo termina si ha g = 0 e g r I quindi
g r = h1 f1 + . . . + hs fs .
Per costruzione si vede che nessun LM(fi ) divide un monomio di r.

Esempio 1.1.13 Siano f1 = xy+1, f2 = y+1 e g = xyy. Consideriamo lordine monomiale


<=<glex .
Possiamo procedere in due modi:
Primo modo:
1) g = xy y, r = 0;

2) g = g f1 = y 1;

3) g = g + f2 = 0;
4) r = 0.
Secondo modo:

1) g = xy y, r = 0;

2) g = g xf2 = x y;

3) g = g + x = y, r = x;

4) g = g + f2 = 1;

5) g = g 1 = 0, r = x + 1;

6) r = x + 1.

Si vede nellEsempio che il resto dipende dalle scelte fatte durante lalgoritmo.
Vogliamo trovare un algoritmo che ci dia un resto unico che sia zero se e solo se g I =
hf1 , . . . , fs i.

Basi di Gr
obner

1.1.5

Ideali monomiali

Definizione 1.1.14 Sia A Nn (possibilmente infinito). Allora lideale


I = hx | Ai R = k[x1 , . . . , xn ]
`e chiamato ideale monomiale.
Lemma 1.1.15 Sia I = hx | Ai un ideale monomiale. Allora h I se e solo se ogni
suo monomio `e in I.
Dimostrazione. . Ovvio.P
. Se h I allora h = A c h x con certi h R e i c k sono non nulli in
numero finito.
Sia x un monomio di h quindi x `e un monomio di almeno un h x . Ma
h =

m
X

i x(i)

h x =

m
X

i x(i)+

i=1

i=1

quindi, per un certo i, abbiamo che


x = x(i) x I.

Lemma 1.1.16 Le notazioni sono come nel lemma precedente. Si ha x I se e solo se
x = x x per un certo Nn e A.
Dimostrazione. Analoga a quella del Lemma 1.1.15.

Definiamo ora un ordine parziale  su Nn con  se i i per ogni i.


Esempio 1.1.17 Si ha (1, 2, 3)  (1, 3, 5). Oppure (1, 2, 3)  (1, 3, 2) e (1, 3, 2)  (1, 2, 3).
Quindi non tutti gli elementi sono confrontabili. Diciamo che , Nn con  e
 sono detti inconfrontabili.
Un insieme A Nn che consiste solo di elementi inconfrontabili `e chiamato anticatena.
Lemma 1.1.18 Unanticatena in Nn `e sempre finita.
Dimostrazione. Per n = 1 `e ovvio perche  `e uguale a sugli interi. (Quindi unanticatena
ha al massimo un elemento.)
Sia n > 1 minimale tale che esista unanticatena infinita A Nn . Prendiamo A.
Allora per ogni A con 6= esiste i con i < i (e j con j > j ), perche e non
sono confrontabili. Quindi
A r {} =

n
[

{ A | i < i }.

i=1

Quindi poiche A `e infinito, almeno un insieme Bi0 = { A | i0 < i0 } `e infinito.


Scriviamo = i0 .

1.1 Basi di Gr
obner

1
Allora Bi0 = j=0
{ A | i0 = j}.
Quindi almeno uno di questi insiemi `e infinito. Chiamiamolo C = { A | i0 = j0 }.
Poniamo
C = {(1 , . . . , j0 1 , j0 +1 , . . . , n ) | = (1 , . . . , n ) C}.

Ma anche C `e unanticatena e |C | = |C| = .


Poiche C Nn1 abbiamo una contraddizione.

Lemma 1.1.19 (Dickson) Sia A Nn e I = hx | Ai R = k[x1 , . . . , xn ]. Allora


esiste A A, con A finito e I = hx | A i.
In altre parole, un ideale monomiale `e sempre generato da un numero finito di monomi.
Dimostrazione. Sia B A unanticatena massimale (cio`e non esiste unanticatena B A
con B B e B 6= B). Per il Lemma 1.1.18 B `e finito.
Osserviamo che per S
ogni Nn linsieme { Nn |  } `e finito.
Poniamo A = B B { A |  }. Diciamo che I = hx | A i. Linclusione
() `e ovvia perche A A. Per () sia A. Dobbiamo provare che esiste e A
con x = x x .
Se B A siamo apposto. Altrimenti, se 6 B allora esiste B con e
confrontabili (altrimenti B {} sarebbe unanticatena pi`
u grande). Dunque ci sono due
possibilit`a:  oppure  .
Se  allora prendiamo = e quindi x = x x . Se  allora A e quindi
possiamo prendere = (0, . . . , 0) e = .

Teorema 1.1.20 Sia un ordine su Nn con
1) `e totale.
2) Se allora + + per ogni Nn .
3) 0 = (0, . . . , 0) per ogni Nn .
Allora `e un ordine monomiale.
Dimostrazione. Bisogna provare che non ci sono catene discendenti infinite, oppure che se
(1) (2) . . . `e una catena infinita allora esiste un m con (m) = (m + 1) = (m + 2) =
. . ., cio`e la catena diventa stabile. Allora supponiamo (1) (2) . . ..
Sia A = {(i) | i 1} e I = hx | Ai. Per il Lemma di Dickson si ha che esiste
A A, A finito, con I = hx | A i.
Scriviamo A = {(1), . . . , (r)} con (1) > (2) > . . . > (r). Diciamo che (i) (r)
per ogni i.
Infatti, x(i) I quindi per il Lemma 1.1.16 esiste (j) e Nn con x(i) = x x(j)
oppure (i) = + (j).
Per la 3) sappiamo che 0 = (0, . . . , 0) quindi
(i) = + (j) 0 + (j) = (j) (r).
Sia m tale che (m) = (r). Visto che (m) (m + 1) . . . (r) e (m) = (r)
segue che (m) = (m + 1) = . . ..


Basi di Gr
obner

Teorema 1.1.21 (della base di Hilbert) Ogni ideale di R = k[x1 , . . . , xn ] `e generato da


un numero finito di elementi.
Dimostrazione. Sia I R un ideale e J = hLM(f ) | f Ii lideale generato da tutti i
monomi di testa di elementi di I (relativo ad un qualsiasi ordine monomiale fissato).
Il Lemma di Dickson implica che esistono g1 , . . . , gs I con
J = hLM(gi ) | 1 i si.
Questi generano I. Infatti, sia f I, allora mediante lalgoritmo di divisione con resto
troviamo h1 , . . . , hs R con f = h1 g1 + . . . + hs gs + r con r R tale che nessun monomio di
r sia divisibile per
P un LM(gi ).
Ma r = f hi gi I quindi LM(r) `e un elemento di J. Quindi esiste i tale che LM(gi )
divide LM(r)
P (Lemma 1.1.16) ma questo non `e possibile tranne nel caso in cui r = 0. Segue
che f = hi gi .

Corollario 1.1.22 Se Ik , per k 1, sono ideali di R con I1 I2 I3 . . . allora esiste m
con Im = Im+1 = Im+2 = . . ..
Dimostrazione. Sia J = k1 Ik che `e un ideale di R. Il Teorema 1.1.21 implica che esistono
g1 , . . . , gs J con J = hg1 , . . . , gs i. Sia ki tale che gi Iki e m = max(k1 , . . . , ks ). Quindi
g1 , . . . , gs Im e quindi Im+i = Im perche Im Im+i `e dato e Im+i J = Im .


1.1.6

Basi di Gr
obner

Definizione 1.1.23 Sia I R = k[x1 , . . . , xn ] un ideale. Lideale hLM(f ) | f Ii `e chiamato ideale iniziale di I e scriviamo hLM(I)i = hLM(f ) | f Ii.
Definizione 1.1.24 Sia I R = k[x1 , . . . , xn ] un ideale e G I con hLM(I)i = hLM(g) | g Gi.
Allora G `e chiamato base di Gr
obner di I.
Osservazione 1.1.25
G = I `e una base di Gr
obner di I.
Dalla prova del Teorema della base di Hilbert segue immediatamente che ogni ideale I
ha una base di Gr
obner finita.
Lemma 1.1.26 Sia I k[x1 , . . . , xn ] un ideale. Allora un G I `e una base di Gr
obner di
I se e solo se per ogni f I esiste g G tale che LM(g) divide LM(f ).
Dimostrazione. Si ha che G `e una base di Gr
obner di I se e solo se
hLM(g) | g Gi = hLM(I)i
quindi se e solo se per ogni f I esiste g G tale che LM(g) divide LM(f ) (Lemma 1.1.16). 
Proposizione 1.1.27 Sia I R = k[x1 , . . . , xn ] un ideale e G I una base di Gr
obner. Sia
f R e r R un resto ottenuto con lalgoritmo di divisione con resto con f G. Allora r `e
unico, cio`e non dipende dalle scelte fatte nellalgoritmo. Inoltre r = 0 se e solo se f I.

1.1 Basi di Gr
obner

Dimostrazione. Supponiamo che


1 gj + . . . + h
t gj + r2
f = h1 gi1 + . . . + hs gis + r1 = h
t
1
con gik e gjk in G e ri R con la propriet`a che nessun monomio di questi resti sia divisibile
per un LM(g) con g G.
Segue che
1 gj . . . h
t gj I
r1 r2 = h1 gi1 + . . . + hs gis + h
t
1

quindi per il Lemma 1.1.26 esiste g G tale che LM(g) divide LM(r1 r2 ). Ma LM(r1 r2 )
`e un monomio di r1 oppure di r2 (o di entrambi).
Segue che r1 r2 = 0 e quindi r1 = r2 .
P
Se f I allora r1 I (perche r1 = f su=1 hu giu ). Quindi esiste g G tale che LM(g)
divide LM(r1 ) (Lemma 1.1.26) e quindi r1 = 0. Per laltra direzione: r1 = 0 implica f I
banalmente.


1.1.7

Calcolare basi di Gr
obner

Sia G R = k[x1 , . . . , xn ] un sottoinsieme e f R. Fissiamo un ordine monomiale.


Sia r R un resto ottenuto mediante la divisione con resto con G e f . Allora scriviamo
r = fG .
Se fG = 0 si dice che f riduce a 0 modulo G.
Siano f1 , f2 Rr{0} e scriviamo x(i) = LM(fi ). Sia definito come j = max((1)j , (2)j ).
Allora x `e chiamato minimo comune multiplo di x(1) e x(2) .
Inoltre
x
x
f1
f2
S(f1 , f2 ) =
LC(f1 )LM(f1 )
LC(f2 )LM(f2 )
viene detto S-polinomio corrispondente a f1 e f2 .
Esempio 1.1.28 Sia f1 = 2xyz 2 xy e f2 = 3x2 y 2 z 5xyz. Usiamo lordine <glex . Avremo
che il minimo comune multiplo dei monomi di testa di f1 e f2 `e x = x2 y 2 z 2 e
S(f1 , f2 ) =

z
1
5
xy
(2xyz 2 xy) (3x2 y 2 z 5xyz) = x2 y 2 + xyz 2 ,
2
3
2
3

quindi LM(S(f1 , f2 )) = x2 y 2 .
Si vede inoltre che il resto di S(f1 , f2 ) modulo {f1 , f2 } non `e zero perche x2 y 2 non `e
divisibile da LM(f1 ) e LM(f2 ).
In particolare linsieme {f1 , f2 } non `e una base di Gr
obner dellideale generato da f1 , f2 .
Un elemento della forma cx con c k `e chiamato termine.
Lemma 1.1.29 Sia G R = k[x1 , . . . , xn ] e f R. Allora se f riduce a zero modulo G si
pu`
o scrivere f = h1 g1 + . . . + hs gs con gi G (non necessariamente diversi) e dove hi R
sono termini tali che
LM(f ) = LM(h1 g1 ) > LM(h2 g2 ) > . . . > LM(hs gs ).
Dimostrazione. Segue dallalgoritmo di divisione con resto.

Il seguente teorema d`
a un criterio con cui possiamo se un dato G I `e una base di
Gr
obner o meno.

10

Basi di Gr
obner

Teorema 1.1.30 Sia I R un ideale generato da G I. Allora G `e una base di Gr


obner
G
di I se e solo se S(g1 , g2 ) = 0 per ogni g1 , g2 G.
Dimostrazione.
Se G `e una base di Gr
obner, poiche S(g1 , g2 ) I allora questo riduce a zero modulo
G (Prposizione 1.1.27).
Sia f I e proviamo che esiste g G tale che LM(g) divide LM(f ). Allora con il
Lemma 1.1.26 concludiamo che G `e una base di Gr
obner di I.
Possiamo scrivere f = h1 g1 + . . . + hs gs con hi R termini e gi G. Scriviamo mi =
LM(hi gi ) e m = m1 e assumiamo che
m = m1 = m2 = . . . = mv > mv+1 . . . ms .
Assumiamo che LC(gi ) = 1 (se LC(gi ) non `e 1 la prova vale comunque ma la notazione
diventa pi`
u complicata).
Scegliamo unespressione della forma f = h1 g1 + . . . + hs gs con m minimale e tra queste
una con v minimale.
Supponiamo v > 1 e scriviamo hi = ci x(i) . Quindi
= c1 x(1) g1 + . . . + cs x(s) gs

= c1 (x(1) g1 x(2) g2 ) + (c1 + c2 )x(2) g2 + . . . + cs x(s) gs .


Adesso sia x il minimo comune multiplo di LM(g1 ) e LM(g2 ) e scriviamo x = m =
LM(x(1) g1 ) = LM(x(2) g2 ). Quindi
x(1) g1 x(2) g2 =

x
x
g1
g2
LM(g1 )
LM(g2 )

perche x = x(i) LM(gi ).


Quindi
(1)

(2)

g1 x

g2 = x

x
x
g1
g2
LM(g1 )
LM(g2 )

= x S(g1 , g2 ).

Ma S(g1 , g2 ) riduce a zero modulo G. Quindi per il Lemma 1.1.29


S(g1 , g2 ) = u1 gi1 + . . . + ut git
dove ui `e un termine e
x > LM(S(g1 , g2 )) = LM(u1 gi1 ) > LM(u2 gi2 ) > . . . > LM(ut git ).
Quindi
x(1) g1 x(2) g2 =

t
X

x uj gij

j=1

e LM(x uj gij ) < x = m. Quindi, poiche


f = c1 (x(1) g1 x(2) g2 ) + (c1 + c2 )x(2) g2 + . . . + cs x(s) gs

1.1 Basi di Gr
obner

11

sostituendo si vede che otteniamo unespressione della forma f = h1 g1 + . . . + hs gs con v


diminuito oppure, nel caso in cui v = 2 e c1 + c2 = 0, con m diminuito. Ma questo non `e
possibile, quindi v = 1.
Segue che m = LM(x(1) g1 ) = LM(f ) e quindi LM(g1 ) divide LM(f ).


Algoritmo 1.1.31 Dati: {g1 , . . . , gs } che genera un ideale I k[x1 , . . . , xn ] e un fissato


ordine monomiale .
obner per I rispetto a .
Calcoliamo: una base di Gr
1. Poniamo G0 = {g1 , . . . , gs }, e i = 0.
2. Se S(f, g)

per ogni f, g Gi allora Gi `e una base di Gr


obner di I, e ci fermiamo.
G

3. Se esistono f, g Gi con r = S(f, g) 6= 0 allora poniamo Gi+1 = Gi {r}, i := i + 1,


e torniamo al passo 2.
Proposizione 1.1.32 Lalgoritmo 1.1.31 termina correttamente.
Dimostrazione.
Quando lalgoritmo termina Gi `e una base di Gr
obner per I perche:
- genera I in quanto contiene g1 , . . . , gs e Gi I.
- Per il Teorema 1.1.30 Gi `e una base di Gr
obner.
Lalgoritmo termina sempre. Infatti consideriamo gli ideali Ji = hLM(g) | g Gi i. Diciamo che se Gi+1 ) Gi allora Ji+1 ) Ji . Infatti, Gi+1 = Gi {r} e LM(r) non `e divisibile
per ogni LM(g) per g Gi quindi LM(r) 6 Ji (Lemma 1.1.16). Ma LM(r) Ji+1 quindi
Ji+1 ) Ji .
Abbiamo anche visto che non esistono catene infinite strettamente crescenti di ideali in
k[x1 , . . . , xn ] (Corollario 1.1.22). Quindi lalgoritmo deve terminare.


Esempio 1.1.33 Siano g1 = xyz xy e g2 = x2 y yz. Prendiamo lordine <glex con


x >glex y >glex z.
Avremo G0 = {g1 , g2 } e
S(g1 , g2 )

=
=

xg1 zg2

x2 yz x2 y (x2 yz yz 2 )

g2

x2 y + yz 2

g3 .

yz 2 yz
Quindi G1 = {g1 , g2 , g3 }. Avremo

S(g1 , g3 ) = zg1 xg3

= xyz 2 xyz (xyz 2 xyz)

= 0

12

Basi di Gr
obner

e
S(g2 , g3 )

=
=
=
g1

z 2 g2 x2 g3

x2 yz 2 yz 3 (x2 yz 2 x2 yz)
x2 yz yz 3

yz 3 + x2 y
g3

x2 y yz 2
g2

yz 2 + yz
g3

0.

Quindi G1 = {g1 , g2 , g3 } `e una base di Gr


obner di I.
Per calcolare una base di Gr
obner ci sono alcuni trucchi che si possono usare. Innanzitutto
si pu`
o dividere ogni elemento di G con uno scalare per farlo monico. Cos` si calcolano pi`
u
facilmente. Un secondo trucco si basa sui seguenti risultati.
Lemma 1.1.34 Siano f, g k[x1 , . . . , xn ] e assumiamo che il minimo comune multiplo di
LM(f ) e LM(g) sia il prodotto LM(f )LM(g) (quindi il massimo comune divisore di LM(f )
e LM(g) sia 1). Siano u, v polinomi in k[x1 , . . . , xn ] con LM(u) < LM(f ), LM(v) < LM(g).
Allora ug + vf riduce a 0 modulo {f, g}.
Dimostrazione. Il monomio di testa di ug + vf appare in ug oppure in vf ma non in
entrambi. Infatti se LM(ug) = LM(vf ) allora LM(u)LM(g) = LM(v)LM(f ) quindi, visto che
LM(g) e LM(f ) non hanno fattori in comune segue che LM(g) divide LM(v). Ma LM(v) <
LM(g) quindi non `e possibile.
Segue che LM(ug) 6= LM(vf ) e quindi il maggiore di questi sar`
a LM(ug + vf ).
Supponiamo sia LM(ug + vf ) = LM(ug). Segue che LM(ug + vf ) `e divisibile per LM(g)
con fattore LM(u). Quindi nellalgoritmo di divisione con resto ug + vf `e rimpiazzato da
ug + vf cLM(u)g = (u cLM(u))g + vf
dove c k.
In questo modo otteniamo unespressione della stessa forma quindi si pu`
o andare avanti
finche si ottiene zero.

Lemma 1.1.35 Siano f, g k[x1 , . . . , xn ] tali che LM(f ) e LM(g) non abbiano fattori in
comune. Allora S(f, g) riduce a 0 modulo {f, g}.
Dimostrazione. Scriviamo f = c1 x + r1 e g = c2 x + r2 , con x = LM(f ) e x = LM(g).
Allora il minimo comune multiplo di x e x `e x+ . Segue che
S(f, g) =
=
=
=

x+
x+
(c1 x + r1 )
(c2 x + r2 )

c1 x
c2 x
1
1
r1 x r2 x
c1
c2
1
1
r1 (g r2 )
r2 (f r1 )
c1 c2
c1 c2
1
(r1 g r2 f )
c1 c2

1.1 Basi di Gr
obner

13

e LM(r1 ) < LM(f ), LM(r2 ) < LM(g). Per il Lemma 1.1.34, r1 g r2 f riduce a zero modulo
{f, g}.

obner non bisogna controllare S(f, g) se LM(f )
Conclusione. Nel calcolo di una base di Gr
e LM(g) hanno fattori in comune.
Esempio 1.1.36 Un problema con le basi di Gr
obner `e che a volte sono molto difficili a
calcolare, perche possono essere molto grandi. Consideriamo
f1 = x3 + y + z 2 1, f2 = x2 + y 3 + z 1, f3 = x + y 2 + z 3 1.
Una base di Gr
obner rispetto a <lex `e
x + y + 7467678205870943/65719095621171465*z^25 +
1906548593713883/4381273041411431*z^24 +
8191728039103700/13143819124234293*z^23 18118488190106417/65719095621171465*z^22 40197573291173158/13143819124234293*z^21 60670103256071060/13143819124234293*z^20 152406006738162748/65719095621171465*z^19 +
80624458839890252/13143819124234293*z^18 +
649226374687018607/65719095621171465*z^17 +
618150565337585002/65719095621171465*z^16 +
353034549878420633/65719095621171465*z^15 +
238802559571273606/65719095621171465*z^14 11655150926515255/4381273041411431*z^13 1972928184800696599/65719095621171465*z^12 775940019593808291/21906365207057155*z^11 1345970642704934506/65719095621171465*z^10 +
2087861421527788238/65719095621171465*z^9 +
3117371817891097726/65719095621171465*z^8 +
374132655781594758/21906365207057155*z^7 437890362723893518/65719095621171465*z^6 60670429063906802/1991487746096105*z^5 42413702095534382/65719095621171465*z^4 28132496530919371/21906365207057155*z^3 +
702615426148730872/65719095621171465*z^2 80217895633896968/21906365207057155*z - 1,
y^2 - y - 7467678205870943/65719095621171465*z^25 1906548593713883/4381273041411431*z^24 8191728039103700/13143819124234293*z^23 +
18118488190106417/65719095621171465*z^22 +
40197573291173158/13143819124234293*z^21 +
60670103256071060/13143819124234293*z^20 +
152406006738162748/65719095621171465*z^19 80624458839890252/13143819124234293*z^18 649226374687018607/65719095621171465*z^17 -

14

Basi di Gr
obner
618150565337585002/65719095621171465*z^16 353034549878420633/65719095621171465*z^15 238802559571273606/65719095621171465*z^14 +
11655150926515255/4381273041411431*z^13 +
1972928184800696599/65719095621171465*z^12 +
775940019593808291/21906365207057155*z^11 +
1345970642704934506/65719095621171465*z^10 2087861421527788238/65719095621171465*z^9 3117371817891097726/65719095621171465*z^8 374132655781594758/21906365207057155*z^7 +
437890362723893518/65719095621171465*z^6 +
60670429063906802/1991487746096105*z^5 +
42413702095534382/65719095621171465*z^4 +
50038861737976526/21906365207057155*z^3 702615426148730872/65719095621171465*z^2 +
80217895633896968/21906365207057155*z,
y*z + 114351761873236539/148963283407988654*z^25 +
209291487801391117/446889850223965962*z^24 +
52236360062652115/148963283407988654*z^23 1468425502479577274/223444925111982981*z^22 858875628508250933/223444925111982981*z^21 616034236519743323/223444925111982981*z^20 +
8794492882346418295/446889850223965962*z^19 +
4815691490104347169/446889850223965962*z^18 +
1149199885582915487/446889850223965962*z^17 1088785538668067356/223444925111982981*z^16 2515633540839994712/223444925111982981*z^15 +
6870511665918010699/446889850223965962*z^14 33317003410103522629/446889850223965962*z^13 1138745048309366852/74481641703994327*z^12 2405659933320304387/223444925111982981*z^11 +
16532107971394002975/148963283407988654*z^10 +
38492638078382481727/446889850223965962*z^9 17305956248039834578/223444925111982981*z^8 3042243532386622694/223444925111982981*z^7 8470564338716612201/74481641703994327*z^6 +
109793303496803963/1194892647657663*z^5 1834169915554595837/74481641703994327*z^4 +
23672654350351476275/446889850223965962*z^3 2965819909779524184/74481641703994327*z^2 +
3212763377507509769/446889850223965962*z,
z^26 - 9*z^23 + 29*z^20 - 6*z^18 - 11*z^17 - 14*z^16 + 27*z^15 - 110*z^14 +
37*z^13 + 4*z^12 + 163*z^11 + 36*z^10 - 173*z^9 + 28*z^8 - 146*z^7 +
208*z^6 - 94*z^5 + 89*z^4 - 91*z^3 + 37*z^2 - 5*z

1.2 Applicazioni di basi di Gr


obner

1.2

15

Applicazioni di basi di Gr
obner

In questo secondo sezione vediamo alcune applicazioni di basi di Gr


obner. Innanzitutto possiamo risolvere il nostro problema iniziale: dato lideale I k[x1 , . . . , xn ] e f k[x1 , . . . , xn ]
decidere se f I. Per risolvere questo problema calcoliamo una base di Gr
obner G di I.
Allora f I se e solo se fG = 0.

1.2.1

Risolvere equazioni polinomiali

Definizione 1.2.1 Un campo k `e detto algebricamente chiuso se ogni polinomio in k[x] ha


uno zero in k.
Esempio 1.2.2 Un esempio `e k = C.
Il problema `e, dati i polinomi f1 , . . . , fs in k[x1 , . . . , kn ], decidere se esiste un vettore
(a1 , . . . , an ) kn con
f1 (a1 , . . . , an ) = . . . = fs (a1 , . . . , an ) = 0
e trovare tali (a1 , . . . , an ).
Nel caso dove il campo `e algebricamente chiuso la prima parte del problema viene risolto
con il Nullstellensatz di Hilbert.
Teorema 1.2.3 (Hilberts Nullstellensatz) Sia k un campo algebricamente chiuso e scriviamo R = k[x1 , . . . , xn ]. Siano f1 , . . . , fs R. Allora esiste un vettore a
= (a1 , . . . , an ) kn
con f1 (
a) = . . . = fs (
a) = 0 se e solo se lideale I R generato da f1 , . . . , fs non contiene 1.
Nella prova usiamo un lemma che non proviamo.
Lemma 1.2.4 Siano k K campi tali che esistano 1 , . . . , s K con la propriet`
a che ogni
elemento di K pu`
o essere scritto come polinomio in 1 , . . . , s con coefficienti in k. Allora K
`e algebrico su k.
Lidea della prova `e che se esiste un trascendente z K, allora k[z] `e isomorfo ad un
anello polinomiale, e k(z) `e isomorfo al campo delle funzioni razionali in un variabile, su k.
E quel campo non `e finitamente generato su k.
Dimostrazione.(della Nullstellensatz). Ovvio. Infatti se esiste a
allora f (
a) = 0 per
ogni f I quindi 1 6 I.
Ogni catena di ideali I = I0 I1 I2 . . . infinita ha la propriet`a che esiste r con
Ir = Ir+1 = Ir+2 = . . . (Corollario 1.1.22). Quindi esiste un ideale massimale di R, J I,
J 6= R (N.B. se 1 I allora I = R). Allora K = k[x1 , . . . , xn ]/J `e un campo.
Scriviamo i = xi mod J quindi ogni elemento di K `e polinomio di i con coefficienti in
k. Quindi K `e algebrico du k (Lemma 1.2.4). Poiche k `e algebricamente chiuso segue che
K = k.
Quindi xi mod J = ai per opportuni ai k e quindi xi ai J. Ma lideale hx1 a1 , . . . , xn an i
`e massimale quindi J = hx1 a1 , . . . , xn an i.
Segue che per ogni f J si ha f (a1 , . . . , an ) = 0 e in particolare ogni f I.

Usando il Nullstellensatz possiamo decidere se date equazioni polinomiali hanno o meno
una soluzione dentro un campo algebricamente chiuso che contiene il campo base. Infatti:

16

Basi di Gr
obner

calcoliamo una base di Gr


obner G dellideale generato dai polinomi; allora una soluzione
eseiste se e solo se
1G 6= 0.
Adesso torniamo al problema di trovare le soluzioni di un insieme di equazioni polinomiali.
Il seguente lemma e banale, ma di importanza fondamentale.
Lemma 1.2.5 Sia I lideale generato da f1 , . . . , fs k[x1 , . . . , xn ], e sia a
= (a1 , . . . , an )
kn . Allora si ha che f1 (
a) = . . . = fs (
a) = 0 se e solo se f (
a) = 0 per ogni f I.
Dimostrazione. Ovvio.
P

Se
f

I
allora
esistono
f
,
.
.
.
,
f

k[x
,
.
.
.
,
x
]
con
f
=
hi fi quindi f (
a) =
1
s
1
n
P
hi (
a)fi (
a) = 0.


Da questo lemma vediamo che per risolvere le equazioni f1 = . . . = fs = 0 possiamo


prendere qualsiasi insieme di polinomi che generano lo stesso ideale. In particolare possiamo prendere una base di Gr
obner. Adesso vediamo che basi di Gr
obner rispetto allordine
lessicografico sono particolarmente utili.

Definizione 1.2.6 Sia I k[x1 , . . . , xn ] un ideale e 0 l n 1. Allora I k[xl+1 , . . . , xn ],


ideale di k[xl+1 , . . . , xn ], `e detto l-esimo ideale di eliminazione di I.
Si chiama cos` perche elimina le prime l variabili.
Teorema 1.2.7 (Teorema di eliminazione) Sia R = k[x1 , . . . , xn ] e si consideri lordine
<lex con x1 >lex x2 >lex . . . >lex xn . Sia I R un ideale e G una base di Gr
obner di I
rispetto a <lex . Allora G k[xl+1 , . . . , xn ] `e una base di Gr
obner per I k[xl+1 , . . . , xn ].
Dimostrazione. Poniamo Gl = G k[xl+1 , . . . , xn ] e Il = I k[xl+1 , . . . , xn ].
Bisogna provare che hLM(Il )i = hLM(g) | g Gl i.
Ovvio perche Gl Il .
Sia f Il . Quindi f I e poiche G `e una base di Gr
obner di I allora esiste g G
tale che LM(g) divide LM(f ). Ma f k[xl+1 , . . . , xn ] quindi anche LM(g) k[xl+1 , . . . , xn ].
Sia x un monomio di g, x 6= LM(g). Se i > 0 per i l allora x >lex LM(g). Ma
questa `e una contraddizione.
Quindi x k[xl+1 , . . . , xn ] e quindi g k[xl+1 , . . . , xn ]. Segue che g Gl e quindi
LM(f ) hLM(g) | g Gl i.

obner rispetto a <lex troviamo basi di Gr
obner per
Conclusione. Con una base di Gr
I k[xn ]

I k[xn1 , xn ]
..
.
I k[x2 , . . . , xn ]

I k[x1 , . . . , xn ] = I.

Quindi la base di Gr
obner ha una struttura triangolare che ci pu`
o aiutare a risolvere il sistema
di equazioni polinomiali.
N.B. E possibile che I k[xl+1 , . . . , xn ] = 0.

1.2 Applicazioni di basi di Gr


obner

17

Esempio 1.2.8 Consideriamo i polinomi


f1 = x2 + y + z 1,

f2 = x + y 2 + z 1,

f3 = x + y + z 2 1.

Vogliamo risolvere il sistema f1 = f2 = f3 = 0.


Una base di Gr
obner rispetto a >lex `e costituita dai polinomi
g1 = x + y + z 2 1

g2 = y 2 y z 2 + z

g3 = 2yz 2 + z 4 z 2

g4 = z 6 4z 4 + 4z 3 z 2 = z 2 (z 1)2 (z 2 + 2z 1).
Posto I = hf1 , f2 , f3 i si vede che I k[z] `e generato da g4 , I k[y, z] `e generatoda g2 , g3 , g4 .
Vediamo che g4 = 0 d`
a un numero finito di valori per z, cio`e 0, 1 e 1 2. Se z = 0
allora anche g3 = 0, ma lequazione g2 = 0 implica che y pu`
o essere 0 o 1. Se y = z = 0, allora
da g1 = 0 segue che x = 1. Troviamo la soluzione (1, 0, 0). Andando avanti cos` troviamo le
soluzioni
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)

(1 2, 1 2, 1 2)

(1 + 2, 1 + 2, 1 + 2).

1.2.2

Applicazioni di basi di Gr
obner in geometria

Definizione 1.2.9 Sia I k[x1 , . . . , xn ] un ideale. Allora

I = {f k[x1 , . . . , xn ] | esiste m > 0 con f m I}


`e chiamato radicale di I.
Osservazione 1.2.10 Si ha che

I `e un ideale di k[x1 , . . . , xn ].

Dimostrazione. Ovviamente 0 I. Sia f I e g k[x1 , . . . , xn ], quindi f m I. Allora


m I e quindi gf
gm f m = (gf )
I.
Se f, g I allora sia m > 0 con f m , gm I. Allora
2m

(f + g)


2m 
X
2m
i=0

e quindi f + g

I.

f i g2mi I


Lemma
1.2.11 Sia I = hf1 , . . . , fs i k[x1 , . . . , xn ] un ideale e f k[x1 , . . . , xn ]. Allora
f I se e solo se 1 `e contenuto nellideale J = hf1 , . . . , fs , 1 yf i k[x1 , . . . , xn , y].

18

Basi di Gr
obner

Dimostrazione. Supponiamo che f m I. Allora y m f m J (perche I J). Ma


anche
(1 y m f m ) = (1 yf )(1 + yf + (yf )2 + . . . + (yf )m1 ) J
quindi 1 J.
Se 1 J allora esistono pi , q k[x1 , . . . , xn , y] con
1=

s
X
i=1

Sostituendo y con

1
f

pi (x1 , . . . , xn , y)fi + q(x1 , . . . , xn , y)(1 yf ).

otteniamo

1=

s
X
i=1

1
pi (x1 , . . . , xn , )fi .
f

Ora osserviamo che i pi (x1 , . . . , xn , f1 ) sono espressioni razionali con denominatori f r per
certi r 0.
Segue che esiste m con f m pi (x1 , . . . , xn , f1 ) k[x1 , . . . , xn ] e quindi
fm =

s
X
i=1

e quindi f m I, vale a dire f

1
f m pi (x1 , . . . , xn , )fi
f

I.

Quindi usando basi di Gr


obner possiamo verificare se f

I con il seguente algoritmo.

Algoritmo 1.2.12 Dati: f1 , . . . , fs che generano lideale I k[x1 , . . . , xn ], e un f k[x1 , . . . , xn ].


Decidiamo se f I o meno.
1. Calcoliamo una base di Gr
obner di J = hf1 , . . . , fs , 1 yf i;
2. Se 1 J allora f appartiene a

I altrimenti non gli appartiene.

Definizione 1.2.13 Sia W = kn uno spazio vettoriale su k di dimensione n e sia I =


hf1 , . . . , fs i un ideale di k[x1 , . . . , xn ]. Allora linsieme
V (I) = {(w1 , . . . , wn ) W | f (w1 , . . . , wn ) = 0 per ogni f I}
`e chiamato insieme chiuso corrispondente a I.
Esempio 1.2.14 Sia I k[x, y] generato da y x2 e k = R. Allora V (I) `e costituito da
tutti i punti del seguente grafico.

1.2 Applicazioni di basi di Gr


obner

19

Analogamente sia I generato da x2 + y 2 1. Allora V (I) `e costituito da tutti i punti del


seguente grafico.
V (I)

Teorema 1.2.15 (Hilberts Nullstellensatz, forma forte) Sia k un campo algebricamente chiuso e I k[x1 , . . . , xn ] un ideale. Sia J k[x1 , . . . , xn ] lideale

Allora J =

J = {f k[x1 , . . . , xn ] | f (w) = 0, w V (I)}.


I.

Dimostrazione. Se f I allora esiste m > 0 con f m I quindi f m (w) = 0 per ogni


w V (I). Ma f m (w) = (f (w))m quindi f (w) = 0 per ogni w V (I). Allora f J.
Prendiamo f J quindi f (w) = 0 per ogni w V (I). Sia I generato da f1 , . . . , fs
k[x1 , . . . , xn ]. Sia I = hf1 , . . . , fs , 1 yf i k[x1 , . . . , xn , y]. Sia w = (w1 , . . . , wn , wn+1 )
kn+1 . Abbiamo due casi:
- (w1 , . . . , wn ) V (I). Allora fi (w) = 0 per i = 1, . . . , s. Ma f (w) = 0 quindi (1yf )(w) 6= 0.
- (w1 , . . . , wn ) 6 V (I). Allora esiste fi con fi (w) 6= 0.
= . Per la forma debole del
In conclusione {w = (w1 , . . . , wn+1 ) | h(w) = 0, h I}

Hilberts Nullstellensatz
(Teorema 1.2.3), 1 I (k `e algebricamente chiuso). Quindi per il


Lemma 1.2.11, f I.

20

Basi di Gr
obner

Osservazione 1.2.16 Si ha
V (I) V (J) = V (I + J)
dove I + J `e lideale
I + J = {f + g | f I, g J}.
Dimostrazione. Sia v V (I) V (J) e h = f + g I + J con f I e g J. Si ha
h(v) = f (v) + g(v) = 0 + 0 = 0
quindi v V (I + J).
Viceversa, sia v V (I + J). Poiche I I + J sia ha che h(v) = 0 per ogni h I quindi
v V (I). Analogamente si vede che v V (J) quindi v V (I) V (J).

Segue che per X kn esiste un unico insieme chiuso minimale che contiene X. Questo `e
detto chiusura di X. Si consideri
Id(X) = {f k[x1 , . . . , xn ] | f (v) = 0, v X}
ideale di k[x1 , . . . , xn ]. Allora la chiusura di X `e V (Id(X)).
Teorema 1.2.17 Sia k algebricamente chiuso, sia R = k[x1 , . . . , xn ] e I = hf1 , . . . , fs i R.
Sia l : kn knl con l (v1 , . . . , vn ) = (vl+1 , . . . , vn ).
Sia Il = k[xl+1 , . . . , xn ] I, l-esimo ideale di eliminazione. Allora V (Il ) `e la chiusura di
l (V (I)).
Esempio 1.2.18 Sia I = hxy 1i k[x, y]. Consideriamo 1 : k2 k con 1 (v1 , v2 ) = v2 .
Allora
V (I) = {(v1 , v2 ) | v1 v2 = 1} = 1 (V (I)) = k r {0}.
Ora abbiamo I1 = 0 che implica V (I1 ) = k.
Dimostrazione.(del Teorema 1.2.17) . Sia v = (v1 , . . . , vn ) V (I). Allora f (v) =
0 per ogni f I. In particolare per ogni f Il k[xl+1 , . . . , xn ] abbiamo f (l (v)) =
f (vl+1 , . . . , vn ) = 0.
Quindi V (Il ) `e un insieme chiuso che contiene l (V (I)) e quindi V (Il ) contiene la chiusura
di l (V (I)).

Sia J = Id(l (V (I)) k[xl+1 , . . . , xn ]. Diciamo che J Il . Infatti f J implica


f (vl+1 , . . . , vn ) = 0 per ogni (v1 , . . . , vn ) V (I). Segue che
ogni v V (I) e
f (v) = 0 per
o f m I.
quindi, per Hilberts Nullstellensatz (Teorema 1.2.15), f I e perci`
m
m
Ma
f k[xl+1 , . . . , xn ] quindi anche f e quindi f I k[xl+1 , . . . , xn ] = Il . Segue che
f Il .

Concludiamo V (J) V ( Il ) = V (Il ).



obner possiamo trovare la chiusura di l (U ) dove U `e un
Conclusione. Tramite basi di Gr
insieme chiuso.
Unapplicazione di questo `e limmagine di una funzione regolare.
Una funzione regolare h : kn km `e data da m polinomi h1 , . . . , hm k[x1 , . . . , xn ] e
h(v) = (h1 (v), . . . , hm (v)).
Sia X = V (I) kn dove I = hf1 , . . . , fs i k[x1 , . . . , xn ]. Che cos`e la chiusura di h(X)?

1.2 Applicazioni di basi di Gr


obner

21

Sia
= {(v, h(v)) | v X} kn+m .
Questo viene detto grafico di h.
Osserviamo che kn+m `e chiuso. Infatti, sia J lideale di k[x1 , . . . , xn , y1 , . . . , ym ]
generato da
{f1 , . . . , fs , y1 h1 , . . . , ym hm }.
Allora (v, w) se e solo se p(v, w) = 0 per ogni p J (w = h(v) se e solo se (yi hi )(v, w) =
wi hi (v) = 0).
Con basi di Gr
obner Possiamo calcolare la chiusura di n () dove n : kn+m km e
n (v1 , . . . , vn , w1 , . . . , wm ) = (w1 , . . . , wm ).
Ora n () = h(X) quindi possiamo calcolare la chiusura di h(X) (assumiamo sempre che
k sia algebricamente chiuso).
Esempio 1.2.19 Sia S = {(t2 , t3 ) | t C}. Calcoliamo la chiusura di S. Definiamo h : C
C2 con h(t) = (t2 , t3 ). Allora S = {h(t) | t C}. Consideriamo il grafico di h:
= {(u, h(u)) | u C}.
Abbiamo che = V (I) dove I = hy1 t2 , y2 t3 i k[t, y1 , y2 ].
Calcoliamo una base di Gr
obner di I rispetto a <lex con t >lex y1 >lex y2 , e otteniamo
G = {t2 y1 , ty1 y2 , ty2 y12 , y13 y22 }.
Quindi per il Teorema di eliminazione, la base di Gr
obner di I k[y1 , y2 ] `e G k[y1 , y2 ] =
3
2
{y1 y2 }. La conclusione `e che la chiusura di S `e V (J) dove J `e generato da y13 y22 .
In questo caso abbiamo V (I) = S, ma questo non vale in generale.
Linsieme S `e la forma parametrica di una curva in C2 , mentre la rappresentazione tramite
equazioni polinomiali (cio`e come V (J)) `e chiamata la forma implicita della curva. Quindi non
`e sempre vero che la forma parametrica e quella implicita d`
anno esattamente lo stesso insieme
di punti.

1.2.3

Polly-cracker

Qui descriviamo brevemente un crittosistema che `e basato sulla difficolt`


a di calcolare basi di
Gr
obner.
Alice vuole ricevere messaggi segreti da Bob. Alice sceglie un campo finto Fq (per esempio
F2 ) e lavora dentro R = Fq [x1 , . . . , xn ]
Alice sceglie un y Fnq e alcuni polinomi f1 , . . . , fs R con fi (y) = 0. La chiave pubblica
`e f1 , . . . , fs e la chiave segreta `e y.
Per mandare un messaggio Bob prima P
codifica il messaggio come un m Fq poi sceglie
polinomi h1 , . . . , hs R e manda f = m + hi fi ad Alice.
P
Alice pu`
o leggere il messaggio perche f (y) = m + hi fi (y) = m.
Con le basi di Gr
obner si pu`
o rompere il sistema. Se G `e una base di Gr
obner di hf1 , . . . , fs i
allora il resto di f dopo la divisione modulo G sar`
a m.
Bisogna scegliere i polinomi fi tali che una base di Gr
obner dellideale hf1 , . . . , fs i sia
difficile da calcolare.

22

Basi di Gr
obner

Una strategia per scegliere gli f1 , . . . , fs `e la seguente: si prende un problema che `e provato
essere difficile da risolvere, un cosiddetto NP-completo, e si riformula questo problema in
termini di equazioni polinomiali e si spera che in questo caso la base di Gr
obner sia difficile
da calcolare.
Consideriamo per esempio la 3-colorazione di un grafo = (V, E) (V =vertice, E=lato).
Una 3-colorazione `e una funzione : V {1, 2, 3} con la propriet`a che se v, w V sono
collegati da una lato allora (v) 6= (w). Esempio:
2

1
2
3

Si sa che in generale il problema di trovare una 3-colorazione di un grafo qualsiasi `e molto


difficile (`e un problema NP-completo).
Adesso prendiamo F2 come campo base, e prendiamo i variabili tv,i per v V e i
{1, 2, 3}. Sia B = B1 B2 B3 dove
B1 = {tv,1 + tv,2 + tv,3 1 | v V }

B2 = {tv,i tv,j | v V, 1 i < j 3}


B3 = {tu,i tv,i | uv E, 1 i 3}.

Poniamo tv,i = 1 se il vertice v ha colore i, e tv,i = 0 altrimenti. Questo definisce un


punto dove tutti gli elementi di B si annullano. Vice versa: se abbiamo un punto dove
tutti gli elementi di B si annullano possiamo dedurre una 3-colorazione del grafo. Infatt,
dallannullamento degli elementi di B1 B2 troviamo il colore di ogni vertice, mentre che
lannullamento degli elementi di B3 esprime che due vertici connessi non possono avere lo
stesso colore.
Esperimenti dimostrano che `e difficile rompere il Polly Cracker corrispondente ad un
grafo abbastanza grande mediante basi di Gr
obner. Per`
o, ci sono altri metodi per cercarle
di romperlo,
che
rendono
il
sistema
insicuro.
Per
esempio,
si pu`
o osservare che, se f =
P
m + i hi fi `e un messaggio, allora
m = f (0)

hi (0)fi (0).

Quindi basta conoscere i termini costanti degli hi per ricavare il messaggio. A volte, quei
termini costanti si possono ottenere studiando come `e possibile ottenere il polinomio f come
combinazione dei polinomi fi .

1.3

Esercizi

1. Consideriamo lordine <rlex definito con x <rlex x se k < k dove k `e massimale tale
che k 6= k . Provare che <rlex `e un ordine monomiale.

1.3 Esercizi

23

2. Sia < un ordine monomiale e 1 i n. Definiamo <i con x <i x se 1 + + i <


1 + + i o 1 + + i = 1 + + i e x < x . Provare che <i `e un ordine
monomiale.
3. Si usa lordine <glex (lessicografico graduato). Siano f1 = y 2 z, f2 = z 3 y, f2 = z 2 1,
e g = xy 2 z 2 + xy yz. Trovare tutti is resti possibili di g modulo f1 , f2 , f3 .
4. Sia A Zn0 un insieme finito, e I = hx | Ai lideale monomiale corrispondente.
Dimostrare che f I se e solo se il resto ottenuto mediante la divisione con resto di f
modulo {x | A} `e 0.
5. Sia I k[x1 , . . . , xn ] lideale generato da f1 , . . . , fr , e supponiamo che
hLM(f1 ), . . . , LM(fr )i =
6 hLM(I)i.
Dimostrare che esiste f I tale che la divisione con resto di f modulo f1 , . . . , fr non
d`
a il resto 0.
6. Calcolare S(f, g) per f = 4x2 z 7y 2 , g = xyz 2 + 3xz 4 , e f = x4 y z 2 , g = 3xz 2 y,
rispetto al ordine <lex .
7. Siano g1 = x z 2 , g2 = y z 3 k[x, y, z]. Provare che G = {g1 , g2 } `e una base di
Gr
obner rispetto al ordine <lex . Provare che non `e una base di Gr
obner rispetto al
ordine <glex . Calcolare una base di Gr
obner dellideale generato da G rispetto a <glex .
8. Siano g1 = x2 y 1, g2 = xy 2 x. Calcolare una base di Gr
obner dellideale I k[x, y]
generato da g1 , g2 , rispetto a <glex .
9. Sia I k[x, y, z] lideale generato da g1 = x2 yz yz x, g2 = xy 2 z xy y, g3 =
xyz 2 xy z. Usiamo lordine <glex . Calcolare una base di Gr
obner direttamente `e un
po laborioso. Invece si pu`
o fare cos`:
(a) Calcolare g4 = S(g1 , g2 ) (ridotto modulo g1 , g2 , g3 ), e g5 = S(g1 , g3 ) (ridotto
modulo g1 , . . . , g4 ).
(b) Calcolare S(g2 , g5 ), ridotto modulo g1 , . . . , g5 .
(c) Provare che I `e anche generato da h1 = x2 z 2 z 2 x, h2 = xz 3 xz z, h3 = y z.

(d) Calcolare h4 = S(h1 , h2 ), h5 = S(h1 , h4 ), h6 = S(h2 , h5 ).

(e) Provare che I `e anche generato da h2 , h3 , h5 , h6 . Provare che formano una base di
Gr
obner per I.
(f) Trovare u1 , u2 , u3 k[x, y, z] con y z = u1 g1 + u2 g2 + u3 g3
10. Siano g1 = x2 + 2y 2 3, g2 = xy y 2 + 3 elementi di C[x, y]. Sia I lideale generato da
g1 , g2 .
(a) Trovare una base di Gr
obner di I rispetto a <lex .
(b) Trovare una base di Gr
obner per I C[y].

(c) Trovare le soluzioni delle equazioni g1 = g2 = 0.

11. Siano g1 = x2 + y 2 + z 2 4, g2 = x2 + 2y 2 5, g3 = xz 1 elementi di C[x, y, z]. Sia I


lideale generato da g1 , g2 , g3 .

24

Basi di Gr
obner
(a) Usiamo lordine monomiale <lex . Calcolare g4 = S(g1 , g2 ) (ridotto modulo g1 , g2 , g3 ),
e g5 = S(g1 , g3 ) (ridotto modulo g1 , . . . , g4 ), e g6 = S(g3 , g5 ) (ridotto modulo
g1 , . . . , g5 ).
(b) Provare che g4 , g5 , g6 generano I, e che formano una base di Gr
obner per I.
(c) Calcolare basi di Gr
obner per I C[y, z] e I C[z].

(d) Calcolare tutte le soluzioni di g1 = g2 = g3 = 0.

12. Sia I C[x, y, z] lideale generato da g1 = x2 yz yz x, g2 = xy 2 z xy y, g3 =


xyz 2 xy z. Siano f1 = x z 4 + z 2 , f2 = y z, f3 = z 7 2z 5 + z 3 z.
(a) Provare che I = hf1 , f2 , f3 i (suggerimento: si pu`
o usare il risultato del esercizio 9).

(b) Provare che {f1 , f2 , f3 } `e una base di Gr


obner di I rispetto allordine <lex (con
x >lex y >lex z).

(c) Provare che f3 `e libero di quadrati (suggerimento: su pu`


o calcolare il massimo
comune divisore di f3 e f3 ).
(d) Quanti punti a = (a1 , a2 , a3 ) C3 ci sono con f1 (a) = f2 (a) = f3 (a) = 0?

obner.
13. Sia I = hx2 , y 2 i k[x, y]. Provare che x + y I, calcolando una base di Gr
14. (Parametrizzazione razionale.) Sia


2t 1 t2
,
| t C, t2 6= 1}.
C={ 2
t + 1 t2 + 1
Siano f1 = (t2 + 1)y1 2t, f2 = (t2 + 1)y2 1 + t2 C[t, y1 , y2 ]. Poniamo
= {(s, u1 , u2 ) C3 | f1 (s, u1 , u2 ) = f2 (s, u1 , u2 ) = 0}.
(a) Sia 1 : C3 C2 definito da 1 (s, u1 , u2 ) = (u1 , u2 ). Provare che 1 () = C.

(b) Usiamo lordine <lex , dove t >lex y1 >lex y2 . Calcolare S(f1 , f2 ) (ridotto modulo
f1 , f2 ) e ottenere f3 . Nello stesso modo calcolare S(f2 , f3 ) e ottenere f4 e S(f3 , f4 )
per ottenere f5 .
(c) Provare che {f3 , f4 , f5 } `e una base di Gr
obner per lideale generato da f1 , f2 ,
rispetto a <lex .
(d) Trovare un ideale J C[y1 , y2 ] tale che V (J) `e la chiusura di C.
15. Sia
S = {(uv, uv 2 , u2 ) C3 | u, v C}.

Una base di Gr
obner di huv x, uv 2 y, u2 zi, rispetto allordine <lex con u >lex
v >lex x >lex y >lex z `e
{u2 z, uv x, ux vz, uy x2 , v 2 z x2 , vx y, vyz x3 , x4 y 2 z}.
Trovare un ideale I C[x, y, z] tale che la chiusura di S `e V (I). Trovare punti su V (I)
che non ci sono su S. (Quindi V (I) `e strettamente pi`
u grande di S.)

Capitolo 2

Fattorizzazione di numeri interi in


fattori primi
Ci sono tre tipi di algoritmi che hanno da fare con il problema di fattorizzare un numero in
fattori primi:
1) test di primalit`a (probabilistico): un test di questo tipo prova che n non `e primo oppure
dice che n `e probabilmente primo (tipicamente questi metodi sono veloci);
2) algoritmi per provare che un dato n che `e probabilmente primo (come stabilito da un test
di primalit`a) `e primo;
3) algoritmi per fattorizzare n quando si sa che n non `e primo.

2.1

Fattorizzazione

Qui abbiamo dato un intero n di cui sappiamo che non `e primo, e vogliamo trovare i suoi
fattori primi.

Il primo algoritmo per questo `e di dividere n per ogni interno n. Questo algoritmo
non funziona per interi grandi. Per`
o, i programmi per fattorizzare usano un elenco dei primi
4
N numeri primi (circa N = 10 o N = 105 per esempio) per trovare fattori piccoli.

2.1.1

Metodo di Fermat

Assumiamo n dispari. Poniamo


A = {(a, b) | 0 < a b e n = ab}
e
B = {(s, t) | 0 s < t e n = t2 s2 }.

b+a
Esiste una funzione biiettiva : A B con (a, b) = ba
2 , 2 .
Funziona perche




b+a 2
ba 2

= ab = n
2
2
e
1 (s, t) = (t s, t + s).

26

Fattorizzazione di numeri interi in fattori primi

Concludiamo che trovare una fattorizzazione n = ab `e equivalente a trovare s e t con


n = t2 s2 . Quindi abbiamo il seguente algoritmo.
Algoritmo 2.1.1 Dato: n che non `e primo.
Calcoliamo: a, b > 1 con n = ab.

1. Poniamo t0 = n = min{k Z | k n}.


2. Se t2i n = s2i `e un quadrato, allora mettiamo a = (ti + si ), e b = (ti si ). Altrimenti
poniamo ti+1 = ti + 1, e continuiamo.
Questo algoritmo termina correttamente perche se n = t2 s2 con s < t allora t2 = n + s2

implica t > n.
Esempio 2.1.2 Sia n = 39. Si ha
t0 = 7 72 39 = 10
t1 = 8 82 39 = 25 = 52
quindi (8 + 5)(8 5) = 39.
Questo algoritmo funziona bene se s `e piccolo perche allora t `e vicino a
pochi passi, anche se i fattori sono grandi.

2.1.2

n quindi bastano

Basi di fattori

Alcuni metodi pi`


u avanzati si basano sullalgoritmo di Fermat. Ma invece di cercare s e t con
2
2
n = t s , si cercano x e y con
- x2 y 2 = 0 mod n;
- 0 < y < x < n;
- x + y 6= n.
Se abbiamo tali x e y abbiamo fattorizzato n perche (x + y)(x y) `e divisibile per n. Ma
x + y non `e divisibile per n (perche x + y 6= n e x + y < 2n) e x y non `e divisibile per n.
Quindi a = mcd(x + y, n) e b = mcd(x y, n) sono fattori non banali (cio`e a, b 6= 1 e a, b 6= n).
Esempio 2.1.3 Sia n = 377. Allora
3352 = 256 mod 377 = 162 mod 377
quindi prendiamo x = 335 e y = 16 e abbiamo
mcd(335 + 16, n) = 13
quindi n = 13 29.

mcd(335 16, n) = 29

2.1 Fattorizzazione

27

Quindi lidea `e di trovare x con 0 < x < n tale che x2 mod n sia un quadrato y 2 . Non
tutti gli x vanno bene. Per esempio, se n = 15 e prendiamo x = 2 abbiamo x2 mod n = 4 ma
y = 2 non funziona perche y = x. Anche x = 13 non va bene perche x2 mod n = 4 ma con
y = 2 si ha x + y = n. Proviamo con x = 7 e troviamo 72 mod n = 4 e
mcd(7 + 2, 15) = 3

mcd(7 2, 15) = 5

quindi x = 7 va bene.
a lunico intero s con n2 < s n2 , congruente a x mod n.
Notazione. x mod n sar`
Definizione 2.1.4 Un insieme B = {p0 = 1, p1 , . . . , pr } con pi primo `e chiamato base di
fattori.
Definizione 2.1.5 Un intero k `e detto B-numero (o B-liscio) se k = pe00 pe11 perr .
Per trovare x tale che x2 mod n sia un quadrato si pu`
o:
- scegliere una base di fattori;
- generare molti interi bi tali che b2i mod n `e un B-numero.
Poi si spera che per un prodotto bi1 bim si abbia
(bi1 bim )2 mod n = pe00 pe11 perr
con ei pari per ogni i, e quindi pe11 perr = y 2 .
Esempio 2.1.6 Come nellEsempio 2.1.3 sia n = 377 e prendiamo B = {1, 2}. Allora
192 = 16 mod n e 16 = p0 p21

972 = 16 mod n e 16 = p0 p21 .

Ora abbiamo (19 97)2 = p20 p41 mod n. Allora poniamo x = 19 97 = 335 mod n, e y = 16.
Infatti, mcd(335 + 16, 377) = 13 e mcd(335 16, 377) = 29 sono fattori di n.
Un metodo famoso per generare bi si base sulle frazioni continue.

2.1.3

Frazioni continue

Una frazione continua `e unespressione della forma


a0 +

1
a1 +

a2 +

1
a3 + a1
4

con ai Z, a0 > 0 e ai 1 per i 1.


Notazione. Lespressione di sopra si indica con [a0 ; a1 , a2 , a3 , a4 ].
Pi`
u generalmente diciamo che una frazione continua `e una seguenza [a0 ; a1 , . . . , an ], con
ai Z, a0 0, ai 1 per i 1. Il numero razionale corrispondente `e definito cos`: se
n = 0 allora = a0 . Se n > 0 sia il numero razionale corrispondente alla frazione continua
[a1 ; a2 , . . . , an ]. Poi
1
= a0 + .

28

Fattorizzazione di numeri interi in fattori primi

Sia x > 0 in R. Vogliamo trovare a0 , a1 , . . . tali che le frazioni continue [a0 ; a1 , . . . , ak ]


siano buone approssimazioni per x, che convergono a x se k (non `e ancoara chiaro che
`e sempre possibile trovare tali ai ; lo mostreremo nel seguito).
Gli ai , se esistono, si trovano cos`: Scriviamo x = a0 + x11 con a0 = x = max{n Z |
n x}.
1
1
. Poi scriviamo x1 = a1 + x12 con a1 = x1 e quindi x2 = x1 a
e cos`
Avremo x1 = xa
0
1
via.
Pi`
u formalmente, poniamo x0 = x e per i 0:

Esempio 2.1.7 Sia x =

ai = xi ,
1
xi+1 =
.
xi ai
2. Allora avremo x0 = x e

1
=1+ 2
21

1
a1 = 2 x2 =
=1+ 2
21

1
a2 = 2 x3 =
=1+ 2
21

a0 = 1 x1 =

e andando avanti cos` otteniamo ai = 2 per ogni i 1. Qui troviamo per esempio
[1; 2, 2, 2, 2] = 1 +

2
Abbiamo che 2 ( 41
29 ) =

1
841 ;

1
2+

2+

1
1
2+ 2

41
.
29

quindi `e una buona approssimazione di

2.

Lemma 2.1.8 Se x Q allora lalgoritmo per calcolare la frazione continua termina (cio`e a
un certo punto troviamo xi ai = 0). La frazione continua `e quindi uguale a x.
Dimostrazione. Se x =

a
b

scriviamo a = q1 b + r1 con 0 r1 < b. Avremo quindi


a0 = q1

e x1 =

a
b

b
1
= .
q1
r1

Adesso scriviamo b = q2 r1 + r2 con 0 r2 < r1 quindi


a1 = q2 e x2 =

r1
r2

e cos` si va avanti.
Allora lalgoritmo termina perche 0 ri+1 < ri , e quindi ad un certo punto si trova i con
ri = 0.
Si prova con induzione sul numero di passi che prende lalgoritmo che la frazione continua
che viene fuori `e uguale a x.

Possiamo scrivere bcii = [a0 ; a1 , . . . , ai ] e mcd(bi , ci ) = 1. Questi si chiamano convergenti
della frazione continua per x.

2.1 Fattorizzazione

29

Esempio 2.1.9 Sia x =

2. Avremo
1+

1
2+

1
2

7
b2
= .
5
c2

Teorema 2.1.10 Siano a0 , a1 , . . ., gli interi che vengono fuori dallalgoritmo per trovare la
frazione continua che approssima x R, x > 0. Poniamo
0 = a0 ,
0 = 1,

1 = a0 a1 + 1,
1 = a1 ,

i = ai i1 + i2 ,
i = ai i1 + i2 ,

per i 2. Allora

1) i i1 i1 i = (1)i1 , i 1;

2) mcd(i , i ) = 1;
3) bi = i e ci = i dove bi , ci Z0 sono tali che mcd(bi , ci ) = 1 e

bi
ci

= [a0 ; a1 , . . . , ai ]. .

Dimostrazione. 1) Procediamo per induzione. Per i = 1 abbiamo


1 0 0 1 = (a0 a1 + 1)1 a0 a1 = 1 = (1)0 .
Per i 1 si ha, sfruttando lipotesi induttiva
i+1 i i i+1 = (ai+1 i + i1 )i i (ai+1 i + i1 )
= i1 i i i1
= (1)i1
= (1)i .

2) Se p divide i e i allora per la 1) divide anche (1)i1 ma questo non `e possibile.


3) Procediamo per induzione su i. Per i = 0 si ha
b0
0
= a0 =
c0
0
e per i = 1

b1
1
1
= a0 +
= .
c1
a1
1
Osserviamo che [a0 ; a1 , . . . , ai , ai+1 ] `e ottenuto da [a0 ; a1 , . . . , ai ] sostituendo ai con ai +
1
ai+1 . Per induzione abbiamo che
[a0 ; a1 , . . . , ai ] =

quindi
[a0 ; a1 , . . . , ai+1 ] =
=
=
=

i
ai i1 + i2
=
i
ai i1 + i2



1
i1 + i2
ai + ai+1


1
ai + ai+1
i1 + i2

ai+1 (ai i1 + i2 ) + i1
ai+1 (ai i1 + i2 ) + i1
ai+1 i + i1
ai+1 i + i1
i+1
.
i+1

30

Fattorizzazione di numeri interi in fattori primi


Segue che i+1 = bi+1 e i+1 = ci+1 (visto che mcd(i+1 , i+1 ) = 1).

Osservazione 2.1.11 Segue che bi ci1 ci bi1 = (1)i1 . Dividiamo per ci ci1 e otteniamo
bi bi1
(1)i1

=
ci ci1
ci ci1

quindi



bi bi1
1


ci ci1 = ci ci1 .

Ma ci > ci1 > . . . 1 quindi



bi bi1


ci ci1 0.

Teorema 2.1.12 Le notazioni sono quelle di Teorema 2.1.10. Allora


i .

bi
ci

converge a x per

Dimostrazione. Per i 0 poniamo x


i = xi ai . Allora
1
.
x = a0 +
a1 + a +...1 1
2

ai +
xi

Infatti, per i = 0 abbiamo a0 + x


0 = x0 = x. Per i > 0 usiamo induzione. Per lipotesi
induttiva abbiamo che
1
a1 +
= x1 ,
a2 + a +...1 1
3

ai +
xi

che implica la tesi.


Conclusione: x `e ottenuto da [a0 ; a1 , . . . , ai+1 ] sostituendo ai+1 con
[a0 ; a1 , . . . , ai+1 ] =
quindi
x=

1
xei bi
1
xei ci

1
xei .

Ma

ai+1 bi + bi1
bi+1
=
ci+1
ai+1 ci + ci1

+ bi1
+ ci1

bi + xei bi1
.
ci + xei ci1

Osservazione 2.1.13 Se prendiamo un vettore che va in un punto (s, t), allora st indica la
pendenza. Se prendo i vettori che vanno in (ci , bi ) e (xei ci1 , xei bi1 ) e faccio la somma, ottengo
il vettore (ci + xei ci1 , bi + xei bi1 ).
(ci , bi )

(ci + xei ci1 , bi + xei bi1 )


(xei ci1 , xei bi1 )

2.1 Fattorizzazione
Quindi

bi +xei bi1
ci +xei ci1

`e tra

31
bi
ci

bi1
ci1

(o viceversa).

Da Osservazione 2.1.11 abbiamo che la distanza tra


a un limite che coincider`a con x.

2.1.4

bi
ci

bi+1
ci+1

va a 0. Quindi

bi
ci

converge


Fattorizzazione con frazioni continue

Lemma 2.1.14 Sia x R, x > 1. Siano cbii i convergenti della frazione continua per x.
Allora
|b2i c2i x2 | < 2x.
Dimostrazione. Osservazione 2.1.11 dice che


bi+1 bi
1


ci+1 ci = ci+1 ci .
1
ci+1 ci .

Poniamo =

bi+1
ci+1

bi
ci

Adesso


Ora x

bi
ci

|b2i

b2i |

c2i x



bi
bi
x + .
ci
ci





x + bi = x + bi = 2x + bi x < 2x +

ci
ci
ci
|b2i c2i x2 | < c2i (2x + ).

Quindi
|b2i
1
2xc2i+1

|c2i x2

< mentre

quindi

Ma

c2i x2 |

<

c2i x2 |

1
ci+1

|b2i

2x < 2x 1 +

c2i

2 c2i
+
2x

= 2x 1 +

ci
ci+1

1
+
2xc2i+1

perche x > 1 e ci+1 1. Inoltre ci + 1 ci+1 perche ci < ci+1 . Quindi

c2i x2 |

2x < 2x 1 +

ci
ci+1

1
ci+1

ci+1
< 2x 1 +
ci+1

=0

e dunque
|b2i c2i x2 | < 2x.


32

Fattorizzazione di numeri interi in fattori primi

Corollario 2.1.15 Sia n > 8 un intero e cbii i convergenti per la frazione continua per n.

Allora |b2i mod n| < 2 n dove b2i mod n `e lunico intero congruente a n nellintervallo
( n2 , n2 ].

Dimostrazione. Per il Lemma 2.1.14 si ha |b2i c2i n| < 2 n. Ma b2i c2i n `e un intero

congruente a b2i mod n e sta nellintervallo (2 n, 2 n). Quindi sta nellintervallo n2 , n2


(visto che n > 8). Segue che b2i c2i n `e uguale a b2i mod n.

Idea dellalgoritmo: Sia B = {p0 = 1, p1 , . . . , pr } una base di fattori, siano cbii i conver
genti della frazione continua per n.
Allora b2i mod n `e sempre piccolo. Quindi tra i b2i mod n si trovano spesso interi che
sono B-lisci. Quindi si pu`
o sperare che presto si trovino bi1 , . . . , bit con (bi1 bit )2 mod n
un quadrato o pi`
u precisamente bi1 bit che vanno bene per lalgoritmo per fattorizzare con
basi di fattori.
Algoritmo 2.1.16 Dato: n che non `e primo.
Calcoliamo: due fattori di n.
1. Si sceglie una base di fattori B = {p0 = 1, p1 , . . . , pr }.

2. La frazione continua per n ci d`


a a0 , a1 , a2 , . . ..
3. Si calcola b0 = a0 , b1 = a0 a1 + 1, bi+1 = ai+1 bi + bi1 .
ei

ei

4. Per i bi tali che b2i mod n `e B-liscio si scrive b2i mod n = p00 prr finche si pu`
o fare
e0
2
e
r
un prodotto (bi1 bit ) mod n = p0 pr con ei pari per ogni i. Si pone x = bi1 bit
e0

er

e y = p02 pr2 .

5. Se non si `e sfortunati mcd(n, x + y) e mcd(n, x y) sono fattori di n.


Osservazione 2.1.17 Lalgoritmo `e basato su idee euristiche; non `e garantito che riesce a
fattorizzare n. Per`
o, sappiamo che n `e composto, quindi se non troviamo la fattorizzazione
possiamo riprovare con un B pi`
u grande. Implementazioni pratiche hanno dimostrato che il
metodo funziona abbastanza bene.
Esempio 2.1.18 (Fattorizzazione di numeri di Fermat)
n
I numeri di Fermat sono della forma Fn = 22 + 1.
Fermat era convinto che tutti questi numeri fossero primi. In realt`
a Fn `e primo per
0 n 4.
Eulero per`
o dimostr`o che
F5 = 641 6700417.
Nel 1880 Landry dimostr`o che
F6 = 274177 67280421310721.
Nel 1970 Morison e Brillhart, usando frazioni continue mostrarono che
F7 = 59649589127497217 P22
dove P22 `e un numero primo di 22 cifre.

2.1 Fattorizzazione

33

Osservazione 2.1.19 Per calcolare la frazione continua per n la


seguente osservazione pu`
o
  j k
aiutare. Per R, > 0 e m Z, m > 0, abbiamo che m = m .

Dimostrazione. Scriviamo = u+ con u intero e R, 0 < 1. Scriviamo u = qm+r


con 0 r < m. Quindi
jk
m

perche r + < m quindi

r+
m

 

u

r+
+
= q+
=q
m m
m

< 1. Daltra parte




 j k j
rk
u

= q+
= q.
=
m
m
m


Esempio 2.1.20 Vogliamo fattorizzare n = 33.

- Calcoliamo la frazione continua per 33.


a0 = 5
a1 = 1
a2 = 2
a3 = 1
a4 = 10

x
0 = x a0 = 33
5

5+ 33
1

x1 = 335 = 8

x
1 = x0 a1 = 3+8 33
1
x2 = xf
= 3+833 = 3+ 3 33
1

x
2 = x1
a2 =
3+ 33
x3 = 8
x
3 = x2 a3 =
x4 = 5 + 33
...

3+ 33
3

5+ 33
8

- Calcoliamo i bi .
b0 = a0 = 5
b1 = a0 a1 + 1 = 6
b2 = a2 b1 + b0 = 17

b20 mod 33 = 8
b21 mod 33 = 3
b22 mod 33 = 8.

Quindi
x = b0 b2 = 5 17 = 19 mod 33

y=8

e allora
mcd(x + y, n) = mcd(27, 33) = 3

mcd(x y, n) = mcd(11, 33) = 11.

34

Fattorizzazione di numeri interi in fattori primi

Esempio 2.1.21 Fattorizziamo n = 197209.


si ottiene
a0 = 444
b0 = 444
a1 = 12
b1 = 5329
a2 = 6
b2 = 31428
a3 = 23
b3 = 159316
a4 = 1
b4 = 191734
a5 = 5
b5 = 131941
a6 = 3
b6 = 193139
a7 = 1
b7 = 127871
a8 = 26
b8 = 165232
a9 = 6
b9 = 133218

Facendo i calcoli (considerando i bi modulo n)


b20
b21
b22
b23
b24
b25
b26
b27
b28
b29

mod
mod
mod
mod
mod
mod
mod
mod
mod
mod

n = 73 = 1 73
n = 145 = 5 29
n = 37 = 1 37
n = 720 = 24 32 5
n = 143 = 11 13
n = 215 = 5 43
n = 656 = 24 41
n = 33 = 3 11
n = 136 = 23 17
n = 405 = 34 5

Quindi x = b3 b9 = 126308 mod n e y = 22 33 5 = 540. Quindi abbiamo che mcd(x + y, n) =


991 e mcd(x y, n) = 199.
Nel 1999, Brent, usando il metodo ECM (Elliptic Curve Method) ha trovato la fattorizzazione del numero di Fermat F10
45592577 6487031809 4659775785220018543264560743076778192897 P252
dove P252 `e un primo di 252 cifre.

2.1.5

Curve ellittiche

Sia k un campo e x3 + ax + b k[x] con tre radici distinte. Allora


E(k) = {(x, y) k2 | y 2 = x3 + ax + b} {O}
dove O `e un simbolo, `e chiamato curva ellittica.
Osservazione 2.1.22 Sia f (x) = x3 + ax + b. Allora f ha tre radici distinte se e solo se non
esiste k con f () = f () = 0.
Sia P = (, ) E(k) e vogliamo costruire la retta tangente a E(k) che passa per P . Per
la pendenza facciamo la derivata di y 2 = x3 + ax + b, quindi
2y

dy
= 3x2 + a = f (x).
dx

Se f ha tre radici distinte non `e possibile che 2 = f () = 0 e f () = 0 quindi la retta


2
tangente ha una pendenza ben definita che sar`
a 32+a ( = 0 vuol dire retta verticale).
Scriviamo x3 + ax + b = (x 1 )(x 2 )(x 3 ) e definiamo
Y
= (i j )2
i<j

che viene detto discriminante del polinomio x3 + ax + b. Questo ha tre radici distinte se e
solo se 6= 0. Inoltre = 4a3 + 27b2 .
Conclusione: y 2 = x3 + ax + b definisce una curva ellittica se e solo se = 4a3 + 27b2 6= 0.
Se k = R possiamo fare un grafico della curva. Si ottiene una cosa della seguente forma.

2.1 Fattorizzazione

35

Il grafico `e simmetrico rispetto allasse x perche y 2 = f (x). Quindi se (x0 , y0 ) E(k)


anche (x0 , y0 ) E(k).
Su E(k) possiamo definire unaddizione.

- lelemento neutro `e O quindi P + O = O + P = P per ogni P E(k).


- Se P1 , P2 E(k), P1 6= P2 e P1 , P2 6= O allora costruiamo la retta l per P1 e P2 . La retta l
interseca E(k) in un terzo punto P3 = (x3 , y3 ) e poniamo P1 + P2 = (x3 , y3 ).

P3
P2
P1

P1 + P2

- Se P1 = P2 E(k), P1 6= 0, allora sia l la tangente a E(k) per P1 e poi si procede in modo


analogo.

36

Fattorizzazione di numeri interi in fattori primi

P3

P1

P1 + P1

- Quando la retta `e verticale allora la somma `e O.


Teorema 2.1.23 Linsieme E(k) con la somma definita `e un gruppo abeliano.
Qui non proviamo questo teorema; la cosa difficile da provare `e che
(P1 + P2 ) + P3 = P1 + (P2 + P3 ).
Formule per laddizione
Siano P1 , P2 E(k), P1 6= P2 , P1 , P2 6= O e poniamo Pi = (xi , yi ).
La retta per P1 e P2 `e
y2 y1
y y1 =
(x x1 ).
x2 x1

2
3
1
Poniamo m = xy22 y
x1 e calcoliamo i punti di intersezione tra la retta e y = x + ax + b.
Avremo
(m(x x1 ) + y1 )2 = x3 + ax + b x3 m2 x2 + ux + v = 0

per opportuni u e v.
Due soluzioni di questa equazione sono x1 e x2 perche P1 e P2 sono sia sulla retta che
sulla curva. Quindi
x3 m2 x2 + ux + v = (x x1 )(x x2 )(x x3 ) = x3 (x1 + x2 + x3 )x2 + . . .
quindi si vede che x1 + x2 + x3 = m2 e quindi
x3 = m2 x1 x2

y3 = m(x3 x1 ) + y1

e dunque P1 + P2 = (m2 x1 x2 , m(x3 x1 ) y1 ).


Questa somma non dipende da a e b per`
o i punti P1 e P2 dipendono da a e b.
dy
Se P1 = P2 consideriamo la derivata rispetto a x di y 2 = x3 + ax + b. Avremo 2y dx
=
3x2 + a.

2.1 Fattorizzazione

37

- Se y1 6= 0 allora
m=

3x21 + a
2y1

quindi la retta l sar`


a y = m(x x1 ) + y1 . Segue che P1 + P1 = (x3 , y3 ) con
x3 = m2 2x1

y3 = m(x3 x1 ) + y1 .

- Se y1 = 0 allora P1 + P1 = O. (Osserviamo che non `e possibile avere y1 = 3x21 + a = 0.)


Esempio 2.1.24 Prendiamo y 2 = x3 + 17 e P1 = (1, 4). Avremo
3
3(1)2 + 0
=
8
8
9
137
+2=
64
64

2651
3 137
+1 +4 =
.
8 64
512

m =
x3 =
y3 =
Quindi P1 + P1 =

2.1.6

137
2651
64 , 512


.

Fattorizzazione con curve ellittiche

Sia p un primo. Definiamo


Ap =

Q | p non divide .

N.B. Se p non divide allora esiste  Z con = 1 mod p. Scriviamo = 1 mod p.


Definiamo p : Ap Fp , con p = 1 mod p.
Siano a, b Z tale che 4a3 + 27b2 6= 0 mod p. Allora

E(Fp ) = {(x, y) F2p | y 2 = x3 + ax + b} {O}


`e una curva ellittica su Fp .
Ma anche
E(Q) = {(x, y) Q | y 2 = x3 + ax + b} {O}
`e una curva ellittica.


Definiamo p : E(Q) E(Fp ) nel seguente modo. Sia P = , E(Q). Se p non
divide e p non divide allora
  
 

p (P ) = p
, p

altrimenti p (P ) = O.
Teorema 2.1.25 Lapplicazione p `e un omomorfismo di gruppi. In altre parole p (P1 +
P2 ) = p (P1 ) + p (P2 ).

38

Fattorizzazione di numeri interi in fattori primi


Qui proviamo solo un caso speciale di questo teorema.

Definizione 2.1.26 Sia p un primo e P =


p se p non divide v1 e p non divide v2 .

u1 u2
v1 , v2

Q2 . Allora P `e chiamato buono per

Lemma 2.1.27 Sia E(k) = {(x, y) | y 2 = x3 + ax + b} {O} una curva ellittica con a, b Z
e p > 2 un primo tale che p non divide = 4a3 + 27b2 . Sia p : E(Q) E(Fp ) la riduzione
modulo p. Siano P1 , P2 E(Q) due punti buoni per p. Allora p (P1 + P2 ) = p (P1 ) + p (P2 ).
Dimostrazione. Sia Pi = (xi , yi ). Qui scriviamo anche x mod p per p (x).
- Sia P1 6= P2 , p (P1 ) 6= p (P2 ) e x1 mod p 6= x2 mod p. In questo caso si usano le
stesse formule sia su Q che su Fp per calcolare la somma. Visto che modp `e moltiplicativo e
additivo il risultato `e uguale. Questo raggionamento anche vale quando P1 = P2 .
- Sia P1 6= P2 e x1 mod p = x2 mod p. Scriviamo x2 = x1 + pr x con x Q, x mod p 6= 0.
Allora y12 = y22 mod p perche x31 + ax1 + b = x32 + ax2 + b mod p e quindi y1 = y2 mod p. Poi
y22 = x32 + ax2 + b
= (x1 + pr x)3 + a(x1 + pr x) + b
= x31 + ax1 + b + (3x21 + a)pr x + pr+1

= y12 + (3x21 + a)pr x + pr+1

per unappropriata quantit`


a .
Quindi
(y2 + y1 )(y2 y1 ) = (3x21 + a)pr x + pr+1 .
Adesso distinguiamo due casi. Nel primo abbiamo y1 = y2 mod p. In quel caso
y2 y1 = (3x21 + a)pr x(y2 + y1 )1 + pr+1
per un opportuno .
Per calcolare P1 + P2 in E(Q) usiamo
m=
dove x2 x1 = pr x.
Quindi m mod p =
p (P2 ). Quindi

3x21 +a
2y1

3x2 + a
y2 y1
= 1
+ p
x2 x1
y2 + y1

mod p che `e esattamente lm che si usa per calcolare p (P1 ) +


(P1 + P2 ) = p (P1 ) + p (P2 ).

Se y1 = y2 mod p allora abbiamo che y2 y1 6= 0 mod p (altrimenti entriamo nel caso


precedente, visto che p > 2). Quindi
m=

y2 y1
.
pr x

Visto che r > 0 abbiamo che p (P1 + P2 ) = O, che `e uguale a p (P1 ) + p (P2 ).

2.1 Fattorizzazione

39

Lidea del metodo per fattorizzare interi con curve ellittiche il la seguente. Il gruppo
E(Fp ) `e finito quindi per P E(Fp ) esiste k con
. . + P} = O.
|P + .{z
k

Sia Q E(Q) con p (Q) = P . Allora per il Teorema 2.1.25


. . + P} = O.
(Q + . . . + Q) = |P + .{z
{z
}
|
k

Quindi kQ = Q + . . . + Q `e uguale a 0 oppure ha coordinate con denominatore divisibile per


p.
Algoritmo 2.1.28 Dato: un numero composto n.
Calcoliamo: un fattore di n
1. Si sceglie una curva data da y 2 = x3 + ax + b con un punto P su E(Q).
2. Sia d = mcd(n, 4a3 + 27b2 ). Se d = n si sceglie unaltra curva. Se d > 1 e d < n
abbiamo un divisore di n.
3. Assumiamo d = 1. Poniamo k = mcm(2, 3, . . . , K) per un certo K.


4. Calcoliamo kP = uv11 , uv22 . Sia di = mcd(vi , n). Se di `e un divisore pi`
u grande di 1 e
minore di n allora un fattore `e trovato. Altrimenti si riprova con K pi`
u grande o con
unaltra curva.
N.B. Sappiamo che n non `e primo. Il metodo funziona se:
- sia p un primo che divide n;
- se lordine di p (Q) divide k allora p (kQ) = kp (Q) = O e quindi se kQ 6= O allora p
divide il denominatore di u o di v.
Teorema 2.1.29 (di Hasse) Si ha

p + 1 2 p |E(Fp )| p + 1 + 2 p.
Osservazione 2.1.30 Se |E(Fp )| divide k allora troviamo p. Per esempio quando K

p + 1 + 2 p.
Esempio 2.1.31 Supponiamo che 61 divida n. Sia Ea la curva y 2 = x3 + ax + 3 a e
P = (1, 2). Avremo
a
|Ea (F61 )|
ordine di (P mod 61)
4
68
68
3
54
9
2
76
38
1
69
69
0
48
12
1
48
4
2
66
33
3
72
6
4
67
67

40

Fattorizzazione di numeri interi in fattori primi

Ora 4P = O E1 (Q) e 6P =

51825601
16208676 ,

E3 (Q) e 61 divide 16208676.



Osservazione 2.1.32 E sufficiente conoscere kP modulo n. Cio`e se rP = uv11 , uv22 e se
mcd(vi , n) 6= 1, allora il fattore `e trovato. Altrimenti se mcd(vi , n) = 1 allora esistono ci , di
con ci vi + di n = 1 e allora uvii mod n = ui ci mod n.
Esempio 2.1.33 Fattorizziamo n = 39. Abbiamo che = 31 e mcd(31, 39) = 1. Prendiamo
come E la curva y 2 = x3 + x 1 e P = (1, 1). Sia k = 6.
Abbiamo che 2P = (2, 3). Calcoliamo 4P . Avremo
m=

12 + 1
13
3x21 + a
=
=
y1
6
6

e poiche mcd(6, 39) = 3 allora abbiamo trovato un fattore.


Esempio 2.1.34 Fattorizziamo 185 con la curva dellEsempio 2.1.33 e k = 8. Si ha = 31
e mcd(31, 185) = 1 quindi y 2 = x3 + x 1 definisce una curva ellittica modulo ogni primo che
divide n.
Abbiamo che 2P = (2, 3).
Calcoliamo 4P . Si ha m = 13
6 . Ora
185
6
5
1

=
1 185
=
0 185
=
1 185
= 1 185

+ 06
+ 16
30 6
+ 31 6

quindi 61 mod 185 = 31. Segue che


m mod 185 = 13 31 mod 185 = 152 mod 185.
Quindi si ha
x3 = m2 2x1 = 1522 2 2
= 160 mod 185

y3 = m(x3 x1 ) y1 = 152(160 2) 3
= 37 mod 185.

Quindi 4P = (160, 37) mod 185.


Calcoliamo ora 8P . Abbiamo

Ora

m=

3 1602 + 1
3x21 + a
.
=
2y1
74

185
74
37
0

=
1 185
=
0 185
=
1 185
= 2 185

quindi mcd(185, 74) = 37 e dunque 185 = 5 37.

+
+

0 74
1 74
2 74
5 74

2.2 Esercizi

2.1.7

41

Complessit`
a

- Lalgoritmo che prova k = 2, 3, . . . , n come divisori ha complessit`a O(p) (ordine di p),




1
dove p `e il fattore pi`
u piccolo di n. Ma O(p) = O( n). Inoltre n =n 2 = exp 21 log n e
log n
= numero di cifre di n = complessit`a di n. Quindi exp p21 log n `e esponenziale.
- Il metodo curve ellittiche ha complessit`a stimata O(exp log p log(log p)) dove p `e il
fattore pi`
u piccolo di n. Questo `e subesponenziale.
p
- Il metodo con le frazioni continue ha complessit`a stimata O(exp 2 logp
p log(log p)).
- Due altri metodi famosi sono: il crivello quadratica ha complessit`a O(exp log n log(log n)),
il crivello dei campi di numeri con complessit`a O(exp (log)1/3 (log(log p))2/3 ).

2.2

Esercizi

1. Fattorizzare 203 e 899 con il metodo di Fermat.


2. In questo esercizio vogliamo trovare una fattorizzazione di n = 8616460799 con il metodo
di Fermat. Quindi vogliamo trovare t > s tali che t2 s2 = n.
(a) Abbiamo n mod 3 = 2. Provare che k2 mod 3 `e 0 o 1 per k Z. Provare che se
t2 mod 3 = 1, allora t2 n non pu`
o essere un quadrato. Concludere che t deve
essere divisibile per 3.
(b) Abbiamo n mod 8 = 7. Provare che k2 mod 8 `e 0,1,4. Provare che se t2 n `e un
quadrato allora t2 = 0 mod 8. Concludere che t deve essere divisibile per 4.
(c) Provare che t deve essere divisibile per 12.

(d) Adesso provare per t i multipli di 12, maggiori di n. Scrivere n come un


prodotto di interi pi`
u piccoli.
(e) Leconomista inglese W. S. Jevons (1835-1882) ha scritto: Given any two numbers,
we may by a simple and infallible process obtain their product, but it is quite
another matter when a large number is given, to determine its factors. Can the
reader say what two numbers multiplied together produce the number 8616460799?
I think it unlikely that anyone but myself will ever know.

3. Trovare i primi 7 convergenti della frazione continua per 5.


4. Fattorizzare 299, 341, 1537 e 1139 con il metodo delle frazioni continue.
5. Sia a > 1 un intero, e

a2 + 4
.
2
Provare che nella frazione continua per abbiamo a = a0 = a1 = a2 , . . ..
=

6. Sia

a+

1+ 5
x=
.
2
Siano a0 , a1 , . . . i numeri che vengono fuori dalla frazione continua per x.
(a) Provare che ai = 1 per i 0.

42

Fattorizzazione di numeri interi in fattori primi


(b) Sia Fn ln-esimo numero di Fibonacci (cio`e F0 = 1, F1 = 1, Fn+1 = Fn + Fn1 ).
per n 0.
Provare che i convergenti della frazione continua per x sono FFn+1
n
7. Consideriamo la curva ellittica con equazione y 2 = x3 + x 1. Sia P = (1, 1) E.
Calcolare 3P = P + P + P .
8. In questo esercizio vogliamo fattorizzare n = 65 = 5 13 con il metodo delle curve
ellittiche. Sia E la curva ellittica con equazione y 2 = x3 + 2x + 1 e P = (1, 2).
(a) Controllare che lequazione definisce una curva ellittica modulo ogni primo che
divide n.
(b) Calcolare tutti i punti di E(F5 ) (suggerimento: fare una tabella dei quadrati modulo 5, e una tabella dei x3 + 2x + 1 per x F5 ). Provare che k5 (P ) = O implica
che k `e divisibile per 7. (Qui 5 (P ) `e la riduzione di P modulo 5.)
(c) Calcolare tutti i punti di E(F13 ). Provare che 413 (P ) = O.
(d) Calcolare 4P modulo n, e fattorizzare n.
9. Di nuovo consideriamo n = 65, ma adesso consideriamo la curva con equazione y 2 =
x3 + 3x + 2 e P = (2, 4).
(a) Controllare che lequazione definisce una curva ellittica modulo ogni primo che
divide n.
(b) Calcolare tutti i punti di E(F5 ). Provare che k5 (P ) = O se e solo se che k `e
divisibile per 5.
(c) Calcolare 5P modulo n e fattorizzare n.

10. Fattorizzare n = 115 con il metodo delle curve ellittiche. (Si pu`
o usare la curva y 2 =
3
x + 2x 3 e P = (2, 3).)

Capitolo 3

Fattorizzazione di polinomi
Vogliamo fattorizzare polinomi in k[x] dove k `e un campo.
Gli algoritmi dipendono dalla scelta di k. Studiamo algoritmi per il caso k = Fq dove
q = pn , p primo, e k = Q.

3.1

Alcuni fatti generali sui polinomi

Lemma 3.1.1 Dati f, g k[x] esistono unici q, r k[x] con deg(r) < deg(g) e f = qg + r
(divisione con resto).
Lemma 3.1.2 Sia I k[x] un ideale. Allora I `e generato da un elemento, cio`e esiste g I
con I = {f g | f k[x]}.
Dimostrazione. Sia g I un elemento non nullo di grado minimo. Se h I scriviamo
h = qg + r con deg(r) < deg(g). Questo implica r I quindi r = 0 e h = qg.

Lemma 3.1.3 Siano f1 , f2 k[x]. Allora esiste un unico monico g k[x] con
1) g divide f1 , f2 ;
2) se h divide f1 , f2 allora divide g.
Dimostrazione. Sia I k[x] lideale generato da f1 , f2 , cio`e I = {h1 f1 + h2 f2 | hi k[x]}.
Allora I `e generato da un monico g (di grado minimo). Ora f1 , f2 I implica che g divide
f1 e f2 .
Se h divide f1 , f2 allora scriviamo g = h1 f1 +h2 f2 (visto che g I = hf1 , f2 i) e concludiamo
che h divide g.
Per dimostrare lunicit`
a, sia g k[x] con le stesse propriet`a di g. Allora, per 1) e 2), g
divide g. Analogamente g divide g . Essendo g e g monici segue che g = g .

Definizione 3.1.4 Il polinomio g `e chiamato massimo comun divisore di f1 e f2 .
Si vede dalla prova del Lemma 3.1.3 che esistono h1 , h2 tali che h1 f1 + h2 f2 = g. Come
per gli interi abbiamo un algoritmo di Euclide per calcolare il massimo comune divisore di
f1 , f2 . E basato sul seguente lemma.

44

Fattorizzazione di polinomi

Lemma 3.1.5 Scriviamo f1 = qf2 + r con deg(r) < deg(f2 ). Allora si ha mcd(f1 , f2 ) =
mcd(f2 , r).
Dimostrazione. Poniamo
D1 = {h k[x] | h divide f1 , f2 } e D2 = {h k[x] | h divide f2 , r}.
Allora D1 = D2 . Quindi anche lelemento monico di grado massimale di D1 e D2 `e uguale. 
Per calcolare mcd(f1 , f2 ) si rimpiazza (f1 , f2 ) con (f2 , r) e cos` via. Ad un certo punto si
trova (g, 0) e mcd(g, 0) = g.
Esempio 3.1.6 Siano f1 = x7 + 1, f2 = x4 + x2 + x F2 [x]. Abbiamo
f1 = (x3 + x + 1)f2 + x3 + x + 1.
Posto f3 = x3 + x + 1 si ha
f2 = xf3 + 0
quindi mcd(f1 , f2 ) = mcd(f2 , f3 ) = mcd(f3 , 0) = f3 .
N.B. Un polinomio h k[x] `e chiamato irriducibile se h = ab con a, b k[x] implica che
a oppure b st`
a in k.
Teorema 3.1.7 Sia f k[x], allora esistono unici c k, f1 , . . . , fr monici, irriducibili e
diversi in k[x] e e1 , . . . , er Z>0 con f = cf1e1 frer .
Dimostrazione. Se f `e irriducibile non c`e niente da fare. Altrimenti sar`
a f = ab dove a, b
sono polinomi tali che deg(a), deg(b) < deg(f ). Allora per induzione a e b sono prodotti di
irriducibili, e quindi anche f .
dm con ogni g
Per dimostrare lunicit`
a supponiamo che f = c1 f1e1 frer = c2 g1d1 gm
i
ancora irriducibile e monico.
Innanzitutto si vede che c1 e c2 sono il coefficiente di testa di f , e perci`
o c1 = c2 .
Fatto: sia a k[x] irriducibile e a divida bc con b, c k[x]. Allora a divide b oppure a
divide c. (Infatti, se a non divide b allora mcd(a, b) = 1 quindi esistono h1 , h2 con h1 a+h2 b = 1
quindi c = h1 ac + h2 bc e quindi a divide c.)
Da questo fatto segue che f1 divide un gi . Ma ogni gi `e irriducibile e monico quindi
h1 = gi e quindi questi elementi cancellano. Usando linduzione concludiamo che linsieme
{f1 , . . . , fr } = {g1 , . . . , gm } e gli esponenti sono uguali.

Problema. Dato f k[x] monico trovare f1 , . . . , fr irriducibili, monici e distinti tali che
f = f1e1 frer .

3.2

Lalgoritmo di Berlekamp

Definizione 3.2.1 Sia f k[x] monico e f = f1e1 frer con fi irriducibile e monico per
ogni i. Allora gli fiei sono chiamati fattori primari di f .

3.2 Lalgoritmo di Berlekamp

45

Lemma 3.2.2 Sia f Fq [x] monico e v Fq [x] con v q = v mod f . Allora


Y
mcd(f, v a).
f=
aFq

Dimostrazione. In Fq [Y ] abbiamo
Yq Y =

aFq

(Y a)

(perche aq = a per ogni a Fq ). Sostituiamo Y con v e otteniamo


Y
(v a).
vq v =
aFq

Ma v q v `e divisibile per f quindi f = mcd(f, v q v).


Fatto: siano p, q, r k[x] con mcd(q, r) = 1. Allora
mcd(p, qr) = mcd(p, q)mcd(p, r).
Questo si pu`
o provare nel seguente modo. Sia g un polinomio irriducibile che divide qr.
Allora g divide q o r, ma non entrambi (questo si vede scrivendo la fattorizzazione di q e
quella di r; in uno di quelle deve apparire g). Questo implica che un polinomio qualsiasi g
che divide qr pu`
o essere scritto come g = g1 g2 , con g1 divide q, e g2 divide r. Sia A linsieme
dei polinomi che dividono qr. Siano B1 , B2 rispettivamente gli insiemi dei divisori di q e r.
Allora segue che A = B1 B2 , che implica la tesi.
Osserviamo che mcd(v a, v b) = 1 se a 6= b, a, b Fq . Infatti se g divide v a e v b
allora g divide b a 6= 0 con b a Fq .
Segue che
f

= mcd(f, v q v)
Y
(v a))
= mcd(f,
=

aFq

aFq

mcd(f, v a).


Notazione. Con Fq [x]/(f ) denotiamo lanello quoziente Fq [x] modulo lideale generato da
f.
Se f = xn + . . . + a0 allora ogni elemento di Fq [x]/(f ) ha un rappresentante unico della
forma b0 + b1 x + . . . + bn1 xn1 .
Lemma 3.2.3 Sia f Fq [x] monico e sia
V = {v Fq [x]/(f ) | v q v mod f }.
Scriviamo f = f1e1 frer dove gli fi sono irriducibili distinti. Allora V `e uno spazio vettoriale
su Fq di dimensione r.

46

Fattorizzazione di polinomi

Dimostrazione. Siano v, w V , allora


(v + w)q = v q + wq = v + w mod f
e quindi v + w V .
Inoltre sia Fq , allora
(v)q = q v q = v q = v mod f
quindi v V .
Quindi V `e uno spazio vettoriale su Fq .
Siano ora R1 , . . . , Rs anelli. Ricordiamo che la somma diretta di anelli R = si=1 Ri `e
linsieme che consiste di (r1 , . . . , rs ) con ri Ri e tale che
(r1 , . . . , rs ) + (r1 , . . . , rs ) = (r1 + r1 , . . . , rs + rs )
e
(r1 , . . . , rs )(r1 , . . . , rs ) = (r1 r1 , . . . , rs rs ).
Si ha che R `e un anello.
Per il Teorema cinese dei resti per anelli polinomiali, esiste un isomorfismo di anelli
: Fq [x]/(f ) ri=1 Fq [x]/(fiei ). Qui (h mod f ) = (h mod f1e1 , . . . , h mod frer ).
Per v V scriviamo (v) = (v1 , . . . , vr ). Quindi
vV

v q = v mod f

viq = vi mod fiei .

Per il Lemma 3.2.2 abbiamo che


fiei =

aFq

mcd(fiei , vi a).

(3.1)

Ma vi a e vi b sono coprimi per a, b Fq e a 6= b. Segue che in (3.1) abbiamo soltanto


fattori di vi a per un unico a Fq , oppure fiei = mcd(fiei , vi a), oppure fiei divide vi a.
Quindi vi = a mod fiei e quindi (V ) Fq . . . Fq dove Fq Fq [x]/(fiei ) sono i polinomi
costanti.
Ma aq = a per ogni a Fq quindi Fq . . . Fq (V ).
Segue che (V ) = Fq . . . Fq (r addendi), implica che V `e uno spazio vettoriale di
dimensione r.

Ora presentiamo lalgoritmo di Berlekamp per trovare i fattori primari di f Fq [x] con f
monico.
Algoritmo 3.2.4 Dato: f Fq [x], monico.
Calcoliamo: i fattori primari di f .
1. Sia {v1 = 1, v2 , . . . , vr } una base di V = {v Fq [x]/(f ) | v q = v mod f }.
2. Poniamo P = {f } e per j = 2, . . . , r facciamo
2a) rimpiazziamo ogni h P con gli elementi non banali dellinsieme {mcd(h, vj a) |
a Fq }.

3.2 Lalgoritmo di Berlekamp

47

3. Il risultato `e P .
Lemma 3.2.5 Lalgoritmo di Berlekamp restituisce i fattori primari di f .
Dimostrazione. Dobbiamo dimostrare che
- f `e il prodotto degli elementi di P ;
- gli elementi di P sono coprimi;
- gli elementi di P sono una potenza di un irriducibile.
Il prodotto degli elementi di P rimane sempre uguale perche
Y
mcd(h, vj a).
h=
aFq

Infatti, abbiamo vjq = vj mod f , ma gli h P sono fattori di f quindi vjq = vj mod h. Quindi
possiamo applicare il Lemma 3.2.2.
Inoltre `e sempre vero che gli elementi di P sono coprimi perche se h P `e rimpiazzato
con diversi fattori quelli sono fattori di vj a per diversi a e quindi coprimi.
Ora sia P linsieme finale, e h P . Assumiamo che h non `e una potenza di un irriducibile.
e
Allora da quello detto sopra segue che h `e divisibile per un fiei e un fj j . Per semplicit`a
assumiamo i = 1 e j = 2.
Osserviamo che per g P e 1 j r abbiamo che esiste aj Fq con vj = aj mod g.
Questo `e vero dopo il passo 2a) dove `e trattato j. Infatti dopo quel passo ogni elemento di
P `e fattore di un vj a per un certo a Fq . Ma se vj = aj mod g0 e g0 `e rimpiazzato con
alcuni fattori g0 , allora vj = aj mod g0 . Concludiamo che esiste aj Fq con vj = aj mod h
per 1 j r.
P
Adesso sia v V e scriviamo v = rj=1 j vj , j Fq . Allora
v=

r
X

j aj mod h.

j=1

Pr

Posto av = j=1 j aj abbiamo v = av mod h, av Fq .


Visto che f1e1 , f2e2 dividono h abbiamo che v = av mod f1e1 e v = av mod f2e2 . Ma : V
Fq . . . Fq con (v) = (v mod f1e1 , . . . , v mod frer ) `e un isomorfismo.
Ma (v) = (av , av , , . . . , ), cio`e le prime due componenti sono sempre uguali. Questo
implica che non `e un isomorfismo e quindi otteniamo una contraddizione.

Problema rimasto. Dato f Fq [x], f = ge con g irriducibile, trovare g ed e.
d
f = eg ge1 . Abbiamo due casi:
Si calcola f = dx

1) f = 0. Dico che f `e un polinomio in xp dove q = pm , p primo.


Gli esponenti di x che appaiono in f sono divisibili per p quindi f = h(xp ) = h1 (x)p .
Calcoliamo h1 che `e ancora una potenza di g e continuiamo.
f

e1 .
2) f 6= 0. Allora g = mcd(f,f
) dove mcd(f, f ) = g
Esempio 3.2.6 Sia f = x4 + x3 + x + 1 F2 [x]. Scriviamo v F2 [x]/(f ) come v =
a0 + a1 x + a2 x2 + a3 x3 , ai F2 .

48

Fattorizzazione di polinomi
Poiche a2i = ai allora v 2 = a0 + a1 x2 + a2 x4 + a3 x6 .
Ora, modulo f , abbiamo
x4 = x3 + x + 1
x5 = x4 + x2 + x = x3 + x + 1 + x2 + x
= x3 + x2 + 1
x6 = x4 + x3 + x = x3 + x + 1 + x3 + x
= 1

quindi
v 2 = a0 + a1 x2 + a2 (x3 + x + 1) + a3 mod f
= a0 + a2 + a3 + a2 x + a1 x2 + a2 x3 mod f
e quindi

a0 + a2 + a3 = a0

a2 = a1
a = a2

1
a2 = a3

a1 = a2 = a3

quindi una base di V `e {v1 = 1, x + x2 + x3 }.


Abbiamo trovato r = 2
Nel passo 2a) rimpiazziamo f con
h1 = mcd(f, x + x2 + x3 ) = x2 + x + 1
h2 = mcd(f, 1 + x + x2 + x3 ) = x2 + 1.
Quindi troviamo P = {h1 , h2 }. Abbiamo h1 = 1, e segue che mcd(h1 , h1 ) = 1 e dunque h1 `e
irriducibile. Analogamente h2 = 0 implica h2 = (x + 1)2 e (x + 1) = 1 quindi `e irriducibile.
Concludiamo che f = (x + 1)2 (x2 + x + 1) `e la fattorizzazione di f .

3.3

Algoritmo di Cantor-Zassenhaus (1981)

Lalgoritmo di Berlekamp ha un grande svantaggio in quanto bisogna calcolare mcd(f, v a)


per a Fq . Potenzialmente questo costa tanto lavoro.
Assumiamo q dispari.
Lemma 3.3.1 Sia Fq , allora
in Fq e

q1
2

q1
2

= 1. Inoltre

q1
2

= 1 se e solo se `e un quadrato

= 1 se e solo se non `e un quadrato.

Dimostrazione. Sia Fq un elemento primitivo, q1 = 1, k 6= 1 per k < q 1. Quindi


= i implica
 q1 i
q1
.
2 = 2
 q1 2
q1
Osservazione 3.3.2 Sia ha che 2
= 1 implica 2 = 1 (ci sono soltanto due radici

di 1 in Fq ) ma

q1
2

6= 1 quindi

q1
2

= 1.

3.4 Fattorizzazione di polinomi in Q

49

Quindi se `e un quadrato allora = 2k e quindi


quadrato allora =

2k+1

quindi

q1
2

q1
2

(q1 )k

q1
2

= q1

= 1.

k

= 1. Se non `e un


Consideriamo lo spazio
V = {v Fq [x]/(f ) | v q = modf }.
Sia v V e vediamo V dentro Fq [x]. Allora

 q1
  q1

vq v = v v 2 1 v 2 + 1 .

Osservazione 3.3.3 Questi fattori sono coprimi.


Si ha
f = mcd(f, v q v) = mcd(f, v)mcd(f, v

q1
2

1)mcd(f, v

q1
2

+ 1).
q1

Questa fattorizzazione di f `e banale (cio`e f = f 1 1) se e solo se f divide uno tra v, v 2 1,


q1
v 2 + 1.
Possiamo assumere che deg(v) < deg(f ) quindi f non divide v.
Sia : Fq [x]/(f ) ri=1 Fq [x]/(fiei ), lisomorfismo dove fiei sono i fattori primari di f .
Allora (V ) = ri=1 Fq implica (v) = (a1 , . . . , ar ), ai Fq .
Adesso f divide v

q1
2

q1
2

1 se e solo se v

q1
2

= 1 mod f e quindi se e solo se (v)

q1
2

(1, . . . , 1) oppure ai
= 1 per ogni i. Per il Lemma 3.3.1 si ha che ai Fq `e un quadrato
per ogni i.
q1
Analogamente f divide v 2 + 1 se e solo se ai Fq non `e un quadrato per ogni i.
Poniamo
C = {(a1 , . . . , ar ) Fq r | ai `e un quadrato i}

{(a1 , . . . , ar ) Fq r | ai non `e un quadrato i}.

Si ha che
|C| =

q1
2

r

q1
2

r

=2

q1
2

r

Se prendiamo v V casualmente (distribuzione uniforme) allora la probabilit`a che la fattorizzazione vada male `e data da
r

!r
q1
2
1 1q
2
1
|C|
< .
=
=2
P((v) C) =
r
|V |
q
2
2
Quindi se scegliamo v casualmente k volte la probabilit`a di non trovare una fattorizzazione `e
k
minore di 12 .

3.4

Fattorizzazione di polinomi in Q

Prima vediamo che fattorizzare polinomi in Q si riduce a fattorizzare in Z[x].

50

Fattorizzazione di polinomi

Definizione 3.4.1 Sia f Z[x], f = a0 + a1 x + . . . + an xn , ai Z. Allora


c(f ) = mcd(a0 , a1 , . . . , an )
`e chiamato contenuto di f .
Lemma 3.4.2 Siano f, g Z[x] con c(f ) = c(g) = 1, allora c(f g) = 1.
Dimostrazione. Supponiamo che c(f g) > 1. Allora esiste un primo p che divide tutti i
coefficienti di f g.
Per h Z[x] scriviamo f per il polinomio h mod p che `e un polinomio in Fp [x]. Allora

0 = f g = fg 6= 0 perche f 6= 0 6= g in quanto hanno contenuto 1.
Lemma 3.4.3 (Gauss) Siano f, g Z[x]. Allora c(f g) = c(f )c(g).
Dimostrazione. Scriviamo a = c(f ), b = c(g). Allora
fg
f g = ab
ab
Ma c

 
f
a

=c

g
b

fg
c(f g) = c ab
ab

= 1 quindi, per il Lemma 3.4.2, c

f g
a, b

Z[x]. Ma

= ab c

f g
ab

fg
ab

= 1 quindi c(f g) = ab.

Teorema 3.4.4 Sia f Z[x] e supponiamo che esistano g, h Q[x] con f = gh. Allora
esistono a, b Q tali che ag, bh Z[x] e f = (ag)(bh).
In altre parole ogni fattorizzazione di f in Q[x] viene da una fattorizzazione in Z[x].
Dimostrazione. Possiamo assumere che c(f ) = 1 (altrimenti dividiamo per c(f )). Siano
a, b Q tali che ag, bh Z[x] e c(ag) = c(bh) = 1. Abbiamo
abf = (ag)(bh) Z[x]

e c(abf ) = c(ag)c(bh) = 1.

Se ab = st , se t > 1, allora ogni coefficiente di f `e divisibile per t perche st f Z[x]. Ma


c(f ) = 1 quindi non `e possibile. Segue che t = 1.
Ora c(abf ) = c(sf ) = 1 quindi s = 1. Quindi (ag)(bh) = f . Se questo `e f allora
rimpiazziamo a con a e otteniamo f = (ag)(bh).

Quindi per fattorizzare un f Q[x] possiamo fare alcune riduzioni
- assumere f Z[x] (altrimenti moltiplichiamo per s Z);
- non cambia niente se cerchiamo i fattori in Z[x] (per il Teorema 3.4.4);
- assumiamo che f sia libero di quadrati. Altrimenti scriviamo f = g2 h e allora f = 2gg h +
f
g2 h e quindi g divide mcd(f, f ). Quindi possiamo fattorizzare mcd(f, f ) e mcd(f,f
) .
Idea. Fattorizziamo f mod p, p primo, e solleviamo i fattori su Z. Questo processo si
chiama sollevamento di Hensel.

3.4 Fattorizzazione di polinomi in Q

3.4.1

51

Sollevamento di Hensel

Teorema 3.4.5 (Hensel) Sia f Z[x] e p un primo. Siano g, h Z[x] con


- deg(g) + deg(h) = deg(f );
- mcd(g, h) = 1 mod p;
- f = gh mod pk per un certo intero k > 0.
Z[x] con
Allora esistono g, h
= deg(h);
- deg(
g ) = deg(g), deg(h)
= h mod pk ;
- g = g mod pk , h
mod pk+1 .
- f = gh
= h + pk v per certi u, v Z[x].
Dimostrazione. Poniamo g = g + pk u, h
Controlliamo la terza propriet`a. Abbiamo
= f gh pk vg pk uh p2k uv
f gh
e questo deve essere 0 modulo pk+1 .
N.B. Si ha che f gh `e divisibile per pk .
Cerchiamo u e v tali che
f gh
vg uh = 0 mod p.
pk
Poniamo e = f gh
.
pk
Sappiamo che mcd(g, h) = 1 mod p. Quindi esistono a, b Z[x] con ag + bh = 1 mod p.
Quindi eag + ebh = e mod p.
Andrebbe bene con v = ea e u = eb ma questo potrebbe aumentare il grado. Aggiustiamo
quindi le cose per eb. Scriviamo eb = qg + r con deg(r) < deg(g). Allora
eag + (qg + r)h = e mod p

(ea + qh)g + rh = e mod p.

Proviamo allora con v = ea + qh mod p e u = r mod p. Naturalmente, ci interessano


soltanto u e v modulo p.
Quindi la seconda e la terza propriet`a sono soddisfatte. Bisogna controllare i gradi.
Abbiamo
deg(u) = deg(r) < deg(g) deg(
g ) = deg(g).

allora deg(e) deg(f ).


Poiche e = f gh
pk
Inoltre uh + vg = e mod p ma deg(uh) < deg(f ) perche deg(u) < deg(g).
deg(vg mod p) deg(f ). Segue che
deg(v mod p) deg(h)

Quindi

= deg(h).
deg(h)


Bisogna calcolare
La prova del precedente teorema d`
a un algoritmo per costruire g, h.

52
- e=

Fattorizzazione di polinomi
f gh
;
pk

- a, b con ag + bh = 1 mod p (algoritmo di Euclide esteso);


- q, r con eb = qg + r e deg(r) < deg(g) (divisione con resto);
- u = r mod p e v = ea + qh mod p.
Allora g = g + pk u e
h = h + pk v.
Esempio 3.4.6 Sia f = x4 + 2x3 3x2 4x 1, g = x2 + 1 e h = x2 + 2x + 2. Abbiamo che
gh = x4 + 2x3 + 3x2 + 2x + 2 = f mod 3
quindi

f gh
= 2x2 2x 1 = x2 + x + 2 mod 3.
3
Possiamo fare i calcoli modulo p perche u e v ci interessano solo modulo p. In particolare
e, a, b, q, v possono essere calcolati modulo p. Abbiamo (tutto modulo 3):
e=

h = x2 + 2x + 2
g =
x2 + 1
2x + 1
2x2 + x
x+1
2
1

=
1h
=
0h
=
h
=
xh
=
xh
= (x + 1)h
= (2x + 2)h

+
+

0g
1g
g
xg
(1 x)g
xg
xg.

Quindi a = x, b = 2x + 2 modulo 3. E quindi, modulo 3,


eb = (x2 + x + 2)(2x + 2) = 2x3 + x2 + 1 = (2x + 1)g + x = qg + r.
Allora u = r = x e
v = ea + qh = (x2 + x + 2)x + (2x + 1)(x2 + 2x + 2) = 3x3 + 6x2 + 8x + 2
= 2x + 2 mod 3.
Si vede che deg(v) < deg(h) mod p ma non `e detto che v abbia grado minore di h senza
il modulo p.
Ora
g1 = g + 3u = x2 + 3x + 1
h1 = h + 3(2x + 2) = x2 + 8x + 8.
Abbiamo
f g1 h1 = 9x3 36x2 36x 9 = 0 mod 9
quindi va bene.
Abbiamo, per k = 2,
e=

f g1 h1
= x3 4x2 4x 1 = 2x3 + 2x2 + 2x + 2 mod 3.
9

3.4 Fattorizzazione di polinomi in Q

53

Poiche g1 = g mod p e h1 = h mod p gli a e b del passo precedente vanno ancora bene.
Abbiamo
eb = x4 + 2x3 + 2x2 + 2x + 1 = (x2 + 2x + 1)g1 + 0 = qg + r.
Quindi u = r = 0 e
v = ea + qh1 = (2x3 + 2x2 + 2x + 2)x + (x2 + 2x + 1)(x2 + 8x + 8)
= 2x + 2 mod 3.
Ora
g2 = g1 + 9u = g1 = x2 + 3x + 1
h2 = h1 + 9(2x + 2) = x2 + 26x + 26.
Abbiamo f = g2 h2 mod 27. Procedendo abbiamo
g3 = x2 + 3x + 1
h3 = x2 + 80x + 80.
Abbiamo f = g3 h3 mod 81 e cos via.
Adesso vediamo un modo per collegare i fattori sollevati con i veri fattori di f .
P
Definizione 3.4.7 Posto f = ni=0 fi xi C[x]. La norma di f `e
v
u n
uX
||f || = t
|fi |2 .
i=0

Lemma 3.4.8 Sia h C[x], a C. Allora

||(x a)h|| = |a|||(x a


1 )h||.
P
i
Dimostrazione. Poniamo h = m
i=0 hi x . Abbiamo

(x a)h = hm xm+1 + (hm1 ahm )xm + . . . + (h0 ah1 )x ah0


m+1
X
(hi1 ahi )xi
=
i=0

dove definiamo h1 = hm+1 = 0.


Abbiamo in generale che
|u v|2 = (u v)(
u v) = u
u u
vu
v + v
v
= |u|2 u
vu
v + |v|2 .

Abbiamo quindi
||(x a)h||2 =

m+1
X
i=0

|hi1 ahi |2

X
i ah
i1 hi + |ahi |2 )
=
(|hi1 |2 a
hi1 h
X
X
i ah
i1 hi + |
=
(|hi |2 a
hi1 h
ahi1 |2 ) =
|
ahi1 hi |2 .

54

Fattorizzazione di polinomi

Perche

|hi1 |2 =

|hi |2 e

|ahi |2 = |a|2 |hi |2 = |


ahi |2 .

Quindi
||(x a)h||2 = ||(
ax 1)h||2

= |
a|||(x a
1 )h||

= |a|||(x a
1 )h||.


Teorema 3.4.9
Sia f Z[x] e g Z[x] un fattore di f , deg(g) = m.
P(Landau-Mignotte)
i . Allora
Scriviamo g = m
g
x
i=0 i
 
m
|gi |
||f ||.
i
Dimostrazione. Siano b1 , . . . , bs e a1 , . . . , at in C gli zeri di f con molteplicit`
a (cio`e uno
zero di molteplicit`
a k compare k volte), e |bi | > 1 e |ai | 1.
P
Scriviamo f = ni=0 fi xi . Allora
t
s
Y
Y
(x aj )
f = fn (x bi )
j=1

i=1

quindi, per il Lemma 3.4.8


||f || = ||fn
Se h =

i
i hi x ,

s
t
t
s
Y
Y
Y
Y
(x bi )||.
(x a
1
)
(x aj )|| = |a1 at |||fn
(x bi )
j
j=1

j=1

i=1

allora ||h|| |h0 | perche ||h||2 =

i=1

|hi |2 . Quindi

1
||f || |a1 at ||fn ||
a1
t ||b1 bs |.
1 a

Per z C, |z
z 1 | = 1. Quindi

||f || |fn b1 bs |.

Siano 1 , . . . , m gli zeri di g. Allora g = gm (x 1 ) (x m ) quindi


gi = (1)i gm mi (1 , . . . , m )
dove i (x1 , . . . , xm ) `e li-esimo polinomio simmetrico elementare in x1 , . . . , xm , cio`e
X

i (x1 , . . . , xm ) =

1j1 <j2 <...<ji m

Si ha che i (x1 , . . . , xm ) `e una somma di

m
i

xj 1 xj i .

monomi di grado i.

3.4 Fattorizzazione di polinomi in Q

55

Assumiamo che |1 | |2 | . . . |m |. Allora


 
m
|i (1 , . . . , m )|
|1 i |
i
 
m

|b1 bs |
i
 
m ||f ||

i |fn |

quindi

 


m ||f ||
m
||f ||
= |gm |
.
|gi | |gm |
i |fn |
m i |fn |

Abbiamo |gm | |fn | perche gm divide fn , quindi


 
m
|gi |
||f ||.
i


P
i
Lemma 3.4.10 Sia g Z[x], g =P m
i=0 gi x . Sia B > 0 con |gi | < B. Sia M un intero con
m
M
i
M > 2B e scriviamo g mod M = i=0 gi x dove gi M
2 , 2 . Allora
g=

m
X

gi xi

i=0

quindi g = g mod M e gi = gi .

Dimostrazione. Per assurdo, sia gi 6= gi . Allora gi gi = kM con |k| 1. Ma |


gi | M
2
quindi
M
>B
|gi | = |kM + gi |
2
ma questa `e una contraddizione.

Da questi risultati segue che possiamo usare la seguente procedura per la fattorizzazione
di f in Z[x]. Prima scegliamo un primo p. Qui, per semplicit`a, assumiamo che f mod p `e il
prodotto di al massimo due fattori irriducibili.
- Se f mod p `e irriducibile allora f `e irriducibile, e ci fermiamo.
- Altrimenti supponiamo che f mod p = (g mod p)(h mod p), dove g mod p e h mod p in
Fp [x] sono irriducibile e diversi. (Questi si trovano con lalgoritmo di Berlekamp.)
- Con il sollevamento di Hensel troviamo gk e hk tali che f = gk hk mod pk .
- Con il Teorema Landau-Mignotte troviamo B per il quale tutti i coefficienti dei fattori
di f sono in valore assoluto < B.
Sia M = pk0 con k0 tale che M > 2B. Abbiamo


X
M M
i
gk0 mod M =
gi x ,
gi ,
2 2


X
j xj ,
i M , M .
hk0 mod M =
h
h
2 2
Allora f = gk0 hk0 `e la fattorizzazione di f oppure f `e irriducibile.

56

Fattorizzazione di polinomi

Esempio 3.4.11 Come nellEsempio 3.4.6, sia f = x4 + 2x3 3x2 4x + 1 quindi ||f ||2 =
1 + 4 + 9 + 16 + 1 = 31. Allora 2 x2 + 1 x + 0 un fattore di f . Abbiamo
|2 |

 
2
31,
2

|1 |

 
2
31,
1

|0 |

 
2
31
0

quindi |i | 2 31, quindi |i | 11 visto che i Z e dunque B = 11.


Sappiamo che f = g3 h3 mod 27 dove g3 = x2 + 3x + 1 e h3 = x2 + 26x + 26.
Scegliamo M = 27 > 2B = 22. Ora
g3 mod M

= x2 + 3x + 1

h3 mod M

= x2 x 1

e f = (x2 + 3x + 1)(x2 x 1); quindi abbiamo fattorizzato f .

3.4.2

Sollevamento di Hensel per pi`


u fattori

Dato f Z[x] e f1 , . . . , fr Z[x], p un primo con fi , fj coprimi modulo p. Sia deg(f1 ) + . . . +


deg(fr ) = deg(f ), f = f1 fr mod p.
Calcoliamo f1 , . . . , fr Z[x] con fi = fi mod p e f = f1 fr mod pk per un certo k.
 
1) Sia m = 2r e g = f1 fm , h = fm+1 fr .

Z[x] con g = g mod p, h


= h mod p e
2) Con il sollevamento di Hensel calcoliamo g, h
k
mod p .
f = gh
= fm+1 fr mod
3) Ricorsivamente calcoliamo f1 , . . . , fr con fi = fi mod p, g = f1 fm mod pk , h
k
p .
4) f = f1 fr mod pk .
Algoritmo
Vediamo la procedura per fattorizzare f Z[x] libero di quadrati.
1) Si sceglie un primo p tale che f mod p `e libero di quadrati (e p non divide il coefficiente
di testa di f ).
2) Con Landau-Mignotte calcoliamo B tale che
|coefficiente di un fattore di f | B
e scegliamo k tale che M = pk > 2B.
3) Siano f1 , . . . , fr i fattori irriducibili di f mod p (ottenuti con lalgoritmo di Berlekamp).
4) Con il sollevamento di Hensel troviamo f1 , . . . , fr Z[x] tale che f = f1 fr mod pk e
fi = fi mod p.

3.5 Esercizi

57

5) Per ogni S {1, . . . , r} calcoliamo


gS =

fi

hS =

iS

fi .

i6S


M
Scriviamo i coefficienti di gS e hS modulo M in M
2 , 2 .

Se f = gS hS abbiamo trovato una fattorizzazione. Se, per ogni S, fS 6= gS hS allora f `e


irriducibile.

3.5

Esercizi

1. Provare che x4 + x + 1 F2 [x] `e irriducibile.


2. Fattorizzare x7 + 1 F2 [x] e x4 + x + 1 F3 [x].
3. Sia f = x4 + 5x3 + 6x2 x 1 e g = x2 + 1, h = x2 + 2x + 2. Allora g mod 3 e h mod 3
sono irriducibili (in F3 [x]) e f = gh mod 3. Siano gk , hk i polinomi ottenuti mediante il
sollevamento di Hensel. (Quindi f = gk hk mod 3k .)
(a) Calcolare gk , hk per k = 2, 3.
(b) Provare che gk = x2 + 3x + 1 e hk = x2 + 2x + 3k 1 per k 2.

(c) E dato che i coefficienti di un fattore di f sono 48 in valore assoluto. Fattorizzare


f.

4. Sia f = x5 +2x3 +2x2 +x+1. Fattorizzare f mod 3, e provare che f Q[x] `e irriducibile.
5. In questo esercizio proviamo che f = x4 + 1 Q[x] `e irriducibile, ma che f mod p
fattorizza per ogni primo p.
(a) Fattorizzare f mod 2 (suggerimento: `e facile trovare una radice di f ).
(b) Sia p un primo dispari. Sia V lo spazio dei v Fp [x]/hf i tali che v p = v mod f .
Calcolare una base di V , trattando i casi p = 1 + 4k, k pari e dispari e p = 3 + 4k,
k pari e dispari separatemente. Concludere che f mod p fattorizza per ogni primo
p.
(c) Fattorizzare f mod 5.
(d) Mediante il sollevamento di Hensel trovare g, h Z[x] con f = gh mod 125.

(e) Trovare un limite sui coefficienti di un possibile divisore di f in Z[x] (LandauMignotte). Provare che f `e irriducibile.

58

Fattorizzazione di polinomi