Это не официальный сайт wikipedia.org 01.01.2023

Деление многочленов — Википедия

Деление многочленов

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

Для любых многочленов f ( x ) и g ( x ) , g ( x ) 0 , существуют единственные многочлены q ( x ) и r ( x ) , такие что

f ( x ) g ( x ) = q ( x ) + r ( x ) g ( x ) ,

причем r ( x ) имеет более низкую степень, чем g ( x ) .

Целью алгоритмов деления многочленов является нахождение частного q ( x ) и остатка r ( x ) для заданных делимого f ( x ) и ненулевого делителя g ( x ) [1].

Постановка задачиПравить

Задача о делении многочленов с остатком может быть сформулирована в следующих эквивалентных постановках[2].

Частное и остатокПравить

Многочлены S ( x ) = s 0 + s 1 x + + s m x m   степени m   и T ( x ) = t 0 + t 1 x + + t n x n   степени n  , заданы своими коэффициентами. Необходимо найти частное Q ( x ) = q 0 + q 1 x + + q m n x m n   и остаток R ( x ) = r 0 + r 1 x + + r n 1 x n 1  , такие что[2]

S ( x ) = T ( x ) Q ( x ) + R ( x ) .   (1)

Определённые таким образом многочлены Q ( x )   и R ( x )   единственны — если допустить, что у уравнения (1) существует два решения Q 1 ( x ) , R 1 ( x )   и Q 2 ( x ) , R 2 ( x )  , то

T ( x ) ( Q 1 ( x ) Q 2 ( x ) ) = R 1 ( x ) R 2 ( x ) ,  

из чего следует, что либо Q 1 ( x ) = Q 2 ( x )  , что также влечёт R 1 ( x ) = R 2 ( x )  , либо степень R 1 ( x ) R 2 ( x )   не меньше степени T ( x )  , что невозможно по определению R ( x )  [3].

Матричная постановкаПравить

Данную задачу можно переписать в матричном виде, если считать, что даны s 0 , s 1 , , s m   и t 0 , t 1 , , t n  , а посчитать нужно q 0 , q 1 , , q m n   и r 0 , r 1 , , r n 1   такие что[2]

[ s m s n + 1 s n s n 1 s 0 ] = [ t n 0 0 t n 0 t n 1 t n t n 2 t n 1 0 0 t 0 ] [ q m n q 1 q 0 ] + [ 0 0 0 r n 1 r 0 ] .   (2)

Обратная тёплицева матрицаПравить

В силу того, что R ( x ) = S ( x ) T ( x ) Q ( x )  , для решения задачи достаточно найти q m n , , q 0   по первым m n + 1   уравнениям системы. Если рассматривать только эти уравнения, задача принимает вид

[ s m s n + 1 s n ] = [ t n 0 0 t n 0 t n 1 t n ] [ q m n q 1 q 0 ] .   (3)

Матрица данной системы уравнений является нижнетреугольной и тёплицевой, составленной из старших коэффициентов T ( x )   и нулей, а решение системы эквивалентно нахождению обратной к ней[2].

Обратный многочлен по модулюПравить

Пусть S R ( x ) = x m S ( x 1 ) = s m + s m 1 x + + s 0 x m   и T R ( x ) = x n T ( x 1 ) = t n + t n 1 x + + t 0 x n   — многочлены, полученные из S ( x )   и T ( x )   разворотом последовательности коэффициентов. Систему уравнений (3) можно сформулировать как

S R ( x ) T R ( x ) Q R ( x ) ( mod x k ) ,  

где k = m n + 1  , а mod x m n   означает, что остатки от деления многочленов S R ( x )   и T R ( x ) Q R ( x )   на x k   равны. Деление многочлена P ( x )   на x k   может быть представлено как P ( x ) = x k Q ( x ) + R ( x )  , поэтому остаток R ( x )   равен многочлену, полученному из первых k   коэффициентов P ( x )  , то есть,

R ( x ) = p 0 + p 1 x + + p k 1 x k 1 .  

Если многочлены S R ( x )   и T R ( x )   известны, то Q R ( x ) S R ( x ) T R ( x ) 1 ( mod x k )  , где T R ( x ) 1   — обратный к T R ( x )   многочлен в кольце остатков по модулю x k  . Таким образом, поиск Q ( x )   может быть сведён к нахождению V ( x ) = v 0 + v 1 x + + v k x k  , такого что

V R ( x ) T R ( x ) 1 ( mod x k ) .   (4)

Данная постановка позволяет также находить обратную матрицу в системе (3):

Пусть T   — матрица размера k   из (3). Тогда T 1   — нижнетреугольная тёплицева матрица, первый столбец которой равен [ v k 1 v k 2 v 0 ] T  , где v 0 , , v k 1   — коэффициенты V ( x )   из (4).

В силу произвольности многочлена T ( x )  , определяющего элементы T  , данный факт позволяет находить обратную к произвольной тёплицевой нижнетреугольной матрице[2].

Формальные степенные рядыПравить

Уравнение S R ( x ) = T R ( x ) Q R ( x )   можно рассматривать не только по модулю x m n  , но и как равенство в кольце формальных степенных рядов. Пусть s ( x )   и t ( x )   — формальные степенные ряды, совпадающие с многочленами S R ( x )   и T R ( x )  . Если в таких терминах найти формальный ряд

q ( x ) = s ( x ) t ( x ) ,   (5)

то его коэффициенты при младших m n + 1   степенях будут соответствовать искомому многочлену Q R ( x )  . Такой подход также позволяет рассмотреть задачу (2) как систему с бесконечно продлённой тёплицевой матрицей и бесконечно продлённым столбцом q  , в которой исключён столбец остатков r  . Решение первых h   строк такой системы даст первые h   коэффициентов ряда q ( x )  , а именно q m n , q m n 1 , , q m n h + 1  . В то же время, работа со степенными рядами в целом, при которой интерес представляют только первые h   коэффициентов ряда (например, из-за ограниченности доступной памяти), эквивалентна работе с многочленами, операции над которыми производятся в кольце остатков по модулю x h  [4]. В частности, поиск первых h   коэффициентов q ( x )   эквивалентен решению уравнения s ( x ) t ( x ) q ( x ) ( mod x h )  [2].

Методы решенияПравить

Деление столбикомПравить

В ходе алгоритма, коэффициенты при старших степенях S ( x )   последовательно зануляются за счёт вычитания из него T ( x )  , умноженного на некоторую степень x   с коэффициентами, которые затем образуют частное Q ( x )  . Изначально, коэффициент q m n   определяется равным s m t n  . Если разложить Q ( x ) = q m n x m n + Q ( x )  , то

S ( x ) = T ( x ) ( q m n x m n + Q ( x ) ) + R ( x ) .  

С помощью замены S ( x ) = S ( x ) q m n x m n T ( x )  , данное уравнение приобретает вид

S ( x ) = T ( x ) Q ( x ) + R ( x ) ,  

аналогичный уравнению (1). При этом m  -й коэффициент S ( x )  , по определению q m n  , равен 0  , поэтому степень S ( x )   будет меньше, чем степень S ( x )  . Процедура повторяется, пока степень S ( x )   не станет меньше степени T ( x )  , что будет означать, что очередной S ( x )   равен R ( x )   и для него Q ( x ) = 0  [3].

ПримерПравить

Пусть S ( x ) = x 3 12 x 2 42   и T ( x ) = x 3  . Для данных многочленов, деление столбиком S ( x )   на T ( x )   может быть записано как

x 3 12 x 2 + 0 x 42 x 3 3 x 2 x 3 x 2 9 x 27 9 x 2 42 9 x 2 + 27 x 27 x 42 27 x + 81 123  

Таким образом,

x 3 12 x 2 42 x 3 = x 2 9 x 27 123 x 3 ,  

то есть, многочлен Q ( x ) = x 2 9 x 27   — частное деления, а R ( x ) = 123   — остаток.

Алгоритм Зивекинга — КонаПравить

В 1972 году Мальте Зивекинг предложил алгоритм для поиска решения B ( x )   уравнения A ( x ) B ( x ) = C ( x ) ( mod x n + 1 )   при заданных A ( x )   и C ( x )  [5]. В 1974 году Кон Сянчжун[en] показал, что при C ( x ) = 1   алгоритм представляет собой итерацию метода Ньютона для f ( V ) = V 1 A  [6]. При таком подходе, итерация принимает вид

V k + 1 = V k f ( V k ) f ( V k ) = 2 V k A V k 2 ,  

Где f ( V k ) = V k 2   обозначает производную функции f ( V )   в точке V k  . Для оценки точности алгоритма, можно оценить разность

V k + 1 B = A ( 2 V k A 1 V k 2 A 2 ) = A ( V k B ) 2 ,  

из чего следует, что если V k B   делится на x t   (что равносильно тому, что первые t   коэффициентов V k   определены корректно), то V k + 1 B   будет делиться уже на x 2 t  . Таким образом, при начальном условии V 0 = b 0 = a 0 1  , каждая итерация удваивает число точно определённых коэффициентов B ( x )  . Поэтому для вычисления A ( x ) 1 ( mod x n + 1 )   достаточно O ( log n )   итераций. Применение быстрого преобразования Фурье к умножению многочленов в формуле выше позволяет прийти к итоговому времени работы O ( n log n )  , что существенно улучшает оценку для обычного длинного умножения[7].

ПримерПравить

Пусть S ( x ) = x 3 12 x 2 42   и T ( x ) = x 3  . В силу (4), необходимо найти Q R ( x ) = ( 42 x 3 12 x + 1 ) ( 3 x + 1 ) 1 ( mod x 3 )  . Обратный многочлен V ( x ) = ( 3 x + 1 ) 1 ( mod x 3 )   ищется следующим образом:

  1. Начальное приближение определяется как V 0 = 1 T R ( 0 ) = 1  ;
  2. Первое приближение определяется как V 1 = V 0 ( 2 ( 3 x + 1 ) V 0 ) = 3 x + 1  ;
  3. Второе приближение определяется как V 2 = ( 3 x + 1 ) ( 2 ( 3 x + 1 ) ( 3 x + 1 ) ) = ( 3 x + 1 ) ( 9 x 2 + 1 ) = 27 x 3 + 9 x 2 + 3 x + 1  .

В силу свойств метода Ньютона, первые 2 2 = 4   коэффициента V 2 ( x )   определены верно. Так как дальнейшие вычисления происходят по модулю x 3  , коэффициенты при более высоких степенях можно отбросить. Отсюда

Q R ( x ) ( 12 x + 1 ) ( 9 x 2 + 3 x + 1 ) 108 x 3 27 x 2 9 x + 1 27 x 2 9 x + 1 ( mod x 3 ) ,  

в силу чего Q ( x ) = x 2 9 x 27  .

Анализ алгоритмовПравить

Для оценки эффективности различных методов используется арифметическая схемная сложность[en] — суммарное количество операций сложения, умножения, вычитания и деления над полем комплексных чисел, которые необходимо произвести в ходе работы алгоритма. Также оценивается количество параллельных шагов, требуемых для многопроцессорной реализации алгоритма, в предположении, что каждый процессор на любом шаге может выполнять не более одной операции[7].

Каждая итерация алгоритма деления столбиком заключается в вычитании смещённого на некоторую величину T ( x )   из S ( x )  , что может быть выполнено за O ( n )  . Так как степень S ( x )  , изначально равная m  , уменьшается, пока она не станет меньше n  , общее время работы алгоритма можно оценить как O ( k n )  , где k = m n  [2].

См. такжеПравить

ПримечанияПравить

  1. Сканави М. И. Элементарная математика. — 2-е изд., перераб. и доп. — М.: Наука, 1972. — С. 142—147. — 592 с.
  2. 1 2 3 4 5 6 7 Bini, Pan, 1986, pp. 184—186
  3. 1 2 Knuth, 1997, pp. 420—421
  4. Knuth, 1997, pp. 525—533
  5. Sieveking, 1972
  6. Kung, 1974
  7. 1 2 Bini, Pan, 1986, pp. 186—188

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