Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Понкратьев Е. В. - Элементы КА

.pdf
Скачиваний:
75
Добавлен:
03.05.2015
Размер:
1.64 Mб
Скачать

21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 205

А39. АЛГОРИТМ (выделить-неприводимый-множитель).

Дано: f (x) Z[x], deg f (x) = m

Надо: g(x) Z[x], g(x) неприводим в Z[x]

Переменные: решетка L

Начало

вычислить начальное приближение α˜ корня α и значение S, такое, что в шаре с центром α˜ радиуса S содержится ровно один

корень многочлена f L.базис[0] := 1

успех := "нет"

цикл для n от 1 до m − 1 пока не успех

L.базис[n] := xn

минимальный многочлен (L, успех)

конец цикла если успех то

g(x) := L.базис[0]

иначе

g(x) := f (x)

конец если Конец

21.5. p-адическая метрика. Переходим к подробному изложению алгоритма факторизации многочленов от одной переменной, основанному на использовании p-адической метрики и построении редуцированного базиса решетки. Предполагаем, что мы нашли неприводимый по модулю некоторого простого числа p множитель многочлена f (x) Z[x], и что мы подняли этот неприводимый множитель до некоторого множителя h(x), делящего многочлен f (x) по модулю некоторой степени числа p. Предположим также, что старший коэффициент многочлена h(x) равен 1 и что многочлен f (x) не делится на h2(x) по модулю p. Таким образом, предполагаем, что

lc(h) = 1

(21.16)

(h

mod pk ) делит (f mod pk) в (Z/pk Z)[x]

(21.17)

(h

mod p) неприводим в Fp[x]

(21.18)

(h

mod p)2 не делит (f mod p) в кольце Fp[x]

(21.19)

Положим l = deg(h), тогда 0 < l 6 n = deg(f ).

Покажем, что множество многочленов g(x) Z[x], которые делятся по модулю p на многочлен h(x), образуют в Z[x] главный

206

ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ

 

 

идеал, порожденный некоторым неприводимым множителем h0(x) многочлена f (x).

Другими словами, пусть ϕk обозначает естественный гомоморфизм кольца Z[x] на факторкольцо (Z/pkZ)[x], ядро гомоморфизма ϕk совпадает с главным идеалом (pk) кольца Z[x], ϕ1 обозначим просто ϕ. Пусть H — главный идеал кольца Z[x], порожденный многочленом h, удовлетворяющим условиям (21.16)–(21.19). Тогда существует h0 Z[x], такой, что при любом k в Z[x] совпадают

идеалы ϕk 1k(H)) = ϕ−1(ϕ(H)) = (h0). Многочлен h0 является неприводимым в Z[x] и делит f (x).

21.3. ПРЕДЛОЖЕНИЕ. Существует неприводимый в кольце Z[x] множитель h0(x) многочлена f (x), для которого (h mod p) делит (h0 mod p), и этот множитель определен однозначно с точностью до знака. Кроме того, если g(x) Z[x] и g(x) делит f (x), то следующие условия эквивалентны.

(h

mod p) делит (g

mod p) в кольце Fp[x]

(21.20)

(h

mod pk) делит (g

mod pk) в кольце (Z/pk Z)[x]

(21.21)

h0 делит g в кольце Z[x]

(21.22)

Вчастности, (h mod pk) делит (h0 mod pk) в кольце (Z/pk Z)[x].

Втеоретико-кольцевых терминах эти условия переписываются следующим образом:

ϕ(g) (ϕ(h)) Fp[x]

(21.20)

ϕk (g) (ϕk (h)) (Z/pkZ)[x]

(21.21)

g (h0) Z[x]

(21.22)

В частности,

ϕk (h0) (ϕk(h)) (Z/pkZ)[x]

ДОКАЗАТЕЛЬСТВО. Существование многочлена h0 следует из того, что ϕ(f ) делится на ϕ(h). Поскольку многочлен ϕ(h) неприводим, на него делится ϕ(hi) хотя бы для одного из неприводимых делителей hi многочлена f , а так как эти делители взаимно просты, то делится в точности один из них.

Поскольку ϕ является кольцевым гомоморфизмом, и разлагается в композицию гомоморфизмов ψk · ϕk, где ψk — естественный гомоморфизмом кольца Z/pk Z[x] → Fp[x], как из (21.22), так и из (21.21) следует (21.20).

Покажем, что из (21.20) следует (21.21) и (21.22).

21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 207

Пусть выполнено условие (21.20). Тогда ϕ(f /g) / (ϕ(h)) в силу (21.19) и однозначности разложения на множители в Fp[x]. Значит, f /g / (h0) ϕ−1(ϕ(h)). Из однозначности разложения на множители в Z[x] следует, что g (h0), т. е. выполнено (21.22).

Пусть снова выполнено условие (21.20). Поскольку Fp[x] является областью главных идеалов, из (21.20) следует, что существуют

u(x), v(x) Fp[x], такие, что u·ϕ(h)+v ·ϕ(f /g) = 1 в Fp[x]. Поскольку ϕ — эпиморфизм, ядро которого порождено числом p, выписанное

соотношение можно поднять до равенства в кольце Z[x]

u· h + v· f /g = 1 − p · w.

 

(21.23)

Обозначим w= 1 + pw + p2w2 + · · · + pk−1wk−1.

Применяя ϕk к

предыдущему соотношению, умноженному на g · w

, получим

ϕk(g · w· u) · ϕk(h) + ϕk (w· v) · ϕk(f ) = ϕk(g).

(21.24)

Из этого соотношения и (21.17) следует (21.21).

 

Рассмотрим на кольце многочленов R[x] фильтрацию по степеням многочленов, т. е. для любого неотрицательного целого s векторное пространство, состоящее из многочленов степени не выше s, обозначается Rs[x]. Введенная фильтрация индуцирует фильтрацию на кольце Z[x]: Zs[x] = Z[x] T Rs[x]. Rs[x] образует вещественное линейное пространство размерности s + 1, а Zs[x] является в нем решеткой (свободным Z-модулем максимального ранга).

Рассмотрим целое число m > l. Через L = L(m, k) обозначим множество всех многочленов в кольце Z[x], которые делятся на h(x) по модулю pk и степень которых не превосходит m, т. е. L(m, k) = Zm[x] T ϕk 1((ϕk (h))). Другими словами, L состоит из тех многочленов, коэффициенты остатков от деления которых на h(x) в p-адической метрике не превосходят p−k−1, т. е. являются малыми величинами. Легко видеть, что базис решетки L образует следующее множество многочленов

{pkxi | 0 6 i < l} {h · xj | 0 6 j 6 m − l}.

(21.25)

В качестве базиса всего вещественного пространства многочленов степени не выше m удобно выбрать одночлены xi, 0 6 i 6 m. Длиной многочлена назовем евклидову длину этого многочлена в выбранном базисе, который мы предполагаем ортонормированным. Oтождествляем многочлен с вектором его коэффициентов в выделенном базисе. Матрица коэффициентов базиса (21.25) имеет в этом базисе треугольную форму и легко видеть, что d(L) = pkl.

208

ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ

 

 

Покажем, что элементы решетки L с малой длиной лежат в главном идеале, порожденном многочленом h0(x) в Z[x].

21.4. ПРЕДЛОЖЕНИЕ. Предположим, что многочлен b L удовлетворяет неравенству

pkl > |f |m · |b|n.

(21.26)

Тогда b делится на h0(x) в кольце Z[x], в частности, НОД(f, b) 6= 1.

ДОКАЗАТЕЛЬСТВО. Можно считать, что b 6= 0. Положим g = = НОД(f, b). Достаточно показать, как следует из предыдущего предложения, что ϕ(g) (ϕ(h)). Предположим противное. Пользуясь неприводимостью ϕ(h) и эпиморфностью гомоморфизма ϕ, получаем существование многочленов u, v, w Z[x], таких, что

u · h + v · g = 1 − p · w.

(21.27)

Напомним, что l = deg(h), n = deg(f ), m + 1 — размерность решетки L. Положим m= deg(b) и e = deg(g).

Очевидно, что 0 6 e 6 m6 m. Положим s = n + m− e − 1.

Пусть Mf = Zs[x] ∩(f ), Mb = Zs[x] ∩(b), и M = Mf + Mb, т. е. M является Z-модулем, состоящим из всех многочленов вида u ·f + v ·b,

где u Zm−e−1[x], v Zn−e−1[x]. Покажем, что множество элементов

xif | 0 6 i < m− e} {xj b | 0 6 j < n − e

(21.28)

образует базис Z-модуля M . Очевидно, что они порождают M , остается только показать, что выписанная система многочленов линейно независима над Z. Предположим, что u · f + v · b = 0, где deg(u) < < m− e, deg(v) < n − e. Разделим это соотношение на g. Получим, u · (f /g) + v · (b/g) = 0. Пользуясь взаимной простотой многочленов f /g и b/g и ограничениями на степени u и v, получаем, что u = v = 0.

Рассмотрим проекцию

π : Rs[x] → Rs[x]/Re−1[x].

(21.29)

Пусть M = π(M ). Покажем, что M — решеткa в Rs[x]/Re−1[x]. Для этого достаточно показать, что M ∩ker π = 0, т. е. M ∩Ze−1[x] =

= 0. Пусть w M ∩ Ze−1[x], тогда w = u · f + v · b по определению M , следовательно, w делится на g (= НОД(f, b)). Посколь-

ку deg(w) < deg(g), получаем w = 0. Учитывая линейную независимость элементов множества (21.28) над Z, получаем, что эти элементы образуют базис решетки M . Неравенство Адамара (19.3)

21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА

 

209

 

 

 

 

 

 

 

 

 

 

 

 

 

утверждает, что

 

6

|f |

m−e

n−e 6

f

|

m

b

n. Пользуясь пред-

 

 

d(M

 

)

 

 

 

·|b|

 

 

|kl

 

·| |

 

 

 

 

положением теоремы, получаем d(M

) < p .

 

 

 

 

 

 

Для получения желаемого противоречия, покажем, что из (21.27)

следует обратное неравенство d(M ) > pkl.

 

 

 

 

 

 

 

Покажем, что для kлюбого элемента µ M , если deg µ < e + l, то

ϕk (µ) = 0

, т. е. µ p Z. Домножим соотношение (21.27) на µ/g

×

 

k−1

k−1

). Получим u1

·h+v1 ·µ ≡

µ/g (mod p

k

 

×(1+pw +· · ·+p

w

 

 

 

 

Z[x]),

где u1, v1 — некоторые

многочлены

из кольца Z[x]. Поскольку

µ M , ϕ(µ) делится на ϕk(h), следовательно, ϕk(µ/g) также делится на ϕk(h). Сравнивая степени, получаем, что ϕk(µ) = 0.

Для завершения доказательства достаточно теперь показать, что

базис be, be+1, . . . , bn+m−e−1 решетки M можно выбрать таким образом, что deg(bj ) = j. Это упражнение на приведение невырожденной

целочисленной матрицы к треугольному виду оставляется читателю. При таком выборе базиса, старшие коэффициенты первых l многочленов делятся на pk. Значит d(M ), который в полученном базисе равен произведению старших коэффициентов, удовлетворяет неравенству d(M ) > pkl, что завершает доказательство теоремы.

Следующий результат позволяет находить неприводимый делитель многочлена f .

21.5. ПРЕДЛОЖЕНИЕ. Пусть f , p, k, n, h, l выбраны так, как предполагалось в начале параграфа, L — решетка, заданная базисом (21.25). Предположим, что b1, . . . , bm+1 — редуцированный базис решетки L и что выполняется неравенство

2m

n/2

 

pkl > 2mn/2 m

|f |m+n.

(21.30)

Если h0 — неприводимый над Z многочлен, делящийся на h,

то deg(h0) 6 m тогда и только тогда, когда

 

 

pkl

1/n

 

 

 

 

|b1| <

 

.

(21.31)

|f |m

ДОКАЗАТЕЛЬСТВО. Если условие (21.31) выполнено, то по предложению 21.4 многочлен b1 делится на h0. Решетка L выбрана так, что deg b 6 m для любого b L, следовательно, deg(h0) 6 m.

Предположим теперь, что deg(h0) 6 m. Тогда h0 L по предложению 21.4.

Полагая x = h0 в предложении 19.9, получим |b1| 6 2m/2 · |h0|.

Теперь из задачи 7.6 следует неравенство

 

6

 

m/2

2m

1/2

.

 

 

 

· m

 

Подставляя сюда (21.30), получим (21.31).

b1

 

2

 

 

· |f |

210

ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ

 

 

Теперь можно сформулировать следующий алгоритм нахождения неприводимого в Z[x] многочлена, делящегося по модулю p на неприводимый по модулю p многочлен h(x).

А40. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)).

Дано: p Z, f, h Z[x]

h — неприводимый по модулю p многочлен, делящий f по

модулю p

Надо: g — неприводимый над Z многочлен, делящий f и деля-

щийся по модулю p на h.

Обозначения: n == f .степень l == h.степень

Переменные: целое k

решетка L

Начало

найден множитель := "нет"

цикл для m от l до n − 1 пока не найден множитель вычислить k, такое, чтобы выполнялось неравенство (21.30)

пользуясь леммой Гензеля, поднять сравнение h · u ≡ f (mod p) до сравнения по модулю pk

получить базис решетки L по формулам (21.25) редуцировать базис решетки L

если L.базис[1] удовлетворяет (21.31) то g.степень := m

g.коэффициенты := L.базис[1] найден множитель := "да"

конец если конец цикла Конец

Недостаток этого алгоритма заключается в том, что для каждого значения m нужно применять алгоритм Гензеля, строить новую решетку и редуцировать ее базис. Следующее предложение позволяет применять алгоритм построения редуцированного базиса решетки только один раз для максимального возможного значения m = n −1.

21.6. ПРЕДЛОЖЕНИЕ. Предположим, что обозначения выбраны так же, как и в предложении 21.5, и что выполнены те же предположения. Предположим кроме того, что существуют индексы j, такие, что

pkl

1/n

 

 

 

|bj | < |f |m .

(21.32)

21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 211

Пусть t — наибольшее значение j, для которого выполнено

(21.32). Тогда

deg(h0) = m + 1 − t, h0 = НОД(b1, . . . , bt)

и неравенство (21.32) выполнено для всех j, таких, что 1 6 j 6 t.

ДОКАЗАТЕЛЬСТВО. Пусть J обозначает множество индексов j{1, . . . , m}, для которых выполнено неравенство (21.32), #J — мощность множества J . Тогда h0 делит bj для любого j J , следовательно, h0 делит многочлен h1 = НОД({bj | j J }). Положим s = m − deg(h1). Поскольку deg(bj ) 6 m для всех j J , эти многочлены принадлежат Z-модулю Zs[x] · h1(x), ранг которого равен s + 1 = m + 1 − deg(h1). В силу линейной независимости векторов bj получаем

#J 6 m + 1 − deg(h1).

(21.33)

Применяя результат задачи 7.6 к многочленам h0xi, получаем

kh0xik = kh0k 6

2m

1/2

 

m

· kf k для всех

i > 0.

Для 0 6 i 6 m − deg(h0) имеем h0xi L, так что из предложения 19.9 получаем

kbj k 6 2m/2

2m

 

1/2

· m

· kf k для 1 6 j 6 m − deg(h0).

Из неравенства (21.30) следует, что индексы от 1 до m + 1 − − deg(h0) принадлежат множеству J . Поскольку h1 делится на h0 и выполняется неравенство (21.33), получаем {1, . . . , m+1−deg(h0)}

J , откуда deg(h0) = deg(h1) = m + 1 − t.

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

одного bj , j J .

Возьмем произвольный индекс j J и пусть dj = cont (bj ). Тогда многочлен bj /dj делится на h0, следовательно, bj /dj L, так как h0 L. Поскольку bj принадлежит базису решетки L, получаем dj = 1.

Полученный результат используется в следующем алгоритме.

212

ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ

 

А41. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)).

Дано:

p Z, f, h Z[x]

 

h — неприводимый по модулю p многочлен, делящий f по

 

модулю p

Надо:

g — неприводимый над Z многочлен, делящий f и деля-

щийся по модулю p на h.

Обозначения: n == f .степень l == h.степень

Переменные: цел k, t

решетка L

Начало

найден множитель := "нет"

вычислить k, такое, чтобы выполнялось неравенство (21.30) для

m = n − 1

пользуясь леммой Гензеля, поднять сравнение h · u ≡ f (mod p) до сравнения по модулю pk

построить базис решетки L по формулам (21.25) редуцировать базис решетки L

найти максимальное значение t, для которого L.базис[t] удовлетворяет (21.31)

если t > 0 то g.степень := n − t

g.коэффициенты := НОД (L.базис[1], . . . , L.базис[t]) найден множитель := "да"

конец если Конец

Глава 6

Интегрирование в конечном виде

22. Интегрирование полиномов и рациональных функций

Для решения простейших дифференциальных уравнений вида

y= f (x)

(22.1)

существует множество методов, которые применимы для функций f (x) из некоторых классов. При этом обычно недостаточно четко задается класс функций, в котором выбираются решения. Решение g(x) уравнения (22.1) определяется с точностью до произвольной константы и называется неопределенным интегралом или первообразной функции f (x).

Прежде чем переходить к основной части данного раздела, напомним некоторые результаты математического анализа.

Вэтом разделе символом A будем обозначать класс функций,

ккоторому принадлежит функция f (x) из правой части уравнения (22.1), а символом B — класс функций, в котором выбирается решение.

Прежде всего рассмотрим случай, когда A — кольцо полиномов K[x] от одной переменной над некоторым кольцом K характеристики 0. Предполагается, что мы умеем выполнять арифметические операции в поле K, в частности, K может совпадать с полем Q. В этом случае любое уравнение вида (22.1) имеет решение в этом же

классе функций, и алгоритм его нахождения хорошо известен: если

 

n

n

ai

 

 

f (x) =

aixi, то первообразная имеет вид g(x) =

P

xi+1

+ c,

 

 

iP

i+1

 

 

 

=0

i=0

 

 

 

где c — произвольная константа (константа интегрирования). Следующим по сложности идет случай, когда A — поле раци-

ональных функций K(x) от одной переменной. Для простоты будем считать, что поле коэффициентов K совпадает с полем рациональных чисел Q. Если класс B совпадает с A, то решение уравнения (22.1) существует далеко не всегда. Однако можно класс B

214 ГЛАВА 6. ИНТЕГРИРОВАНИЕ В КОНЕЧНОМ ВИДЕ

несколько расширить, добавив к нему алгебраические числа и операцию логарифмирования полиномов. Полученный класс будем обозна-

чать = ¯(x, +, , , /, log), и тогда любое уравнение вида (22.1),

B

A

где f (x) Q(x), разрешимо в классе B.

Напомним два метода решения уравнения (22.1) в этом случае. I метод. Пусть f (x) = pq((xx)) . Предположим, что мы умеем находить разложение функции f (x) в сумму простейших дробей: f (x) =

= p0

+

 

 

cij

 

. Проинтегрировать сумму почленно не представляет

(x−αi)

j

 

 

i,j

 

 

 

 

 

 

 

 

 

 

 

пользуясь тем, что

 

 

 

 

труда, P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

dx =

ln(x − α) + c

 

при j = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

Z

(x − α)j

 

(

 

+ c

при j > 1.

 

 

 

 

(j−1)(x−α)j−1

Основная сложность этого метода приходится на нахождение полюсов функции f (x), т. е. корней αi ее знаменателя и разложение функции f (x) в сумму простейших дробей.

II метод. Как и прежде, предполагаем, что f (x) = p(x) и что мы

q(x)

нашли все полюса αi функции f (x) на комплексной плоскости. Разложим в окрестности каждого полюса αi функцию f (x) в ряд Лора-

1

на, точнее, вычислим главную часть разложения, P cij (x − αi)−j ,

j=ni

где ni — порядок полюса в точке αi. Если g(x) — первообразная функции f (x), то главная часть разложения функции g(x) в точке αi имеет вид

2

 

cij

 

jXi

 

(x − αi)−j+1 + ci1 ln(x − αi).

 

i(x) =

 

j + 1

=n

 

 

 

Функция g(x) −P i(x) не имеет особенностей в комплексной плос-

i

кости и является просто полиномом, степень которого равна max(deg p − deg q, −1) + 1. Для нахождения этого полинома можно также проинтегрировать главную часть разложения функции f (x) в точке ∞.

При реализации обоих методов основная трудность состоит в нахождении полюсов αi функции f (x). При этом приходится работать в алгебраическом расширении Q(α1, . . . , αm) поля Q. Однако для записи ответа часто оказывается достаточным меньшее расширение

поля Q, чем Q(α1, . . . , αm).

Читателю из курса анализа известно, что интегрирование рациональных функций с действительными коэффициентами осуществ-