2.4 Algorithme F5
2.4.2 Description de l’algorithme
etiquet´es. Alors r =o
G(t) s’il existe un polynˆome ´etiquet´et
0= [s
t0, p
t0] tel que
(
s
t04s
tet LM(p
t0)≺LM(p
t),
∃h
1, . . . , h
kpolynˆomes tels que p
r=P
ki=1
h
ip
iavec LM(h
ip
i)4LM(p
t0) et LM(h
i)s
i4s
r.
La deuxi`eme condition montre que si r = o
G(t), alors p
r= o
P oly(G)(LM(p
t)). La principale
diff´erence concerne les signatures : on demande que dans l’´ecriture de p
rdans la base G, on
n’in-troduise pas de signatures plus grandes que celle der.
Th´eor`eme 2.4.4 ([Fau02, Th 1]). Soient I ⊂ K[X
1, . . . , X
n] id´eal, f ∈ K[X
1, . . . , X
n], et G =
{r
1, . . . , r
k} une famille de polynˆomes ´etiquet´es admissibles (r
i= [s
i, g
i]) telle que
1. [1, f]∈G,
2. il existe s < k tel que {g
1, . . . , g
s} est une base de Gr¨obner de I et s
1=. . .=s
s= 0,
3. ∀i, j, 1≤i, j≤k tels que CP(r
i, r
j) normalis´ee, on a
S(r
i, r
j) := [u
is
i, LC(g
j)u
ig
i−LC(g
i)u
jg
j] =o
G(u
ir
i) o`uu
i,j= LM(g
i)∨LM(g
j)
LM(g
i,j) .
Alors {g
1, . . . , g
k} est une base de Gr¨obner de I+ (f).
On remarque que la condition donn´ee en3.implique queS(g
i, g
j) =o
P oly(G)(LM(g
i)∨LM(g
j)),
qui est pr´ecis´ement celle donn´ee dans le th´eor`eme 2.1.5. On doit donc v´erifier ici une propri´et´e plus
forte sur les S-polynˆomes, cependant cette propri´et´e doit ˆetre v´erifi´ee sur moins de paires (toutes
les paires non normalis´ees ´etant automatiquement rejet´ees).
2.4.2 Description de l’algorithme
Comme pour Buchberger, on peut d´eduire du th´eor`eme 2.4.4 un algorithme permettant de
calculer une base de Gr¨obner d’un id´ealI =hf
1, . . . , f
kidonn´e. L’id´ee est de calculer r´ecursivement
une base de Gr¨obner de I
i= hf
1, . . . , f
ii = I
i−1+ (f
i) pour i = 2, . . . , k, en ne consid´erant que
des paires normalis´ees. La principale diff´erence avec l’algorithme de Buchberger est que lors de
la r´eduction d’une paire critique CP(r
1, r
2) par la base courante G, on veut que le reste p
rait
une signature admissible set que l’´ecriture donn´ee par la r´eductionP oly(S(r
1, r
2)) =P
h
ig
i+p
rgarantisse que S(r
1, r
2) = o
G∪{[s,pr]}(u
1r
1). Pour cela, on n’autorise que les r´eductions par des
polynˆomes ´etiquet´es ayant des signatures strictement inf´erieures `a u
1Sgn(r
1) ; la signature s du
reste p
rest alors naturellement u
1Sgn(r
1) et le polynˆome ´etiquet´e t
0intervenant dans la notation
o
G∪{[s,pr]}(u
1r
1) pr´ec´edente est exactement S(r
1, r
2).
L’algorithme pr´esent´e dans cette section comporte un certain nombre d’optimisations par
rap-port au squelette ci-dessus. Premi`erement, comme dans l’algorithme F4, on traite plusieurs paires
critiques `a chaque ´etape selon une strat´egie de s´electionSel. Deuxi`emement, lors de la phase de
r´eduction des tˆetes des S-polynˆomes (top-r´eductions), il se peut qu’un polynˆome ´etiquet´e r
0dans
la base courante ait un terme de tˆete qui divise le terme de tˆete d’un S-polynˆome r, mais que la
r´eduction der parr
0ne soit pas autoris´ee parce queuSgn(r
0)Sgn(r) (o`uu=LM(r)/ LM(r
0)).
Dans ce cas, on introduit sans attendre la paire critique de r et de r
0, dont leS-polynˆome a pour
signature uSgn(r
0). Ainsi, la proc´edure Reduction peut retourner plus de polynˆomes qu’elle n’en
avait en entr´ee. Enfin, on introduit un deuxi`eme crit`ere bas´e sur des “r`egles de r´e´ecriture”, dont
l’id´ee est d’´eviter de consid´erer plusieurs polynˆomes ayant les mˆemes signatures ; si l’on reprend
l’analogie avec la matrice de Macaulay, cela reviendrait `a ins´erer plusieurs fois la ligne mf
ide
signaturem. Pour cela, on maintient un tableau de “r`egles” indiquant, pour chaque signature d´ej`a
rencontr´ee, le polynˆome ´etiquet´e correspondant ; `a chaque fois que l’on doit faire un produit ur,
on teste s’il n’existe pas un polynˆome plus r´ecent (donc plus r´eduit) r
0et un monˆome u
0tel que
uSgn(r) =u
0Sgn(r
0). Par souci de clart´e, certaines parties du pseudo-code ont ´et´e fusionn´ees par
rapport `a celui donn´e dans [EP10] et [Fau02] : ainsi,ReductionetSeReecritregroupent toutes les
sous-proc´edures ayant trait `a la r´eduction des polynˆomes et au crit`ere de r´e´ecriture respectivement.
Le cœur de l’algorithme est la proc´edureF5Increment, qui calcule une base de Gr¨obner r´eduite
de l’id´eal hf
1, . . . , f
i+1i connaissant une base de Gr¨obner de hf
1, . . . , f
ii. Tous les polynˆomes ´
eti-quet´es intervenants sont stock´es dans une liste globale Liste, et la liste G contient les num´eros
dans Liste des ´el´ements de la base courante. `A l’initialisation, la signature 0 est attribu´ee `a tous
les polynˆomes de l’ancienne base de Gr¨obner G
prec, tandis que le nouveau g´en´erateur re¸coit la
signature 1. La proc´edure PaireCrit utilise le crit`ere F5 pour v´erifier que la paire critique de
deux polynˆomes ´etiquet´es est bien normalis´ee ; le crit`ere de r´e´ecriture ajout´e en ligne 5 n’est pas
strictement n´ecessaire puisqu’il sera retest´e dans CalculSpol ensuite (avec ´eventuellement plus
de r`egles), mais permet de diminuer la liste CP des paires en attente de traitement. Le rˆole de
CalculSpolest principalement de tester ce crit`ere de r´e´ecriture et de cr´eer les nouveaux polynˆomes
´
etiquet´es, en mettant `a jour au passage la liste des r`egles. Enfin, la proc´edureReductionr´eduit les
S-polynˆomes par rapport `a la base courante tout en respectant les crit`eres de signatures.
Algorithme 9: Algorithme F5
Entr´ees:I =hf
1, . . . , f
ki ⊂K[X
1, . . . , X
n]
Sortie :GB base de Gr¨obner minimale deI
1.
GB← {f
1};
2.
pouri= 2 `a k faire
3.
f
nouv←f
iGB;
4.
sif
nouv6= 0 alorsGB ← F5Increment(GB, f
nouv/ LC(f
nouv));
5.
siGB ={1} alors retournerGB;
Algorithme 10:F5Increment
Entr´ees:G
precune base de Gr¨obner,f ∈K[X
1, . . . , X
n]
Sortie :GB base de Gr¨obner minimale deG
prec+ (f)
1.
Liste←[ ] ; CP← ∅;Regles←[ ];
2.
pour tout g∈G
precfaire
3.
CP←CP∪PaireCrit ([0, g],[1, f], G
prec, Regles);
4.
Apposer(Liste,[0, g]);
5.
Apposer(Liste,[1, f]) ; Apposer(Regles,(1,#G
prec+ 1)) ;G←[1, . . . ,#G
prec+ 1];
// Boucle principale
6.
tant que CP6=∅faire
7.
CP
sel←Sel(CP) ; CP←CP\CP
sel;
8.
F ←CalculSpol (CP
sel, Regles);
9.
N ouveaux←Reduction (F, G, G
prec, Regles);
10.
pour toutr ∈N ouveauxfaire
11.
pouri= 1 `a #Gfaire CP←CP∪ PaireCrit (Liste[G[i]], r, G
prec, Regles);
12.
G←G∪ {Indice
Liste(r)};
13.GB ← {P oly(Liste[k]) :k∈G};
14.GB ←Minimalisation(GB);
15.GB ←InterReduction(GB);
16.retourner GB;
Algorithme 11:PaireCrit
Entr´ees:r
1, r
2polynˆomes ´etiquet´es, G
precune base de Gr¨obner,
Sortie : ensemble de paire soit vide soit r´eduit `a un singleton
1.
lcm←LM(r
1)∨LM(r
2);
2.
u
1←lcm/ LM(r
1) ;u
2←lcm/ LM(r
2);
3.
si u
1Sgn(r
1)6= 0 et ∃g∈G
prectq LM(g)|u
1Sgn(r
1) alors retourner∅; // crit`ere F5
4.
si u
2Sgn(r
2)6= 0 et ∃g∈G
prectq LM(g)|u
2Sgn(r
2) alors retourner∅; // crit`ere F5
5.
si SeReecrit (u
1, r
1, Regles) ou SeReecrit (u
2, r
2, Regles)alors retourner∅;
6.
si u
1Sgn(r
1)≺u
2Sgn(r
2) alors retourner{(lcm, u
2, r
2, u
1, r
1)};
7.
sinon retourner{(lcm, u
1, r
1, u
2, r
2)};
Algorithme 12:CalculSpol
Entr´ees: CP
selliste de paire critiques,Regles
Sortie :F liste de polynˆomes ´etiquet´es
1.
F ← ∅;
2.
pour tout paire= (lcm, u
1, r
1, u
2, r
2)∈CP
selfaire
3.
si¬SeReecrit (u
1, r
1, Regles) et¬SeReecrit (u
2, r
2, Regles)alors
4.
r←[u
1Sgn(r
1), u
1P oly(r
1)−u
2P oly(r
2)];
5.
Apposer(Liste, r);
6.
Apposer(Regles,(Sgn(r),Indice
Liste(r)));
7.
F ←F∪r;
8.
Trier F par signature croissante;
Algorithme 13:Reduction
Entr´ees:F liste de polynˆomes ´etiquet´es tri´es par signature croissante,Gles num´eros dans
liste des ´el´ements de la base courante,G
prec,Regles
Sortie :Done une liste de polynˆomes ´etiquet´es (tri´es par signature croissante)
1.
Done←[ ] ;Red←G (r´educteurs potentiels);
2.
tant queF 6= [ ] faire
3.
r← ´el´ement minimal deF;F ←F\ {r};
4.
P oly(r)←P oly(r)
Gprec;
5.
pouri= 1 `a #Redfaire
6.
siP oly(r) = 0 alorsListe[Indice
Liste(r)]←r;break; // r´eduction `a z´ero
7.
r
0←Liste[Red[i]];
8.
siLM(r
0)-LM(r) alors continue;
9.
u←LM(r)/ LM(r
0);
10.
siSgn(r
0)6= 0 et ∃g∈G
prectqLM(g)|uSgn(r
0) alors continue; // crit`ere F5
11.
siSeReecrit (u, r
0, Regles) alors continue;
// Top-R´eduction
12.
siuSgn(r
0)≺Sgn(r)alors
13.
P oly(r)←P oly(r)−LC(r)uP oly(r
0);
14.
i←0;
15.
sinon
16.
r
00←[uSgn(r
0), P oly(r)−LC(r)uP oly(r
0)];
17.
Apposer(Liste, r
00);
18.
Apposer(Regles,(Sgn(r
00),Indice
Liste(r
00)));
19.
Apposer(F, r
00) ; Trier F;
20.
siP oly(r)6= 0alors
21.
P oly(r)←P oly(r)/ LC(r) ;Liste[Indice
Liste(r)]←r;
22.
Done←Done∪ {r};
23.
Red←Red∪ {Indice
Liste(r)};
24.
retournerDone;
Algorithme 14:SeReecrit
Entr´ees:u monˆome,r polynˆome ´etiquet´e, Reglesune liste de couples (monˆome, num´ero)
Dessert: vrai ou faux
1.
siSgn(r) = 0 alors retournerfaux;
2.
pour(m, num)∈Regles en partant de la fin faire
3.
sim|uSgn(r)alors
4.
sinum= Indice
Liste(r) alors retournerfaux;
5.
sinon
6.
retourner vrai;
Exemple 2.4.5. On reprend le calcul de la base de Gr¨obner pour l’ordre grevlex
xyztde l’id´eal
engendr´e par les polynˆomes
Cyclic
4:
f
1=x+y+z+t
f
2=xy+yz+zt+tx
f
3=xyz+yzt+ztx+txy
f
4=xyzt−1
d´ej`a pr´esent´e en exemple 2.1.8.
1. On commence par calculer la base de Gr¨obner de I
2= hf
1, f
2i. On appelle F5Increment
avec G
prec= {f
1} et f
nouv= f
5= f
2 {f1}= y
2+ 2yt+t
2, et on pose r
1= [0, f
1] et r
2=
[1, f
5]. La paire critique der
2et r
1est(xy
2, x,[1, f
5], y
2,[0, f
1]) qui n’est pas normalis´ee car
x.1 ∈ LT(G
prec). On a donc G = {r
1, r
2} et CP = ∅; F5Increment termine et retourne
GB ={f
1, f
5}.
2. On calcule ensuite la base de Gr¨obner de I
3= hf
1, f
2, f
3i, en appellant F5Increment avec
G
prec={f
1, f
5}etf
nouv=f
6=f
3Gprec
=yz
2+z
2t−yt
2−t
3. On poser
1= [0, f
1],r
2= [0, f
5]
etr
3= [1, f
6]. Comme pr´ec´edemment, la paire critique der
3etr
1est rejet´ee par le crit`ere F5
(non normalis´ee). La paire critique der
3etr
2est conserv´ee :p
1= (y
2z
2, y,[1, f
6], z
2,[0, f
5]).
On a donc G={r
1, r
2, r
3}, CP ={p
1}, Regles= [(1, r
3)].
• CP
sel= {p
1}. La paire p
1passe le crit`ere de r´e´ecriture (car y.r
3ne se r´e´ecrit qu’avec
r
3), on calcule donc son S-polynˆome r
4= [y,−yz
2t−y
2t
2−z
2t
2−yt
3] et on rajoute la
r`egle (y, r
4). La r´eduction de r
4par G donne 0, aucun ´el´ement n’est ajout´e `a G. On a
donc G={r
1, r
2, r
3}, CP =∅, Regles= [(1, r
3),(y, r
4)]. Comme il n’y a plus de paires
en attente,F5Increment termine et retourne GB ={f
1, f
5, f
6}.
3. On calcule ensuite la base de Gr¨obner de I
4= hf
1, f
2, f
3, f
4i, en appellant F5Increment
avec G
prec= {f
1, f
5, f
6} et f
nouv= f
7= f
4Gprec= yzt
2+z
2t
2−yt
3+zt
3−t
4−1. On
pose r
1= [0, f
1], r
2= [0, f
5], r
3= [0, f
6] et r
4= [1, f
7]. La paire critique de r
4et r
1est
rejet´ee par le crit`ere F5, et on a G = {r
1, r
2, r
3, r
4}, CP = {p
1, p
2}, Regles = [(1, r
4)] o`u
p
1= (y
2zt
2, y,[1, f
7], zt
2,[0, f
5]) et p
6= (yz
2t
2, z,[1, f
7], t
2,[0, f
6]).
• CP
sel= {p
1, p
2}. Les deux paires passent le crit`ere de r´e´ecriture, on calcule leurs
S-polynˆomesr
5= [z, z
3t
2−yzt
3+yt
4−zt
4+t
5−z]etr
6= [y, yz
2t
2−y
2t
3−yzt
3−yt
4−zt
4−y],
et on rajoute deux nouvelles r`egles(z, r
5)et(y, r
6). La proc´edure de r´eduction ne modifie
pasr
5= [z, f
8](il serait en fait possible de r´eduire la queue de r
5, voir section 2.4.4) et
donne comme nouvelle valeur `a r
6[y, f
9]o`uf
9=yt
4+t
5−y−t]. Les paires der
5avec
r
1et r
2sont rejet´ees par le crit`ere F5. La paire de r
5avec r
3est (yz
2t
2, y, r
5, zt
2, r
3),
et le produit y·r
5peut se r´e´ecrire avec la r`egle (y, r
6) : cette paire est donc rejet´ee par
le crit`ere de r´e´ecriture, de mˆeme que celle de r
5avec r
4. Les paires de r
6avec r
1, r
2,
r
3et r
5sont rejet´ees par le crit`ere F5, et on a G = {r
1, r
2, r
3, r
4, r
5, r
6}, CP = {p
3},
Regles= [(1, r
4),(z, r
5),(y, r
6)] o`u p
3= (yzt
4, z,[y, f
9], t
2,[1, f
7]).
• CP
sel= {p
3}. La paire passe le crit`ere de r´e´ecriture, on calcule son S-polynˆome r
7=
[yz, z
2t
4−yt
5−t
6+yz+zt−t
2]et on rajoute la r`egle(yz, r
7). La proc´edure de r´eduction
ne modifie pas r
7= [z, f
10], mˆeme s’il serait encore possible de r´eduire sa queue. Les
paires de r
7avec tous les ´el´ements de G sont rejet´ees par le crit`ere F5, et on a G =
{r
1, r
2, r
3, r
4, r
5, r
6}, CP = ∅, Regles= [(1, r
4),(z, r
5),(y, r
6),(yz, r
7)]. Comme il n’y a
plus de paires en attente, F5Increment termine et retourne la r´eduction de la base de
Gr¨obner {f
1, f
5, f
6, f
7, f
8, f
9, f
10}, obtenue en rempla¸cant f
8par z
3t
2+z
2t
3−z−t et
f
10par z
2t
4+yz−yt+zt−2t
2.
Sur cet exemple, on a ´elimin´e au total 17 paires inutiles, et il ne reste plus qu’une seule r´eduction
`
a z´ero (`a la place de 5 pour l’algorithme de Buchberger avec crit`eres). `A ce propos, on remarque
que f
5= (y+t)
2et quef
6= (y+t)(z
2−t
2), en particulier (y+t)f
6∈I
2; la suite {f
1, f
2, f
3, f
4}
n’est donc pas r´eguli`ere (ni semi-r´eguli`ere, voir ci-dessous).
Dans le document
Attaques algébriques du problème du logarithme discret sur courbes elliptiques
(Page 55-60)