WikiDer > Общее числовое поле сито

General number field sieve

В теория чисел, то общее числовое поле сито (GNFS) наиболее эффективный классический алгоритм известен факторинг целых чисел больше, чем 10100. Эвристически, его сложность для факторизации целого числа п (состоящий из ⌊журнал2 п⌋ + 1 бит) имеет вид

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

Принцип сита числового поля (как специального, так и общего) можно понимать как усовершенствование более простого рациональное сито или квадратное сито. При использовании таких алгоритмов множитель большого числа п, нужно искать гладкие числа (т.е. числа с малыми простыми множителями) порядка п1/2. Размер этих значений экспоненциально равен размеру п (см. ниже). Сито общего числового поля, с другой стороны, позволяет искать гладкие числа, которые являются субэкспоненциальными по размеру п. Поскольку эти числа меньше, они с большей вероятностью будут гладкими, чем числа, проверенные в предыдущих алгоритмах. Это ключ к эффективности сита числового поля. Для достижения этого ускорения решето числового поля должно выполнять вычисления и факторизации в числовые поля. Это приводит ко многим довольно сложным аспектам алгоритма по сравнению с более простым рациональным решетом.

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

Числовые поля

Предположим ж это k-степени полином по Q (рациональные числа) и р сложный корень ж. Потом, ж(р) = 0, который можно изменить, чтобы выразить рk как линейная комбинация степеней р меньше, чем k. Это уравнение можно использовать для уменьшения любых степеней р с показателем еk. Например, если ж(Икс) = Икс2 + 1 и р это мнимая единица я, тогда я2 + 1 = 0, или я2 = −1. Это позволяет нам определить сложный продукт:

В общем, это приводит непосредственно к поле алгебраических чисел Q[р], который можно определить как набор комплексных чисел:

Произведение любых двух таких значений можно вычислить, взяв произведение как многочлены, а затем уменьшив любые степени р с показателем еk как описано выше, давая значение в той же форме. Чтобы убедиться, что это поле действительно k-мерный и не коллапсирует до еще меньшего поля, достаточно, чтобы ж является неприводимый многочлен над рациональностью. Аналогичным образом можно определить кольцо целых чисел ОQ[р] как подмножество Q[р] которые являются корнями монические полиномы с целыми коэффициентами. В некоторых случаях это кольцо целых чисел эквивалентно кольцу Z[р]. Однако есть много исключений, например, для Q[d] когда d равен 1 по модулю 4.[2]

Метод

Два многочлены ж(Икс) и г(Икс) малых градусы d и е выбраны, которые имеют целые коэффициенты, которые несводимый над рациональные, и при интерпретации мод п, имеют общее целое число корень м. Оптимальная стратегия выбора этих многочленов не известна; один простой способ - выбрать степень d для полинома рассмотрим разложение п в база м (разрешая цифры от -м и м) для ряда различных м порядка п1/d, и выберите ж(Икс) как многочлен с наименьшими коэффициентами и г(Икс) так как Икс − м.

Рассмотрим кольца числового поля Z[р1] и Z[р2], где р1 и р2 являются корнями многочленов ж и г. поскольку ж имеет степень d с целыми коэффициентами, если а и б целые числа, то так будет бd·ж(а/б), которую мы называем р. Так же, s = бе·г(а/б) является целым числом. Цель состоит в том, чтобы найти целые значения а и б которые одновременно делают р и s гладкий; плавный относительно выбранного базиса простых чисел. Если а и б маленькие, то р и s тоже будет маленьким, размером с м, и у нас больше шансов, что они будут плавными одновременно. Самый известный в настоящее время подход к этому поиску - решетчатое просеивание; Для получения приемлемых урожаев необходимо использовать большую факторную базу.

Имея достаточно таких пар, используя Гауссово исключение, можно получить продукты определенных р и соответствующих s одновременно быть квадратами. Требуется немного более сильное условие - что они нормы квадратов в наших числовых полях, но это условие может быть достигнуто и этим методом. Каждый р это норма а − р1б и, следовательно, произведение соответствующих множителей а − р1б квадрат в Z[р1] с «квадратным корнем», который может быть определен (как произведение известных факторов в Z[р1]) - обычно он будет представлен как иррациональный алгебраическое число. Аналогичным образом произведение факторов а − р2б квадрат в Z[р2] с «квадратным корнем», который также можно вычислить. Следует отметить, что использование исключения Гаусса не дает оптимального времени работы алгоритма. Вместо этого используются алгоритмы решения разреженных матриц, такие как Блок Ланцоша или Блок Видеманн используются.

поскольку м является корнем обоих ж и г мод п, есть гомоморфизмы из колец Z[р1] и Z[р2] на ринг Z/ пZ (целые числа мод п), которая отображает р1 и р2 к м, и эти гомоморфизмы будут отображать каждый «квадратный корень» (обычно не представленный как рациональное число) в его целочисленное представительство. Теперь продукт факторов а − мб мод п может быть получен в виде квадрата двумя способами - по одному для каждого гомоморфизма. Таким образом, можно найти два числа Икс и у, с участием Икс2 − у2 делится на п и снова с вероятностью не менее половины мы получим коэффициент п найдя наибольший общий делитель из п и Икс − у.

Улучшение выбора полинома

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

Один из таких методов был предложен Мерфи и Брентом;[3] они вводят двухчастную оценку для полиномов, основанную на наличии корней по модулю малых простых чисел и на среднем значении, которое полином занимает площадь просеивания.

Лучшие зарегистрированные результаты[4] были достигнуты методом Торстен Кляйнджунг,[5] который позволяет г(Икс) = топор + б, и поиск по а состоит из малых простых множителей, сравнимых с 1 по модулю 2d и по старшим коэффициентам ж которые делятся на 60.

Реализации

Некоторые реализации ориентированы на определенный меньший класс чисел. Они известны как сито со специальным номером методы, такие как используемые в Каннингем проект. Проект под названием NFSNET работал с 2002 года.[6] по крайней мере до 2007 года. Он использовал добровольные распределенные вычисления на Интернет.[7]Пол Лейланд из объединенное Королевство и Ричард Вакербарт из Техаса.[8]

До 2007 года реализация золотого стандарта представляла собой набор программного обеспечения, разработанного и распространяемого компанией CWI в Нидерландах, который был доступен только по относительно ограниченной лицензии.[нужна цитата] В 2007, Джейсон Пападопулос разработали более быструю реализацию окончательной обработки как часть msieve, которая является общественным достоянием. Обе реализации имеют возможность распределяться между несколькими узлами в кластере с достаточно быстрым межсоединением.

Полиномиальный выбор обычно выполняется GPL программное обеспечение, написанное Kleinjung или msieve, и программное обеспечение решетчатого просеивания по GPL, написанное Franke и Kleinjung; они распространяются в GGNFS.

Смотрите также

Заметки

  1. ^ Померанс, Карл (Декабрь 1996 г.). «Сказка о двух решетах» (PDF). Уведомления AMS. 43 (12). С. 1473–1485.
  2. ^ Рибенбойм, Пауло (1972). Алгебраические числа. Wiley-Interscience. ISBN 978-0-471-71804-8.
  3. ^ Мерфи, B .; Брент, Р. П. (1998), «О квадратичных полиномах для сита числового поля», Австралийские коммуникации в области компьютерных наук, 20: 199–213
  4. ^ Франке, Йенс (2006), На проектах RSA 200 и более крупных (PDF)
  5. ^ Кляйнджунг, Торстен (октябрь 2006 г.). «О выборе полинома для сита общего числового поля» (PDF). Математика вычислений. 75 (256): 2037–2047. Дои:10.1090 / S0025-5718-06-01870-9. Получено 2007-12-13.
  6. ^ Пол Лейланд (12 декабря 2003 г.). «NFSNET: первый год». Презентация на семинаре EIDMA-CWI по факторингу больших чисел. Получено 9 августа, 2011.
  7. ^ «Добро пожаловать в NFSNET». 23 апреля 2007 г. Архивировано с оригинал 22 октября 2007 г.. Получено 9 августа, 2011.
  8. ^ «О NFSNET». Архивировано из оригинал 9 мая 2008 г.. Получено 9 августа, 2011.

использованная литература