УДК 519.688
ФАКТОРИЗАЦИЯ ПОЛИНОМОВ МНОГИХ ПЕРЕМЕННЫХ (с) Д. С. Ивашов
Ключевые слова: факторизация полиномов, полиномы многих переменных, компьютерная алгебра.
Ообсуждаются алгоритмы факторизации полиномов многих переменных.
1 Введение
Задача разложения полиномов на множители имеет долгую и выдающуюся историю. Одним из первых метод факторизации полиномов предложил Кронекер в 1882 г. С тех пор прошло более ста лет, и были получены современные, более быстрые алгоритмы разложения полиномов на множители. Д. Муссен, П. Ванг, JI. Ротшильд обобщили лемму Гензеля для получения алгоритма факторизации полиномов от нескольких переменных с целыми коэффициентами. Ван Хойя, основываясь на работах Калтофена и Шоупа предложил систему оценок, следуя которой выбирается определенная стратегия факторизации полиномов [1, 2]. В настоящее время появляются различные модификации известных алгоритмов, позволяющие ускорить процесс разложения на множители.
Настоящая работа продолжает исследования по факторизации полиномов многих переменных в среде РагСА. Здесь детализируется предварительный этап сведения задачи факторизации полиномов многих переменных к полиномам одной переменной [3]. Для факторизации полиномов одной переменной применяется алгоритм Берлекемпа в изложении Д. Кнута [4].
2 Выделение множителей, имеющих различные наборы переменных
Пусть F{x 1,...,жп) - полином от п переменных х\,...,хп- У такого полинома может быть не более 2П сомножителей, которые имеют различные наборы переменных. При этом сомножителей, имеющих р различных переменных из п, может быть не более binomial {п,р} . Процедура выделения этих сомножителей состоит в следующем.
Предварительно находится НОД всех числовых коэффициентов и каждый коэффициент делится на него. Затем отделяется сомножитель, не содержащий переменную х\. Для этого нужно записать полином F по степеням переменной х\ и найти у полиномиальных коэффициентов НОД. После деления исходного полинома на этот НОД получим два полиномиальных сомножителя исходного полинома, один из которых не содержит переменную
XI .
Будем продолжать ЭТОТ процесс ДЛЯ переменных X<i , Хз,...,Х3. Пусть уже выделены переменные, не содержащие все возможные наборы полиномов из а?2, ... , xs. В каждом из этих полиномов можно попробовать выделить сомножитель, не содержащий переменную £s+i. Для этого в каждом их этих полиномов найдем НОД полиномиальных коэффициентов при неизвестной ха+\ и разделим на него. Общее число полиномиальных сомножителей может при этом, в худшем случае, удвоится.
Таким образом, завершив этот процесс на последней переменной хп, получим, в худшем случае, 2П сомножителей.
Пример 1.
Разложим полином F(x, у, z) = xyz2 + 3yz2 + x2z2 + 3xz2 -I- 2xy2z + Qy2z + 3x2yz + +9xyz + x3z -f 3x2z + xy3 4- 3y3 + 2x2y2 + 6xy2 + x3y + 3x2y. Найдем НОД полиномиальных коэффициентов относительно переменной х. Он равен z + у. Поэтому F(x, г/, z) = (z +у) • (xyz + 2>yz + x2z + 3xz + xy2 4- 3y2 + 2x2y + 6xy + a;3 4- Зх2). Обозначим f\ = z + y, /2 = xyz + 3yz + x2z + 3xz + xy2 + 3y2 + 2x2y + 6xy + x3 + Зх2. Для каждого из полученных сомножителей ищем НОД полиномиальных коэффициентов относительно переменной у. Для /2 НОД будет равен х + 3, следовательно,
/2 = (х + 3) • (yz + xz + у2 + 2ху + х2). Обозначим /2) 1 = х + 3, /2,2 = yz + xz -I- у2 + 2xy + х2 . Для каждого из полученных сомножителей ищем НОД полиномиальных коэффициентов относительно переменной 2:. Для полинома /2,2 находим НОД коэффициентов х + у, следовательно, /2) 2 = (х + у) • (х + у + z). Обозначим /2)2, i = х + у, /2,2,2 = х + у + z. Следовательно, полином F(x, у, z) раскладывается на множители следующим образом: F(x, у, z) = /1 • /2,1 • /2,2,1 • /2,2,2 = {z + у) • (3 + х) • (ж + у) • (х + у + z).
3 Освобождение от квадратов
После отделения сомножителей с разными наборами коэффициентов можно в каждом из сомножителей освободиться от квадратов. То есть попытаться представить полином в виде произведения сомножителей, каждый из которых входит в произведение со степенью, которая отличается от степеней других сомножителей:
г
F(x 1, ..., Хп) — 11 /г(^1) •••) Xji) ,
г=1
где Si - различные натуральные числа, Si ф Sj, при г ф j . При этом если /* раскладывается дальше на сомножители, то каждый из них входит в /* в первой степени.
Выделение таких сомножителей можно производить последовательным дифференцированием и вычислением НОД полинома и его производной.
Пример 2. Разложим полином p(x,y,z) = (z3+5yz2+8у2z+4y3) на множители. Найдем p'z = 3z2 + 10yz + 8у2. Вычислим (p,p'z) = z + 2y. Следовательно, р = {z + 2у)2 ■ (z + у).
4 Проблема старшего коэффициента полинома многих переменных
Теперь наступает самая трудная часть процедуры факторизации. Если еще существует дальнейшее разложение на множители, то каждый из множителей будет иметь один и тот
же набор переменных и входить в произведение в первой степени. При этом если коэффициент при старшей переменной равен 1, то это облегчает дальнейшие поиски сомножителей. Перейти к такому случаю можно домножением полинома на степень старшего
коэффициента и заменой переменных.
к
Пусть F(x = Ylai’xh - полином п переменных хп, хп - старшая
г=0
переменная, а* = ai(xi, - коэффициенты при старшей переменной, которые пред-
ставляют собой полиномы от остальных переменных. Можно перейти к многочлену со старшим коэффициентом равным одному, если домножить полином на старший коэффициент а/с в степени к — 1. В результате замены переменной хп на у = хпак придем к полиному, у которого старшая переменная у имеет старший коэффициент равный 1.
Требует дополнительного исследования вопрос о том, в каких случаях такое действие является оправданным и "облегчает" задачу факторизации. Конкретные рекомендации по этому вопросу неизвестны.
5 Факторизация нормированного, свободного от квадратов полинома
Рассмотрим теперь полином от п переменных f{x 1,жп), у которого нет кратных сомножителей и который раскладывается на взаимно простые множители: f(xi,...,xn) = ПЛ(*ь- , хп). Сомножители /j(xi,хп) требуется найти. Будем полагать, что нам из-
з
вестен способ факторизации полиномов от одной переменной. Пусть У* (г = 1 ,...,п — 1) конечные подмножества Q, такие что | Y{ |= fc; + 1, где /с* = degXif(xi,...,xn). В каждом из этих множеств все элементы различные. Введем обозначение элементов У*: Yi = {*?,...,*{*} . Обозначим через <Ал,.(z„) = /(С>-iC-l1»®»») полином, который получается подстановкой вместо переменных Х{ чисел ^*(г = 1, 1; V{ £ [0,..., /с»]) - Раз-
ложим каждый из <Pvi,...,vn-i(xn) на множители: <Pvi,...,vn-i(xn) = n^>i,..,vn—i(^n) • Обозна-
з
n—1
ЧИМ Ptn^Vn-1 = П (* - с ). Отметим, ЧТО <Pj,vi,...,vn-i(Xn) ЯВЛЯеТСЯ образом fj(x\,...,Xn) г=1
при oтoбpaжeнииgiven and Q[x\,..., хп] —> Q[x\, ...,яп]/pvi,...,vn-iQ[xu -,^„1 • Перейдем к восстановлению искомых функции fj(x 1, ...,хп).
Первый шаг.
Отметим, что ^jiV1....Vn_i(C) = Vyi е [0,...,fci],...,vn € [0, Введем
обозначения ДЛЯ коэффициентов ПОЛИНОМОВ <Pj,vi,...,vn-2,g(Xn) • Пусть
кп
V?j,ui,-.Vn-2.s(a'n) = a3,vi,...,vn-2,g,gnXn > 9 ~ 0, ...,fcn_i.
дп=0
Восстановим полином степени A:n_i по его значениям: ^)Vll.„,wn_2lo,ffn’ •••> aj,vi,-..,vn-2je*-i4n в точках I ПО формуле Лагранжа:
0 (*„-! - CJ-O»-! - Cl)(*-1 - eD-^n-l - fc‘)
Jj,vi,...,v„-2,gn / ; aj,vi,...,vn-2,g,gn f,g ,q \ t.g ±д-\\(+д (t9 _
0 —0 (*n-l — Si-rn-lJlrn-l n —1/•"VCn —1 6n-l )
Сгруппируем коэффициенты при неизвестных:
кп — 1
fj,Vl,...,Vn-2,gn ~ "У ^ 0^j,Vl,...,Vn-2,gn,SXn-l' з=0
Составим полином от двух переменных:
— 1 кп
(Pj,Vl,...,Vn-2(Xn-l^Xn) — У ^ У ] а],у1......Уп-2,9П-1,ЯПХП-1 ХП >
9п — 1 —0 Эп= 0
который в точках равен значению полинома /Д^1, ,хп-1,хп):
^ь...,,п-2(с-11)с) = лда5.-.,с).
Шаг г.
Пусть уже получено (&1 -|- 1)...(А:Г_1 + 1) полиномов:
кг+1 кп
(Pj,Vl,...,Vr-l,g{xr+ll •••> хп) — У ^ ••• ^ ^ aj,Vl,...,vr-l,g,gr+l,.■■,gnXr+l хп
5г+1—0 дп=0
(д 0,/сг, VI £ [0,/ь^],иг—1 £ [0,—1 ])*
Будем восстанавливать полином степени кг по его значениям: , и <},м,...,о„ >
а?.п.~Г,'1 1,*г,9г+1,..,9„ вточках *?,•••>*£" ПО формуле Лагранжа:
= у- п_1_г (а?г - ^ )...(з:г - - ^+1)...(хг -
Ij,Vl,...,Vr-l,gr+l,^■■&n / „ ^>1)...,Уг-1,9,Зг+1,. .,5„ {^9 — 10) (^ — ^г_1)(^г — ^г+1) (^г — ^г)
Сгруппируем коэффициенты при неизвестных:
кг
*. — V п/п_г ГЕв
з=0
Составим полином от п — г + 1 переменной:
^г+1
(*^Г5 •••> ^п) = ^ ^ ; ••• ^ у а^,^1,.-м«г-1.Эг,9г+ь—^г+1 ■••ягп >
Зг=0<?г+1=0 3п=0
который в точках £”г,...,££* равен значению полинома ...,хп):
Шаг п - 1.
Пусть уже получено + 1 полиномов:
^,а(12, = 53-53 {я = о, ...а).
52=0 9п=0
Восстановим полином степени кг по его значениям: , •••, °^к^д2 дп вточках
2°, по формуле Лагранжа:
, =у'«п“2 (Д1 ~ ~ *1~1)(д:1 ~ *!+1)-(д1 - <?*)
*"* & *“*.............9п М - <?) -(*? - *Г‘)(«! - г?+1)-(<! - £) '
Сгруппируем коэффициенты при неизвестных:
1^1,92,—,9п ~ аМ2, -,9п,52'1*
5=0
Составим полином от п переменных:
51=0 52=0 5п=0
который в точках равен значению полинома :
Получим, что искомые множители /л-(ж1, ...,а;п) = ^ . Таким образом,
/(^1, •••> Я„) 11 Л(^1, •••> хп)’
ЛИТЕРАТУРА
1. Hoeij M.V. Factoring polynomials and the knapsack problem // Journal of Number Theory. 2002. Vol. 95. P. 167-189.
2. Shoup V. A new polynomial factorization algorithm and its implementation // Journal of Symbolic Computation. 1995. Vol. 20. P. 363-397.
3. Малаьионок Г.И., Ивашов Д. С. Об алгоритме факторизации полиномов многих переменных // Вестник Тамбовского университета. Сер. Естественные и технические науки. 2010. Том 15. Вып.1.
4. Кнут Д.Э. Искусство программирования. Том 2. М., 2004.
БЛАГОДАРНОСТИ: Работа выполнена при поддержке программы «Развитие потенциала высшей школы» (проект 2.1.1/10437).
Поступила в редакцию 12 ноября 2010 г.
UDK 519.688
FACTORING POLYNOMIALS WITH MANY VARIABLES © D. S. Ivashov
Key words: factoring polynomials, polynomials with many variables, computer algebra. Polynomial factorization algorithms are discussed for the case of polynomials with many variables.