УДК 519.688
ОБ ОДНОМ МАТРИЧНОМ ПОДХОДЕ К ПОСТРОЕНИЮ БАЗИСОВ
ГРЕБНЕРА
© И. А. Борисов
Ключевые слова: базисы Грёбнера, матричная редукция, система компьютерной алгебры Ма^раг.
Мы рассматриваем матричный подход к построению базисов Грёбнера полиномиальных идеалов и новые структуры данных для эффективной организации вычислений в системе компьютерной алгебры МаШраг.
1 Введение
Базисы Гребнера полиномиальных идеалов имеют широкое применение. Существуют различные алгоритмы построения базисов Гребнера [1], [2]. Матричные алгоритмы и способы их распареллеливания приводятся в статьях [3], [4], [5].
В данной статье рассматриваются новые структуры данных, которые разработаны специально для матричного подхода к вычислению базисов полиномиальных идеалов.
В параграфе 2 вводятся основные определения. В параграфе 3 описывается матричный алгоритм Фужера Р4. В параграфе 4 предлагаются структуры данных для хранения полиномов, которые приспособлены для матричных алгоритмов, используемых при вычислении полиномиальных базисов. В параграфе 5 приводится пример с использованием этих структур данных.
2 Базисы Гребнера
Определение 1. Пусть Я — коммутативное кольцо. Подмножество I С Я
называется идеалом, если выполнены следующие условия [2]: 1) 0 6 I; 2) если а,Ь € I,
то а + Ь £ I; 3) если а & 1,Ь £ II, то а ■ Ь Е I.
Если идеал I порождён полиномами дг, <72, • • •, 9п , то множество С = {91,92, ■ ■ ■, 9п}
называется базисом (системой образующих) идеала 1(1 = (С)).
Определение 2. Идеал I С к[х\,..., хп] называется мономиальным ((ха : а € А)), если существует подмножество А С Z^0 такое, что I состоит из всех конечных сумм вида ^аеА , где Ьа £ к[х 1,..., хп] [2].
Определение 3. Мономиальным упорядочением на к[х\,..., хп] называется бинарное отношение > на множестве , обладающее следующими свойствами [2]: 1)
> является линейным упорядочением на Z^0; 2) если а > /? и 7 е Z>0, то а+7 > /3+7; 3) > вполне упорядочивает ^.
Относительно выбранного упорядочения будем пользоваться следующими обозначениями: 1) ЯТ(/) — старший терм, т.е. старший моном без числового коэффициента-, 2) ЯС(/) — старший коэффициент-, 3) ЯМ(/) — старший моном, т.е. НМ(/) = ЯС(/)ЯТ(/).
Определение 4. Полином / редуцируется к полиному к по модулю С, если в й существует некоторый полином д, такой что ЯМ(/) = НМ(д) -тп, где те Я и Ь = / — д ■ т. Будем обозначать / —» Ь.
СИ
Определение 5. Множество С С / называется базисом Гребнера идеала I, если идеал, порождённый множеством старших мономов полиномов С, совпадает с идеалом, порожденным старшими мономами I: (НМ(С)) = (ЯМ(/)).
Для того, чтобы множество С из идеала I являлось базисом Гребнера, необходимо и достаточно, чтобы любой полином из I редуцировался по модулю С [3].
Б. Бухбергер доказал, что можно проверять редукцию не всех / £ I, а только его некоторого подмножества и сформулировал алгоритмическое определение базиса Гребнера [4].
Определение 6. в-полиномом, порождённым / и а, называется полином вида: 5(/, д) = ™?у)> • / - ьсм(ят(/),ят(д)) . ^
Теорема 1 (Бухбергер а). Если для всех пар (/, д) € их Б-полиномы редуцируются к нулю по модулю С, то С является базисом Гребнера.
Эта теорема лежит в основе алгоритма Бухбергера.
3 Матричный алгоритм вычисления базисов Гребнера
В 1999 г. Ж. К. Фужер представил эффективный матричный алгоритм построения базисов Гребнера Я4 [5].
Основные отличия от алгоритма Бухбергера: 1) Представление полиномов: вместо множества полиномов используется матрица коэффициентов этих полиномов. 2) Составление Э-полиномов: алгоритм Фужера позволяет не вычислять Э-полиномы полностью, а добавлять в матрицу их части для дальнейшего составления линейных комбинаций. 3) Редукция Э-полиномов: редукция выполняется за один шаг с помощью приведения матрицы коэффициентов полиномов к ступенчатому виду. Чтобы эта операция была эквивалентна редукции, в матрицу добавляются строки, которые соответствуют полиномам базиса с некоторыми множителями.
Для построения матрицы необходимо задать мономиальное упорядочение и поставить в соответствие каждому моному каждого полинома коэффициент матрицы.
Пример соответствия матрицы множеству полиномов приведён на рис. 1.
На рис. 2, 3, 4 приведён алгоритм Фужера.
г3 Z у2 ух
»1 0 2 0 1
’2 1 0 -3 0
О -10 0 0 0
Рис. 1: Соответствие матрицы множеству полиномов { pi = 2z + ух2, р2 = z3 — Зу2, р3 = -10*}
function F4( F)
G = F
P = {(f,g)--f,geGj^g} while P^0 do
Sel = Select(P)
LR = {(left,right) : p,p G Se/} S-n0JiHH0M0B nap
reduced = reduction(L/?, G) for all r G reduced do
if HT(r) <£ HT(G) then for all g 6: G do P = PU(r,<?) end for end if end for end while return G end function
> Р — исходный идеал
> Получение всех пар из С
> Выбор и удаление критических пар > Получение левых и правых частей
> Обновление списка пар
Рис. 2: Алгоритм F4
4 Структуры данных для матричного алгоритма
Существущая реализация содержит преобразование множества полиномов в матрицу коэффициентов и восстановление множества полиномов из матрицы коэффициентов и набора термов на каждой итерации вычисления базиса Гребнера. Данный подход является неэффективным, так как при каждой операции получения матрицы коэффициентов из множества полиномов выполняется выделение и заполнение двумерных массивов большого размера, и затем при восстановлении полиномов из матрицы производится поиск термов, нужных для получения каждого полинома, из списка всех термов всех полиномов базиса.
Для ускорения матричного алгоритма предлагается специальная структура данных, которая позволяет не совершать упомянутые выше преобразования, а производит все необходимые действия только над матрицей коэффициентов. Она описана в классе Ро1упот1а1Ыз^
Класс PolynomialList содержит методы, требуемые на различных этапах исполнения матричного алгоритма. Основными операциями являются: создание объекта РоХупопиа!!.:!^
function REDUCTION ( (LR, G) )
PP = symPP(L.ft, G) о препроцессинг
reduced = row echelon form w.r.t. PP > преобразовываем полиномы в матрицу, приводим ее к ступенчатому виду и восстанавливаем полиномы for all г G reduced do
if HT(r) £ PP then > возвращаем только редуцированные полиномы
res = res U г end if end for return res end function
Рис. 3: Функция редукции
function SYMPP( LR, G)
F = {t*f, (t,f)eLR}
Done = HT(F) while Done ф T(F) do
Done = Done U {t, t G T(F)/Done } > выбираем терм t
if t is top reducible by G then о если t редуцируется каким-либо полиномом из
G
г = reductor of t
т = НТ(г)
res = res U {m ■ г} end if end while return res end function
Рис. 4: Функция построения матрицы
из массива полиномов, получение и выбор критических пар, умножение терма на полином и добавление полинома в существующий объект. Главные методы класса приведены на рис. 5, 6, 7.
Множество полиномов представляется следующим образом: все термы всех полиномов хранятся в сортированном списке (AllTerms типа TermList); сами полиномы — в строках двух двумерных массивов, один из которых содержит индексы термов в списке (Collndexes — массив целых чисел), а другой хранит соответствующие коэффициенты (Rows — массив типа Element).
Термы помещаются в специальный объект класса TermList, который обеспечивает постоянное упорядочение термов по убыванию и обновление индексов существующих термов при добавлении новых.
Во время выполнения матричного алгоритма существуют три объекта PolynomialList. Первый объект используется для хранения текущего состояния базиса. Второй объект содержит левые и правые части S-полиномов критических пар. Третий объект служит для подготовки к редукции, в него помещаются выбранные на данном шаге критические
function PolynomialList.add(p)
Т = getAUTerms(p) > Получаем все термы.
Newlndexes, UpdatedIndexes = AllTerms.addAll(T) t> Добавляем термы в список всех термов, получая индексы новых элементов и обновленные индексы.
Rows.add(getAllCoef fs(p)) > Добавляем новую строку с коэффициентами
полинома.
СolIndexes.add(NewIndexes) > Добавляем новую строку с индексами термов.
update Indexes(UpdatedIndexes) о Обновляем изменившиеся индексы термов,
end function
Рис. 5: PolynomialList. Добавление полинома
function POLYNOMIALLlST.MULTONTERM(polIndex, t)
for all currTerm = AllTerms[Coil ndexes,] do > Умножаем все термы полинома на данный терм.
Newlndex, UpdatedI ndexes = AllTerms .add(currT erm * t) updateIndexes(U pdatedl ndexes) end for end function
Рис. 6: PolynomialList. Умножение полинома на терм
function TERMLlST.ADD(t)
newlndex = getlnsertlndex[t) > Получаем индекс для вставки (двоичный поиск). insert(t, newlndex)
updatedlndexes = updatelndexes(newIndex) Обновляем индексы термов,
младших t.
return (newlndex, updatedl ndexes) end function
Рис. 7: TermList. Добавление терма
пары и полиномы, полученные в результате выполнения препроцессинга.
5 Примеры
В примерах используется обратный лексикографический порядок г > у > х.
На рис. 8 приведена схема представления множества полиномов { рг = 2г + ух2,р2 = г3 — Зу2,рз = -Юг} в виде объекта Ро1упот1а1Ь1з1;.
Термы (ТегтзЬ1з1;) Коэффициенты Индексы
г3 2 у2 ух2
2 1
1 -3
-10
1 3
0 2
1
Рис. 8: Представление множества полиномов в виде PolynomialList
На рис. 9 показано состояние объекта после добавления нового полинома р4 = Ъг2—2у2 , на рис. 10 — после умножения полинома рз на терм х2 .
Термы (ТегтзЬізї)
Коэффициенты Индексы
23 г2 2 у2 2 ух
0 1 2 3 4
Р і Р2 Рз Р4
2 1
1 -3
-10
5 -2
2 4
0 3
2
1 3
Рис. 9: Добавление полинома в объект РоїупотіаІЬізі
к
б Заключение
В дальнейшем планируется развитие матричного алгоритма и его распареллеливание за счет матричных операций для исполнения на параллельных вычислительных машинах с распределенной памятью.
z3 zx2 У2 yx2
0 1 2 3
Pi
Р2
Рз
2 1
1 -3
1 I—1 О
l CO
0 2
1
Рис. 10: Умножение полинома на терм ЛИТЕРАТУРА
1. Малашонок Г.И., Борисов И.А. Некоторые подходы к вычислению базисов Гребнера // Вестник Тамбовского Университета. Исследовательские проекты студентов. Приложение к журналу. 2011. С. 191-194.
2. Кокс Д., Литтл Дж., О’Ши Д. Идеалы, многообразия и алгоритмы. М.: Мир, 2000.
3. Becker Т., Wespfenning V. Groebner bases. A computational approach to commutative arlgebra. New York: Springer, 1993. V. 141.
4. Компьютерная алгебра: символьные и алгебраические вычисления / пер. с англ. под ред. Б. Бух-бергера, Дж. Колинза, Р. Лооса. М.: Мир, 1986.
5. Faugere J.-C. A new efficient algorithm for computing Groebner bases (F4) // J. Pure Appl. Algebra. 1999. V. 139. No 1-3. P. 61-88.
6. Малашонок Г.И., Старое М.Б., Борисов И.А. К параллельному вычислению базисов Гребнера // Вестник Тамбовского университета. Серия Естественные и технические науки. Тамбов. Т. 15. Вып. 6. 2010. С. 1755-1760.
7. Старое М.В. Реализация метода Фужера // Вестник Тамбовского университета. Серия Естественные и технические науки. Тамбов. Т. 14. Вып. 4. 2009. С. 802-803.
8. Александров Д.Е., Галкин В.В., Зобнин А.И., Левин М.В. Распараллеливание матричных алгоритмов вычисления базисов Гребнера // Фундаментальная и прикладная математика. Москва. Т. 14. Вып. 4. 2008. С. 35-64.
БЛАГОДАРНОСТИ: Работа выполнена при поддержке РФФИ (грант № 12-07-00755-а) и программы «Развитие потенциала высшей школы» (проект 2.1.1/10437).
Поступила в редакцию 20 февраля 2012 г.
ABOUT ONE MATRIX APPROACH TO CONSTRUCTING GROBNER
BASES
© Ivan Andreevich Borisov
Tambov State University named after G.R. Derzhavin, Internatsionalnaya, 33, Tambov,
392000, Russia, Post-graduate Student of Mathematical Analysis Department, e-mail:
Key words: Grobner bases, matrix reduction, Mathpar computer algebra system.
We describe matrix approach to constructing Grobner bases of polynomial ideals and
data structures needed to efficient execution in computer algebra system Mathpar.