Деление многочленов — операция деления с остатком в евклидовом кольце многочленов от одной переменной над некоторым полем. Наивный алгоритм, реализующий эту операцию, представляет собой обобщенную форму деления чисел столбиком, легко реализуемую вручную.
Для любых многочленов
и
,
, существуют единственные многочлены
и
, такие что
,
причем
имеет более низкую степень, чем
.
Целью алгоритмов деления многочленов является нахождение частного
и остатка
для заданных делимого
и ненулевого делителя
[1].
Постановка задачи
Задача о делении многочленов с остатком может быть сформулирована в следующих эквивалентных постановках[2].
Частное и остаток
Многочлены
степени
и
степени
, заданы своими коэффициентами. Необходимо найти частное
и остаток
, такие что[2]
 | (1) |
Определённые таким образом многочлены
и
единственны — если допустить, что у уравнения (1) существует два решения
и
, то
 | |
из чего следует, что либо
, что также влечёт
, либо степень
не меньше степени
, что невозможно по определению
[3].
Матричная постановка
Данную задачу можно переписать в матричном виде, если считать, что даны
и
, а посчитать нужно
и
такие что[2]
 | (2) |
Обратная тёплицева матрица
В силу того, что
, для решения задачи достаточно найти
по первым
уравнениям системы. Если рассматривать только эти уравнения, задача принимает вид
 | (3) |
Матрица данной системы уравнений является нижнетреугольной и тёплицевой, составленной из старших коэффициентов
и нулей, а решение системы эквивалентно нахождению обратной к ней[2].
Обратный многочлен по модулю
Пусть
и
— многочлены, полученные из
и
разворотом последовательности коэффициентов. Систему уравнений (3) можно сформулировать как

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

Если многочлены
и
известны, то
, где
— обратный к
многочлен в кольце остатков по модулю
. Таким образом, поиск
может быть сведён к нахождению
, такого что
 | (4) |
Данная постановка позволяет также находить обратную матрицу в системе (3):
Пусть
— матрица размера
из (3). Тогда
— нижнетреугольная тёплицева матрица, первый столбец которой равен
, где
— коэффициенты
из (4).
Система (3) эквивалентна уравнению
. Соответственно, система

может быть представлена в виде
, что в случае (4) эквивалентно системе (3).■
В силу произвольности многочлена
, определяющего элементы
, данный факт позволяет находить обратную к произвольной тёплицевой нижнетреугольной матрице[2].
Формальные степенные ряды
Уравнение
можно рассматривать не только по модулю
, но и как равенство в кольце формальных степенных рядов. Пусть
и
— формальные степенные ряды, совпадающие с многочленами
и
. Если в таких терминах найти формальный ряд
 | (5) |
то его коэффициенты при младших
степенях будут соответствовать искомому многочлену
. Такой подход также позволяет рассмотреть задачу (2) как систему с бесконечно продлённой тёплицевой матрицей и бесконечно продлённым столбцом
, в которой исключён столбец остатков
. Решение первых
строк такой системы даст первые
коэффициентов ряда
, а именно
. В то же время, работа со степенными рядами в целом, при которой интерес представляют только первые
коэффициентов ряда (например, из-за ограниченности доступной памяти), эквивалентна работе с многочленами, операции над которыми производятся в кольце остатков по модулю
[4]. В частности, поиск первых
коэффициентов
эквивалентен решению уравнения
[2].
Методы решения
Деление столбиком
В ходе алгоритма, коэффициенты при старших степенях
последовательно зануляются за счёт вычитания из него
, умноженного на некоторую степень
с коэффициентами, которые затем образуют частное
. Изначально, коэффициент
определяется равным
. Если разложить
, то

С помощью замены
, данное уравнение приобретает вид

аналогичный уравнению (1). При этом
-й коэффициент
, по определению
, равен
, поэтому степень
будет меньше, чем степень
. Процедура повторяется, пока степень
не станет меньше степени
, что будет означать, что очередной
равен
и для него
[3].
Пример
Пусть
и
. Для данных многочленов, деление столбиком
на
может быть записано как

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

то есть, многочлен
— частное деления, а
— остаток.
Алгоритм Зивекинга — Кона
В 1972 году Мальте Зивекинг предложил алгоритм для поиска решения
уравнения
при заданных
и
[5]. В 1974 году Кон Сянчжун[англ.] показал, что при
алгоритм представляет собой итерацию метода Ньютона для
[6]. При таком подходе, итерация принимает вид

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

из чего следует, что если
делится на
(что равносильно тому, что первые
коэффициентов
определены корректно), то
будет делиться уже на
. Таким образом, при начальном условии
, каждая итерация удваивает число точно определённых коэффициентов
. Поэтому для вычисления
достаточно
итераций. Применение быстрого преобразования Фурье к умножению многочленов в формуле выше позволяет прийти к итоговому времени работы
, что существенно улучшает оценку для обычного длинного умножения[7].
Пример
Пусть
и
. В силу (4), необходимо найти
. Обратный многочлен
ищется следующим образом:
- Начальное приближение определяется как
; - Первое приближение определяется как
; - Второе приближение определяется как
.
В силу свойств метода Ньютона, первые
коэффициента
определены верно. Так как дальнейшие вычисления происходят по модулю
, коэффициенты при более высоких степенях можно отбросить. Отсюда

в силу чего
.
Анализ алгоритмов
Для оценки эффективности различных методов используется арифметическая схемная сложность[англ.] — суммарное количество операций сложения, умножения, вычитания и деления над полем комплексных чисел, которые необходимо произвести в ходе работы алгоритма. Также оценивается количество параллельных шагов, требуемых для многопроцессорной реализации алгоритма, в предположении, что каждый процессор на любом шаге может выполнять не более одной операции[7].
Каждая итерация алгоритма деления столбиком заключается в вычитании смещённого на некоторую величину
из
, что может быть выполнено за
. Так как степень
, изначально равная
, уменьшается, пока она не станет меньше
, общее время работы алгоритма можно оценить как
, где
[2].
См. также
Примечания
- ↑ Сканави М. И. Элементарная математика. — 2-е изд., перераб. и доп. — М.: Наука, 1972. — С. 142—147. — 592 с.
- ↑ 1 2 3 4 5 6 7 Bini, Pan, 1986, pp. 184—186
- ↑ 1 2 Knuth, 1997, pp. 420—421
- ↑ Knuth, 1997, pp. 525—533
- ↑ Sieveking, 1972
- ↑ Kung, 1974
- ↑ 1 2 Bini, Pan, 1986, pp. 186—188
Литература
- Bini D., Pan V. Polynomial division and its computational complexity (англ.) // Journal of Complexity — Elsevier BV, 1986. — Vol. 2, Iss. 3. — P. 179—203. — ISSN 0885-064X; 1090-2708 — doi:10.1016/0885-064X(86)90001-4
- Knuth D. The Art of Computer Programming (англ.): Seminumerical Algorithms — 3 — Addison-Wesley, 1997. — Vol. 2. — 784 p. — ISBN 978-0-201-89684-8
- Kung H. T. On computing reciprocals of power series (англ.) // Numerische Mathematik / F. Brezzi — Springer Science+Business Media, 1974. — Vol. 22, Iss. 5. — P. 341—348. — ISSN 0029-599X; 0945-3245 — doi:10.1007/BF01436917
- Sieveking M. An algorithm for division of powerseries (англ.) // Computing — Springer Science+Business Media, 1972. — Vol. 10, Iss. 1-2. — P. 153—156. — ISSN 0010-485X; 1436-5057 — doi:10.1007/BF02242389
- Schönhage A. Variations on Computing Reciprocals of Power Series (англ.) // Algorithms Seminar, 2000-2001 / F. Chyzak — Institut National de Recherche en Informatique et en Automatique, 2001. — P. 81—84. — 197 p.
 Ссылки на внешние ресурсы |
---|
| |
---|