F5 (алгоритм)

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм F5 вычисления базиса Грёбнера был предложен Ж.-Ш. Фожером в 2002 году. В данной работе рассмотрим его матричную версию, работающую для однородных многочленов. Основная процедура этого алгоритма вычисляет d-базис Грёбнера, то есть, подмножество базиса Грёбнера, относительно которого редуцируются к нулю все многочлены из идеала степени не выше, чем d.

В алгоритме F5 каждому полученному многочлену сопоставляется сигнатура (пара из монома и номера образующей), кодирующая информацию о происхождении этого многочлена. Основная идея - не включать по возможности в матрицы те строки, которые заведомо будут линейно зависимы с остальными (то есть, будут редуцироваться к нулю.)

Для этого редукции ограничиваются такими, которые не изменяют сигнатуру элементов, а также среди очередных обрабатываемых многочленов рассматриваются лишь те, моном сигнатуры которых не делится ни на один старший моном уже найденных элементов базиса.

Псевдокод матричного алгоритма F5

Вход: однородные многочлены f1,,fm со степенями d1dm; максимальная степень D.

Выход: элементы степени не выше D приведенного базиса Грёбнера из f1,,fi для i=1,m.

Алгоритм:

for i from 1 to n do Gᵢ := 0; end for // initialise the Gröbner Bases Gᵢ of (f, …, fᵢ).
for d₁ from d to D do
    _{d,0} := 0, ℳ̅_{d,0} := 0
    for i from 1 to m do
        if d < dᵢ then _{d,i} := _{d,i-1}
        else if d = dᵢ then
           _{d,i} := add the new row fᵢ to ℳ̅_{dᵢ,i-1} with index (i,1)
        else
           _{d,i} := ℳ̅_{d,i-1}
           Crit := LT(ℳ̅_{d-dᵢ,i-1})
           for f in Rows(_{d-1,i}) \ Rows(_{d-1,i-1}) do
               (i,u) := index(f), with u = x_{j₁}, , x_{jd-dᵢ-1},
                                  and 1  j₁    j_{d-dᵢ-1}  n
               for j from j_{d-dᵢ-1} to n do
                   if uxⱼ  Crit then
                       add the new row xⱼf with index (i,uxⱼ) in _{d,i}
                   end if
               end for
           end for
        end if
        Compute ℳ̅_{d,i} by Gaussian elimination from _{d,i}
        Add to Gᵢ all rows of ℳ̅_{d,i} not reducible by LT(Gᵢ)
    end for
end for
return [Gᵢ|i = 1, , m]

Цикл for в строке 14 строит матрицу Md,i, содержащую все многочлены x1α1xnαnfi с α1++αn=ddi (кроме тех, которые тривиально сводятся к нулю). Чтобы избежать избыточных вычислений, они строятся из строк предыдущей матрицы Md1,i, то есть все строки умножаются на все переменные. Строка с индексом (i,x1α1xjαj) с αj0 может возникать из нескольких строк в Md1,i, мы можем построить его из строки, проиндексированной (i,u) в Md1,i, с u=x1α1xjαj1, и умножить ее на xj, наибольшую переменную, встречающуюся в u. Это гарантирует, что каждая строка берется ровно из одной строки предыдущей матрицы.

Пример работы алгоритма F5

Рассмотрим однородную систему в 𝔽23[x,y,z] с градуированным обратным лексографическим порядком (xyz) по матричному алгоритму F5.

{f3=x2+18xy+19y2+8xz+5yz+7z2f2=3x2+7xy+22xz+11yz+22z2+8y2f1=6x2+12xy+4y2+14xz+9yz+7z2

Чтобы вычислить базис Грёбнера f1,f2,f3 мы задаем F1=(e1,f1), F2=(e2,f2) и F3=(e3,f3) и рассматриваем критические пары [F1,F2]=(1,f1,1,f2),[F1,F3]=(1,f1,1,f3) и [F2,F3]=(1,f2,1,f3). Как и в алгоритме 𝔽4 мы используем часть 1xf1,1xf2,1xf3 для построения матрицы степени 2, чтобы свести эти три критические пары вместе:

A2=f3f2f1(x2xyy2xzyzz21181985737822112261241497)

и после приведения матрицы A2 к треугольному виду:

B2=f3f2_f1(x2xyy2xzyzz2118_1985701324100_11135)

и появляются два "новых" многочлена: f4=xy+4yz+2xz+3y2z2 (F4=(e2,f4)) и f5=y211xz3yz5z2 (F5=(e3,f5)), которые являются результатом понижения критических пар [F1,F2],[F1,F3] и [F2,F3]. Обратите внимание, что сигнатура полинома f4 равна e2, что соответствует метке слева от этой строки (подчеркнуто f2 в матрице B2).

Также отметим, что подчеркнутая цифра 18 не уменьшается на f4, так как подпись f3 равна e3, которая меньше e2. В то время как подчеркнутый 0 уменьшается, так как e1e2. Это доказывает, что редукция в алгоритме 𝔽5 является односторонней редукцией.

Следующим шагом является рассмотрение новых критических пар: [F1,F4]=(y,f1,x,f4),[F4,F2]=(x,f4,y,f2),[F4,F3]=(x,f4,y,f3),[F5,F4]=(x,f5,y,f4),[F5,F1]=(x2,f5,y2,f1),[F5,F2]=(x2,f5,y2,f2) и [F5,F3]=(x2,f5,y2,f3). Мы выбираем пары по степени и строим матрицу A3 степени 3 для работы со следующими критическими парами [F1,F4]=(y,f1,x,f4),[F4,F2]=(x,f4,y,f2),[F4,F3]=(x,f4,y,f3),[F5,F4]=(x,f5,y,f4) вместе. Нам нужно только рассмотреть части yf3,yf4,xf4,xf5, c частями yf2,yf1, которые являются перезаписываемыми F4 и F5 соответственно.

Как и алгоритм 𝔽5, части yf3,yf4,xf4,xf5 - это те строки, которые должны быть уменьшены в Матрице, и нам также нужно выбрать части, которые используются для уменьшения этих строк. Так как y3,x2z,xyz,y2z являются частями yf3,yf4,xf4,xf5, мы должны добавить части yf5,xf3,zf4,zf5 в матрицу A3, чтобы устранить их.

Теперь у нас есть матрица A3 со степенью 3 (упорядоченная по сигнатуре):

A3=zf3(ze3)yf3(ye3)zf4(ze2)yf4(ye2)xf4(xe2)zf5(ze1)yf5(ye1)xf5(xe1)(x2yxy2y3x2zxyzy2zxz2yz2z30001181985711819085070000013242201302402201302402200000001122018001012200180010122001800)

и после приведения к треугольному виду:

B3=yf3(ye3)yf4(ye2)xf4_(xe2)zf3(ze3)zf4(ze2)zf5(ze1)yf5_(ye1)xf5_(xe1)(x2yxy2y3x2zxyzy2zxz2yz2z311819085070013024022000𝟏0_0_8_1_18_15000118198570000132422000001122018000000𝟏11130000000𝟏18)

и полином f6=y3+8y2+xz2+18yz2+15z3(F6=(xe2,f6)),f7=xz2+11yz2+13z2(F3=(ye1,f7)) и f8=yz2+18z3(F8=(xe1,f8) являются результатами редукции критических пар со степенью 3. Обратите внимание, что хотя lpp(f6)=y3=ylpp(f5), помеченный полином F6 не является 𝔽5 - приводимым к F5 . Таким образом, f6 все еще является "новым" многочленом.

Теперь смысл написанного критерия гораздо яснее. При построении матрицы A3, мы перечислим сигнатуры каждой строки (полинома) в круглых скобках. Помеченные многочлены с одинаковыми сигнатурами будут появляться в одной и той же строке матрицы, поэтому достаточно иметь дело с последними результатами (вот почему мы думаем о порядке создания помеченных многочленов). Также одностороннее сокращение очевидно в матрице B3. Давайте посмотрим на строку xf4(xe2). Подчеркнутые 0, 0 уменьшаются на строчках zf3(ze3) и zf4(ze2) соответственно, а подчеркнутые 8,1,18 не исключены в строках zf5(ze1),yf5(ye1) и xf5(xe1). причина заключается в том, что редукция в алгоритме 𝔽5 это односторонняя редукция. Более конкретно, сигнатуры строк zf3(ze3) и zf4(ze2) это ze3 и ze2, которые оба меньше xe2 строчки xf4(xe2).

Таким образом, строки zf3(ze3) и zf4(ze2) способны уменьшить строку xf4(xe2). Тем не менее, у нас есть ze1,ye1,xe1xe2, так строки zf5(ze1),yf5(ye1) и xf5(xe1) не сократить строки xf4(xe2). Заметим, что поскольку только строки xf4(xe2),yf5(ye1) и xf5(xe1) требуют сохранения, другие строки не полностью уменьшаются в матрице B3.

Однако мы должны понимать, что, хотя два новых критерия алгоритма 𝔽5 могут отбросить почти все бесполезные вычисления, одностороннее сокращение приводит к более низкой эффективности устранения матрицы, чем алгоритм 𝔽4.

Литература

  • J.-C. Faug`ere.A new efficient algorithm for computing Grobner bases without reduction to zero (F5).
  • M. Bardet, J.-C. Faug`ere, B. Salvy.On the Complexity of the F5 Grobner basis Algorithm.
  • C. Eder, J.-C. Faug`ere.A survey on signature-based Grobner basis computations.
  • Stegers, T., 2005. Faug`ere’s F5 Algorithm Revisited. Thesis for the degree of Diplom-Mathematiker