F5 (algoritm)

Algoritmul F5 pentru calcularea bazei Gröbner a fost propus de J.-Ch. Foger în 2002. În această lucrare, vom lua în considerare versiunea sa matriceală, care funcționează pentru polinoame omogene . Procedura principală a acestui algoritm calculează baza Gröbner d, adică submulțimea bazei Gröbner în raport cu care toate polinoamele de la un ideal de grad de cel mult d sunt reduse la zero.

În algoritmul F5, fiecare polinom rezultat este asociat cu o semnătură (o pereche de monom și un număr generator) care codifică informații despre originea acestui polinom. Ideea principală este de a nu include, dacă este posibil, în matrice acele rânduri care vor fi evident dependente liniar de restul (adică vor fi reduse la zero.)

Pentru a face acest lucru, reducerile sunt limitate la cele care nu modifică semnătura elementelor, iar printre următoarele polinoame care se procesează, sunt considerate doar cele a căror monom de semnătură nu este divizibil cu niciunul dintre cel mai înalt monom al elementelor deja găsite ale bazei. .

Pseudocod al algoritmului matriceal F5

Intrare: polinoame omogene cu puteri gradul maxim .

Ieșire: elemente de grad nu mai mari decât baza Gröbner redusă din pentru .

Algoritm:

pentru i de la 1 la n do Gᵢ := 0 ; sfârșit pentru // inițializează bazele Gröbner Gᵢ din (f, …, fᵢ). pentru d₁ de la d la D do _ { d , 0 } := 0 , ℳ̅ _ { d , 0 } := 0 pentru i de la 1 la m fac dacă d < dᵢ atunci_ { d , i } :=_ { d , i - 1 } altfel dacă d = dᵢ atunci _ { d , i } : = adăugați noul rând fᵢ la ℳ̅ _ { dᵢ , i - 1 } cu index ( i , 1 ) altfel _ { d , i } := ℳ̅ _ { d , i - 1 } Crit := LT ( ℳ̅ _ { d - dᵢ , i - 1 }) pentru f în Rânduri (_ { d - 1 , i }) \ Rânduri (_ { d - 1 , i - 1 }) nu ( i , u ) := index ( f ) , cu u = x_ { j₁ } ,, x_ { jd - dᵢ - 1 } , și 1j₁ ≤ … ≤ j_ { d - dᵢ - 1 }n pentru j de la j_ { d - dᵢ - 1 } la n do dacă uxⱼCrit atunci adăugați noul rând xⱼf cu indicele ( i , uxⱼ ) în_ { d , i } _ sfârşitul dacă sfârşitul pentru sfârşitul pentru sfârşitul dacă Calculați ℳ̅ _ { d , i } prin eliminarea gaussiană din_ { d , i } Adăugați la Gᵢ toate rândurile de ℳ̅ _ { d , i } nereductibile cu LT ( Gᵢ ) _ sfârşitul pentru sfârşitul pentru întoarcere [ Gᵢ | i = 1 ,, m ]

Bucla for de pe linia 14 construiește o matrice care conține toate polinoamele din c (cu excepția celor care anulează trivial). Pentru a evita calculele redundante, acestea sunt construite din rândurile matricei anterioare , adică toate rândurile sunt înmulțite cu toate variabilele. Rândul de la indexul c poate apărea din mai multe rânduri în , îl putem construi din rândul indexat la , c și îl putem înmulți cu , cea mai mare variabilă care apare în . Acest lucru asigură că fiecare rând este luat de exact un rând al matricei anterioare.

Un exemplu de algoritm F5

Se consideră un sistem omogen în ordine lexografică inversă gradată prin algoritmul matricei .

Pentru a calcula baza Gröbner , definim , și , și luăm în considerare perechile critice și . Ca și în algoritm , folosim partea matricei putere-2 pentru a aduce împreună aceste trei perechi critice:

și după aducerea matricei într-o formă triunghiulară:

si apar doua polinoame „noi”: si , care sunt rezultatul scaderii perechilor critice si . Rețineți că semnătura polinomului este , care corespunde etichetei din stânga acestui rând (subliniată în matrice ).

De asemenea, rețineți că 18 subliniat nu este redus cu , deoarece semnătura este , care este mai mică de . În timp ce 0 subliniat este decrementat din . Acest lucru demonstrează că reducerea algoritmului este o reducere unidirecțională.

Următorul pas este să luăm în considerare noi perechi critice: și . Selectăm perechi după grad și construim o matrice de gradul 3 pentru a lucra împreună cu următoarele perechi critice . Trebuie să luăm în considerare doar părți , cu părți care sunt inscriptibile și respectiv.

Ca și algoritmul , părțile sunt acele rânduri care urmează să fie reduse în Matrix și, de asemenea, trebuie să selectăm părțile care sunt utilizate pentru a reduce acele rânduri. Deoarece sunt părți , trebuie să adăugăm părți la matrice pentru a le elimina.

Avem acum o matrice cu gradul 3 (ordonată după semnătură):

iar după reducerea la o formă triunghiulară:

și polinom și sunt rezultatele reducerii perechilor critice cu gradul 3. Rețineți că, deși , polinomul etichetat nu este -reductibil la . Astfel, este încă un polinom „nou”.

Acum sensul criteriului scris este mult mai clar. La construirea matricei , enumerăm semnăturile fiecărui rând (polinom) în paranteze. Polinoamele etichetate cu aceleași semnături vor apărea în același rând al matricei, așa că este suficient să ne ocupăm de ultimele rezultate (de aceea ne gândim la ordinea în care sunt create polinoamele etichetate). De asemenea, reducerea unilaterală este evidentă în matrice . Să ne uităm la linie . 0, 0 subliniat scad pe linii și respectiv, în timp ce 8,1,18 subliniat nu sunt excluse pe linii și . motivul este că reducerea algoritmului este o reducere unidirecțională. Mai precis, semnăturile șirului și this și , care sunt ambele mai mici decât șirul .

Astfel, șirurile și sunt capabile să reducă șirul . Cu toate acestea, avem atât șiruri și nu tăiem șiruri . Rețineți că, deoarece numai rândurile și trebuie stocate, celelalte rânduri nu sunt complet reduse în matrice .

Cu toate acestea, trebuie să realizăm că, în timp ce cele două noi criterii ale algoritmului pot elimina aproape toate calculele inutile, reducerea unidirecțională are ca rezultat o eficiență mai mică de eliminare a matricei decât .

Literatură

  • J.-C. Faug`ere.Un nou algoritm eficient pentru calcularea bazelor Grobner fără reducere la zero (F5).
  • M. Bardet, J.-C. Faug`ere, B. Salvy, Despre complexitatea algoritmului F5 Grobner.
  • C. Eder, J.-C. Faug`ere. Un sondaj asupra calculelor bazate pe semnătură Grobner.
  • Stegers, T., 2005. Algoritmul F5 al lui Faug'ere revizuit. Teză pentru gradul de Diplom-Mathematiker