Факторизация полиномов

Из Википедии, бесплатной энциклопедии

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

Первый алгоритм полиномиальной факторизации был опубликован Теодором фон Шубертом в 1793 году. [1] Леопольд Кронекер заново открыл алгоритм Шуберта в 1882 году и расширил его до многомерных многочленов и коэффициентов в алгебраическом расширении. Но большая часть знаний по этой теме не старше примерно 1965 года и первых систем компьютерной алгебры: [2]

Когда давно известные алгоритмы с конечным шагом были впервые внедрены в компьютеры, они оказались крайне неэффективными. Тот факт, что практически любой одно- или многомерный полином степени до 100 и с коэффициентами умеренного размера (до 100 бит) может быть разложен современными алгоритмами за несколько минут компьютерного времени, показывает, насколько успешно эта проблема решалась в ходе последние пятнадцать лет. (Эрих Кальтофен, 1982)

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

Формулировка вопроса [ править ]

Кольца полиномов над целыми числами или над полем являются уникальными областями факторизации . Это означает, что каждый элемент этих колец является произведением константы и произведением неприводимых многочленов (тех, которые не являются произведением двух непостоянных многочленов). Причем это разложение однозначно с точностью до умножения множителей на обратимые константы.

Факторизация зависит от базового поля. Например, фундаментальная теорема алгебры что каждый многочлен с комплексными коэффициентами имеет комплексные корни, подразумевает, что многочлен с целыми коэффициентами может быть разложен (с помощью алгоритмов поиска корней ) на линейные факторы над комплексным полем C. , которая утверждает , Аналогично, над полем действительных чисел неприводимые множители имеют степень не выше двух, тогда как существуют многочлены любой степени, неприводимые над полем рациональных Q. чисел

Вопрос о полиномиальной факторизации имеет смысл только для коэффициентов вычислимого поля , каждый элемент которого может быть представлен в компьютере и для которого существуют алгоритмы арифметических операций. Однако это не достаточное условие: Фрелих и Шепердсон приводят примеры таких полей, для которых не может существовать алгоритм факторизации. [4]

Поля коэффициентов, для которых известны алгоритмы факторизации, включают поля простых чисел (т. е. поле рационального числа и поля целых чисел по модулю простого числа ) и их конечно порожденные расширения полей . Целочисленные коэффициенты также приемлемы. Классический метод Кронекера интересен лишь с исторической точки зрения; современные алгоритмы действуют последовательно:

  • Бесквадратная факторизация
  • Факторизация по конечным полям

и сокращения:

Примитивная факторизация частей и содержания [ править ]

В этом разделе мы покажем, что факторизация по Q (рациональным числам) и по Z (целым числам), по сути, представляет собой одну и ту же проблему.

Содержимое наибольшим многочлена p Z [ X ], обозначаемое «cont( p )», с точностью до знака является общим делителем его коэффициентов. Примитивной частью p ) является primpart( p = p /cont( p ), который является примитивным полиномом с целыми коэффициентами. Это определяет факторизацию p в произведение целого числа и примитивного полинома. Эта факторизация уникальна с точностью до знака содержания. Обычно принято выбирать знак содержания так, чтобы старший коэффициент примитивной части был положительным.

Например,

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

Любой многочлен q с рациональными коэффициентами можно записать

где p Z [ X ] и c Z : достаточно взять в качестве c кратное всем знаменателям коэффициентов q (например, их произведение) и p = cq . Содержимое q определяется : как

а примитивная часть q это часть p . Что касается многочленов с целыми коэффициентами, это определяет факторизацию в рациональное число и примитивный многочлен с целыми коэффициентами. Эта факторизация также единственна с точностью до выбора знака.

Например,

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

Гаусс доказал, что произведение двух примитивных многочленов также примитивно ( лемма Гаусса ). Это означает, что примитивный многочлен неприводим в рациональных числах тогда и только тогда, когда он неприводим в целых числах. Это также означает, что факторизация по рациональным числам многочлена с рациональными коэффициентами аналогична факторизации по целым числам его примитивной части. Аналогично, факторизация по целым числам многочлена с целыми коэффициентами является продуктом факторизации его примитивной части на факторизацию его содержимого.

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

Все, что предшествует, остается верным, если Z заменить кольцом полиномов над полем F , а Q заменить полем рациональных функций над F от тех же переменных, с той лишь разницей, что «с точностью до знака» необходимо заменить на « с точностью до умножения на обратимую константу в F ". Это сводит факторизацию по чисто трансцендентному полевому расширению F к факторизации многомерных полиномов над F .

Бесквадратная факторизация [ править ]

Если два и более множителя многочлена одинаковы, то многочлен кратен квадрату этого множителя. полинома Кратный множитель также является множителем производной (по любой из переменных, если их несколько).

Для одномерных полиномов несколько факторов эквивалентны множественным корням (в подходящем поле расширения). Для одномерных полиномов по рациональным числам (или, в более общем смысле, по полю с нулевой характеристикой ) алгоритм Юна использует это для эффективной факторизации многочлена на факторы, свободные от квадратов, то есть факторы, которые не кратны квадрату, выполняя последовательность Вычисления НОД, начинающиеся с НОД( f ( x ), f '( x )). Для факторизации исходного полинома достаточно факторизовать каждый бесквадратный фактор. Таким образом, факторизация без квадратов является первым шагом в большинстве алгоритмов полиномиальной факторизации.

Алгоритм Юна распространяет это на случай многомерного многомерного многомерного многочлена, рассматривая многомерный многочлен как одномерный многочлен над кольцом полиномов.

В случае многочлена над конечным полем алгоритм Юна применяется только в том случае, если степень меньше характеристики, поскольку в противном случае производная ненулевого многочлена может быть равна нулю (по полю с p элементами производная многочлен от x п всегда равен нулю). Тем не менее, последовательность вычислений НОД, начиная с полинома и его производной, позволяет вычислить разложение без квадратов; см. Полиномиальную факторизацию по конечным полям#Бесквадратная факторизация .

Классические методы [ править ]

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

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

Получение линейных коэффициентов [ править ]

Все линейные факторы с рациональными коэффициентами можно найти с помощью теста рационального корня . Если полином, подлежащий факторизации, равен , то все возможные линейные факторы имеют вид , где является целочисленным коэффициентом и является целочисленным коэффициентом . Все возможные комбинации целочисленных коэффициентов могут быть проверены на достоверность, и каждый действительный из них может быть вынесен на множители с помощью полиномиального деления в длину . Если исходный полином является произведением факторов, по крайней мере два из которых имеют степень 2 или выше, этот метод обеспечивает только частичную факторизацию; в противном случае факторизация завершена. В частности, если существует ровно один нелинейный фактор, это будет полином, оставшийся после факторизации всех линейных факторов. В случае кубического многочлена , если кубика вообще факторизуема, тест на рациональный корень дает полную факторизацию либо на линейный фактор и неприводимый квадратичный фактор, либо на три линейных фактора.

Метод Кронекера [ править ]

Метод Кронекера направлен на разложение одномерных многочленов с целыми коэффициентами на многочлены с целыми коэффициентами.

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

Если искать все факторы данной степени d , можно рассмотреть ценности, для a , что дает конечное число возможностей для кортежа Каждый имеет конечное число делителей , и каждый -кортеж, где запись является делителем , то есть кортеж вида , дает уникальный многочлен степени не более , который можно вычислить полиномиальной интерполяцией . Каждый из этих полиномов можно проверить на предмет фактора путем полиномиального деления . Поскольку их было конечное число и каждый имеет конечное число делителей, то таких кортежей конечное число. Итак, перебор позволяет найти все сомножители степени не выше d .

Например, рассмотрим

.

Если этот полином факторизуется по Z , то хотя бы один из его факторов должно иметь степень две или меньше, поэтому однозначно определяется тремя значениями . Таким образом, мы вычисляем три значения , и . Если одно из этих значений равно 0, мы имеем линейный коэффициент. Если значения ненулевые, мы можем перечислить возможные факторизации для каждого. Теперь 2 может учитываться только как

1×2, 2×1, (-1)×(-2) или (-2)×(-1).

Следовательно, если существует коэффициент целочисленного полинома второй степени, он должен принимать одно из значений

р (0) = 1, 2, -1 или -2

и аналогично для p (1). Существует восемь факторизаций 6 (по четыре для 1×6 и 2×3), что в общей сложности дает 4×4×8 = 128 возможных троек ( p (0), p (1), p (−1)), половину из которых можно отбросить как негативы другой половины. Таким образом, нам необходимо проверить 64 явных целочисленных полинома. как возможные факторы . Их тщательное тестирование показывает, что

построенный из ( g (0), g (1), g (−1)) = (1,3,1) множителей .

Разделив f ( x ) на p ( x ), получим другой коэффициент , так что . Теперь можно провести рекурсивное тестирование, чтобы найти факторы p ( x ) и q ( x ), в данном случае используя тест на рациональный корень. Оказывается, они оба неприводимые, поэтому неприводимая факторизация f ( x ) такова: [5]

Современные методы [ править ]

Факторинг по конечным полям [ править ]

Факторизация одномерных полиномов по целым числам [ править ]

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

Алгоритм Цассенхауза действует следующим образом. Сначала выберите простое число такое, что образ остается бесквадратным и имеет ту же степень, что и . Тогда фактор . Это дает целочисленные полиномы чей продукт соответствует . Далее примените лифтинг Hensel ; это обновляет таким образом, чтобы их продукт соответствовал , где достаточно велик, чтобы превышает : таким образом каждый соответствует четко определенному целочисленному многочлену. по модулю , полином имеет факторы (до единиц): продукты всех подмножеств . Эти факторы по модулю не обязательно должны соответствовать «истинным» факторам в , но мы можем легко проверить их делением на . Таким образом, все неприводимые истинные факторы можно найти, проверив не более случаев, сведенных к случаях, пропуская дополнения. Если сокращаемо, то число случаев сокращается еще больше за счет удаления тех которые появляются в уже найденном истинном факторе. Алгоритм Цассенхауза быстро обрабатывает каждый случай (каждое подмножество), однако в худшем случае он рассматривает экспоненциальное количество случаев.

Первый алгоритм с полиномиальным временем для факторизации рациональных многочленов был открыт Ленстрой, Ленстрой и Ловасом и представляет собой применение алгоритма сокращения решеточного базиса Ленстры-Ленстры-Ловаса (LLL) ( Lenstra, Lenstra & Lovász 1982 ). Упрощенная версия алгоритма факторизации LLL выглядит следующим образом: вычислить комплексный (или p -адический) корень α многочлена с высокой точностью, затем используйте алгоритм сокращения базиса решетки Ленстры-Ленстры-Ловаса, чтобы найти приближенную линейную зависимость между 1, α , α 2 , а 3 , . . . с целочисленными коэффициентами, которые могут быть точной линейной зависимостью и полиномиальным коэффициентом . Можно определить границу точности, которая гарантирует, что этот метод даст либо фактор, либо доказательство неприводимости. Хотя этот метод завершается за полиномиальное время, на практике он не используется, поскольку решетка имеет большую размерность и огромные элементы, что замедляет вычисления.

Экспоненциальная сложность алгоритма Цассенхауза обусловлена ​​комбинаторной проблемой: как выбрать правильные подмножества . Современные реализации факторинга работают аналогично Цассенхаузу, за исключением того, что комбинаторная задача преобразуется в решеточную задачу, которая затем решается с помощью LLL. [6] В этом подходе LLL используется не для вычисления коэффициентов факторов, а для вычисления векторов с записи в {0,1}, которые кодируют подмножества соответствующие неприводимым истинным факторам.

Трагера ) расширений ( метод Факторизация алгебраических

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

— желаемая факторизация p ( x ), кольцо однозначно разлагается на поля как:

Мы найдем это разложение, не зная факторизации. Во-первых, мы пишем L явно как алгебру над : мы выбираем случайный элемент , который генерирует над с высокой вероятностью по теореме о примитивном элементе . Если это так, мы можем вычислить минимальный полином из над , найдя -линейная связь между 1, a , . . . , а н . Используя алгоритм факторизации для рациональных многочленов, мы факторизуем неприводимые в :

Таким образом мы имеем:

где соответствует . Это должно быть изоморфно предыдущему разложению .

Генераторы L — это x вместе с генераторами над ; записав их в виде многочленов в , мы можем определить вложения и в каждый компонент . Найдя минимальный полином в , мы вычисляем , и, следовательно, фактор над

Численная факторизация [ править ]

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

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

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

Позволять быть многочленом с комплексными коэффициентами с неприводимой факторизацией

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

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

Было разработано и реализовано несколько алгоритмов численной факторизации, что является предметом постоянных исследований. [8] [9]

См. также [ править ]

Библиография [ править ]

  1. ^ FT Шуберт: Об изобретении Divisorum Новые труды Петрополитической академии наук, т. 11, стр. 172–182 (1793)
  2. ^ Кальтофен (1982)
  3. ^ Пример степени 2401, занимающей 7,35 секунды, можно найти в разделе 4 книги: Харт, ван Хой, Новочин: Практический полиномиальный факторинг за полиномиальное время, ISSAC'2011 Proceedings, стр. 163–170 (2011).
  4. ^ Фрелих, А.; Шепердсон, Дж. К. (1955). «О факторизации многочленов за конечное число шагов» . Mathematische Zeitschrift . 62 (1): 331–334. дои : 10.1007/bf01180640 . ISSN   0025-5874 . S2CID   119955899 .
  5. ^ Ван дер Варден , разделы 5.4 и 5.6.
  6. ^ М. ван Хой: Факторизация полиномов и проблема о рюкзаке. Журнал теории чисел, 95, 167–189 (2002).
  7. ^ Руперт, В. (1999). «Приводимость полиномов f(x,y)». Дж. Теория чисел . 77 : 62–70. arXiv : математика/9808021 . дои : 10.1006/jnth.1999.2381 . S2CID   14316123 .

    Шейкер, Х. (2009). «Топология и факторизация полиномов» . Математика. Скан . 104 : 51–59. arXiv : 0704.3363 . doi : 10.7146/math.scand.a-15084 . S2CID   14121840 .

  8. ^ Например: В. Ву и З. Цзэн (2017). «Численная факторизация полиномов». Основы вычислительной математики . 17 : 259–286. arXiv : 2103.04888 . дои : 10.1007/s10208-015-9289-1 . S2CID   254171366 .
  9. ^ Э. Калтофен, Дж. П. Мэй, З. Ян и Л. Чжи (2008). «Приблизительная факторизация многомерных полиномов с использованием разложения по сингулярным значениям» . J. Символические вычисления . 43 (5): 359–376. дои : 10.1016/j.jsc.2007.11.005 . {{cite journal}}: CS1 maint: несколько имен: список авторов ( ссылка )

Дальнейшее чтение [ править ]

  • Кальтофен, Эрих (1990), «Полиномиальная факторизация 1982–1986», у Д.В. Чудновского; Р.Д. Дженкс (ред.), Компьютеры в математике , Конспекты лекций по чистой и прикладной математике, том. 125, Марсель Деккер, Inc., CiteSeerX   10.1.1.68.7461
  • Кальтофен, Эрих (1992), «Полиномиальная факторизация 1987–1991» (PDF) , Proceedings of Latin '92 , Springer Lect. Примечания Вычисл. наук, том. 583, Springer , получено 14 октября 2012 г.
  • Иваньос, Габор; Марек, Карпински; Саксена, Нитин (2009). «Схемы детерминированного полиномиального факторинга». Материалы международного симпозиума по символьным и алгебраическим вычислениям 2009 года . стр. 191–198. arXiv : 0804.1974 . дои : 10.1145/1576702.1576730 . ISBN  9781605586090 . S2CID   15895636 .