• Aucun résultat trouvé

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

t0

4s

t

et LM(p

t0

)≺LM(p

t

),

∃h

1

, . . . , h

k

polynˆomes tels que p

r

=P

k

i=1

h

i

p

i

avec LM(h

i

p

i

)4LM(p

t0

) et LM(h

i

)s

i

4s

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

r

dans 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

i

s

i

, LC(g

j

)u

i

g

i

−LC(g

i

)u

j

g

j

] =o

G

(u

i

r

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

k

idonn´e. L’id´ee est de calculer r´ecursivement

une base de Gr¨obner de I

i

= hf

1

, . . . , f

i

i = 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

r

ait

une signature admissible set que l’´ecriture donn´ee par la r´eductionP oly(S(r

1

, r

2

)) =P

h

i

g

i

+p

r

garantisse que S(r

1

, r

2

) = o

G∪{[s,pr]}

(u

1

r

1

). Pour cela, on n’autorise que les r´eductions par des

polynˆomes ´etiquet´es ayant des signatures strictement inf´erieures `a u

1

Sgn(r

1

) ; la signature s du

reste p

r

est alors naturellement u

1

Sgn(r

1

) et le polynˆome ´etiquet´e t

0

intervenant dans la notation

o

G∪{[s,pr]}

(u

1

r

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

0

dans

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

0

ne 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

i

de

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

0

et un monˆome u

0

tel que

uSgn(r) =u

0

Sgn(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+1

i connaissant une base de Gr¨obner de hf

1

, . . . , f

i

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

k

i ⊂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

nouv

6= 0 alorsGB ← F5Increment(GB, f

nouv

/ LC(f

nouv

));

5.

siGB ={1} alors retournerGB;

Algorithme 10:F5Increment

Entr´ees:G

prec

une 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

prec

faire

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

2

polynˆomes ´etiquet´es, G

prec

une 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

1

Sgn(r

1

)6= 0 et ∃g∈G

prec

tq LM(g)|u

1

Sgn(r

1

) alors retourner∅; // crit`ere F5

4.

si u

2

Sgn(r

2

)6= 0 et ∃g∈G

prec

tq LM(g)|u

2

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

1

Sgn(r

1

)≺u

2

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

sel

liste 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

sel

faire

3.

si¬SeReecrit (u

1

, r

1

, Regles) et¬SeReecrit (u

2

, r

2

, Regles)alors

4.

r←[u

1

Sgn(r

1

), u

1

P oly(r

1

)−u

2

P 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

prec

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

xyzt

de 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

2

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

2

et r

1

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

3

i, en appellant F5Increment avec

G

prec

={f

1

, f

5

}etf

nouv

=f

6

=f

3

Gprec

=yz

2

+z

2

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

3

etr

1

est rejet´ee par le crit`ere F5

(non normalis´ee). La paire critique der

3

etr

2

est conserv´ee :p

1

= (y

2

z

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

1

passe le crit`ere de r´e´ecriture (car y.r

3

ne se r´e´ecrit qu’avec

r

3

), on calcule donc son S-polynˆome r

4

= [y,−yz

2

t−y

2

t

2

−z

2

t

2

−yt

3

] et on rajoute la

r`egle (y, r

4

). La r´eduction de r

4

par 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

4

i, en appellant F5Increment

avec G

prec

= {f

1

, f

5

, f

6

} et f

nouv

= f

7

= f

4Gprec

= yzt

2

+z

2

t

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

4

et r

1

est

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

2

zt

2

, y,[1, f

7

], zt

2

,[0, f

5

]) et p

6

= (yz

2

t

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

3

t

2

−yzt

3

+yt

4

−zt

4

+t

5

−z]etr

6

= [y, yz

2

t

2

−y

2

t

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

5

avec

r

1

et r

2

sont rejet´ees par le crit`ere F5. La paire de r

5

avec r

3

est (yz

2

t

2

, y, r

5

, zt

2

, r

3

),

et le produit y·r

5

peut 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

5

avec r

4

. Les paires de r

6

avec r

1

, r

2

,

r

3

et r

5

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 = {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

2

t

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

7

avec 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

8

par z

3

t

2

+z

2

t

3

−z−t et

f

10

par z

2

t

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)

2

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