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

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

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

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

Вход: однородные многочлены   со степенями   максимальная степень  .

Выход: элементы степени не выше   приведенного базиса Грёбнера из   для  .

Алгоритм:

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 строит матрицу  , содержащую все многочлены   с   (кроме тех, которые тривиально сводятся к нулю). Чтобы избежать избыточных вычислений, они строятся из строк предыдущей матрицы  , то есть все строки умножаются на все переменные. Строка с индексом   с   может возникать из нескольких строк в  , мы можем построить его из строки, проиндексированной   в  , с  , и умножить ее на  , наибольшую переменную, встречающуюся в  . Это гарантирует, что каждая строка берется ровно из одной строки предыдущей матрицы.

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

Рассмотрим однородную систему в   с градуированным обратным лексографическим порядком   по матричному алгоритму  .

 

Чтобы вычислить базис Грёбнера   мы задаем  ,   и   и рассматриваем критические пары   и  . Как и в алгоритме   мы используем часть   для построения матрицы степени 2, чтобы свести эти три критические пары вместе:

 

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

 

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

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

Следующим шагом является рассмотрение новых критических пар:   и  . Мы выбираем пары по степени и строим матрицу   степени 3 для работы со следующими критическими парами   вместе. Нам нужно только рассмотреть части  , c частями  , которые являются перезаписываемыми   и   соответственно.

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

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

 

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

 

и полином   и   являются результатами редукции критических пар со степенью 3. Обратите внимание, что хотя  , помеченный полином   не является   - приводимым к   . Таким образом,   все еще является "новым" многочленом.

Теперь смысл написанного критерия гораздо яснее. При построении матрицы  , мы перечислим сигнатуры каждой строки (полинома) в круглых скобках. Помеченные многочлены с одинаковыми сигнатурами будут появляться в одной и той же строке матрицы, поэтому достаточно иметь дело с последними результатами (вот почему мы думаем о порядке создания помеченных многочленов). Также одностороннее сокращение очевидно в матрице  . Давайте посмотрим на строку  . Подчеркнутые 0, 0 уменьшаются на строчках   и   соответственно, а подчеркнутые 8,1,18 не исключены в строках   и  . причина заключается в том, что редукция в алгоритме   это односторонняя редукция. Более конкретно, сигнатуры строк   и   это   и  , которые оба меньше   строчки  .

Таким образом, строки   и   способны уменьшить строку  . Тем не менее, у нас есть  , так строки   и   не сократить строки  . Заметим, что поскольку только строки   и   требуют сохранения, другие строки не полностью уменьшаются в матрице  .

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

Литература править

  • 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