Метод квадратичных форм Шенкса

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод квадратичных форм Шенкса — метод факторизации целых чисел, основанный на применении квадратичных форм, разработанный Даниелем Шенксом[1] в 1975 году, как развитие метода факторизации Ферма.

Для 32-разрядных компьютеров алгоритмы, основанные на данном методе, являются безусловными лидерами среди алгоритмов факторизации для чисел от 1010 до 1018 и, вероятно, таковыми останутся.Шаблон:Sfn Данный алгоритм может разделить практически любое составное 18-значное число менее чем за миллисекунду. Алгоритм является чрезвычайно простым, красивым и эффективным. Кроме того, методы, базирующиеся на данном алгоритме, используются как вспомогательные при разложении делителей больших чисел типа чисел Ферма.

История

Другое название алгоритма — SQUFOF (акроним от английского — SQUare FOrm Factorization), что означает факторизация методом квадратичных форм. Данный подход был достаточно успешным на протяжении многих лет и, как следствие, довольно много различных модификаций и реализаций можно найти на эту тему в литературе.Шаблон:Sfn Большинство методов являются сложными и запутанными, особенно в том случае, когда необходима реализация метода на компьютере. В результате чего, многие варианты алгоритмов не пригодны для реализации. Однако в 1975 году Даниель Шенкс предложил создать алгоритм, который можно реализовать и использовать не только на компьютере, но и на простом мобильном телефоне.

Хотя Шенкс описал другие алгоритмы для факторизации целых чисел, по SQUFOF он ничего не опубликовал. Он предоставил лекции по данной теме и объяснил основную суть своего метода довольно небольшому кругу людей. Некоторые работы других ученых Шаблон:SfnШаблон:SfnШаблон:SfnШаблон:Sfn обсуждали алгоритм, но ни одна не содержит подробный анализ. Также в своем методе Шенкс делает довольно большое количество предположений[2], которые остались без доказательства. В работеШаблон:Sfn представлены результаты некоторых экспериментов, которые свидетельствуют, что многие предположения справедливы. В итоге, основываясь на этих упрощающих предположениях, Шенксу удалось создать SQUFOF.

Вспомогательные определения

Для того чтобы понять, как реализован этот алгоритм, необходимо узнать минимальные сведения о математических объектах, используемых в данном методе, а именно о квадратичных формах. Бинарной квадратичной формой называется полином от двух переменных x и y:

f(x,y)=ax2+bxy+cy2=(xy)(ab0c)(xy).

В методе Шенкса используются только неопределенные формы. Под Δ будем понимать дискриминант квадратичной формы. Будем говорить, что квадратичная форма f представляет целое число m, если существуют такие целые числа x0,y0, что выполнено равенство: f(x0,y0)=ax02+bx0y0+cy02. В случае если выполнено равенство gcd(x0,y0)=1, то представление называется примитивным.

Для любой неопределенной квадратичной формы f=(a,b,c) можно определить оператор редукции как:

ρ(a,b,c)=(c,r(b,c),r(b,c)2Δ4c),где r(b,c) — определено, как целое число r, однозначно определяемое условиями: Шаблон:Sfn
  1. r+b0mod(2c)
  2. |c|<r<|c|,ifΔ<|c|
  3. Δ2|c|<r<Δ,if|c|<Δ

Результат применения оператора ρ к форме f nраз записывается в виде ρn(f). Также определен оператор ρ1 как:

ρ1(a,b,c)=(r(b,c)2Δ4c,r(b,c),c), где r(b,c) определен так же как и в прошлом случае. Заметим, что в результате применения операторов ρ1 и ρ к квадратичной форме f=(a,b,c) с дискриминантом Δ, полученные квадратичные формы так же будут иметь дискриминант Δ.

Метод получения редуцированной формы, эквивалентной данной, был найден еще Карлом Гауссом и состоит в последовательном применении оператора редукции g=ρ(f), пока f не станет редуцированной.

Теорема.

Шаблон:Теорема

Так же для ясности понимания всех операций с квадратичными формами нам понадобится понятия квадратных, смежных и неоднозначных квадратичных форм

Варианты

Идея метода Шенкса состоит в сопоставлении числу n, которое надо разложить, квадратичной бинарной формы f с дискриминантом D=4n, с которой потом выполняется серия эквивалентных преобразований и переход от формы f к неоднозначной форме (a,b,c). Тогда, gcd(a,b) будет являться делителем n.

Первый вариант работает с положительно определёнными бинарными квадратичными формами заданного отрицательного дискриминанта и в группе классов форм он находит амбигову форму, которая даёт разложение дискриминанта на множители. Сложность первого варианта составляет O(n1/5+ε) при условии истинности расширенной гипотезы Римана.Шаблон:Sfn

Второй вариант это SQUFOF, он использует группу классов бинарных квадратичных форм с положительным дискриминантом. В нём также происходит нахождение амбиговой формы и разложение дискриминанта на множители. Сложность SQUFOF составляет O(n1/4+ε) арифметических операций; при этом алгоритм работает с целыми числами, не превосходящими 2n. Среди алгоритмов факторизации с экспоненциальной сложностью SQUFOF считается одним из самых эффективных.Шаблон:Sfn

Оценка сходимости

Согласно расчетам, выполненным самим Шенксом, число итераций первого и второго циклов алгоритма определяется числом w сомножителей числа n и равна примерно:

C2w2n1/4,

где C — константа, равная примерно 2,4 для первого цикла итераций.Шаблон:Sfn

Описание алгоритма

Более подробно алгоритм может быть записан в следующем виде:Шаблон:Sfn

Вход: Нечетное составное число n, которое требуется факторизовать. Если nmod4=1, заменим n на 2n. Теперь nmod4=2;3. Последнее свойство нужно, чтобы определитель квадратичной формы был фундаментальным, что обеспечивает сходимость метода.

Выход: Нетривиальный делитель n.

1. Определим исходную квадратичную форму f=(1,2b,b2D), с дискриминантом D=4n, где b=𝒷n𝒸.
2. Выполним цикл редуцирований f=ρ(f), пока форма f не станет квадратной.
3. Вычислим квадратный корень из f:g=(a,b,c)=f1/2
4. Выполним цикл редуцирований p=ρ(g), пока значение второго коэффициента не стабилизируется bi+1=bi. Число итераций m этого цикла должно быть примерно равно половине от числа итераций первого цикла. Последнее значение a даст делитель числа n (возможно тривиальный).

Реализация алгоритма

Теперь опишем алгоритм для реализации на компьютере.Шаблон:Sfn Отметим, что хотя теоретическая часть алгоритма связана с эквивалентными преобразованиями квадратичных форм, практическая часть алгоритма выполняется на основе вычисления коэффициентов P,Q,r метода непрерывных дробей без обращения к формам. Каждая итерация цикла соответствует одной операции применения оператора редукции к соответствующей форме. При необходимости можно восстановить соответствующие формы fk=(ak,bk,ck) по формулам: (ak,bk,ck)=((1)k1Qk1,2Pk,(1)kQk)


Вход: Составное число n

Выход: Нетривиальный делитель n

  • Инициализация алгоритма.
    • Проверим, является ли n полным квадратом. Если да, то вычислим d=n, и завершим вычисление. Иначе, перейдем к следующему пункту.
    • Если n1(mod4), тогда заменим n на 2n. Определим D=4n,q0=𝒷D𝒸.
    • Определим исходные значения параметров P,Q,r:

P0=0,Q0=1,r0=P1=𝒷n𝒸,Q1=nr02,r1=𝒷2r0/Q1𝒸.

  • Первый цикл
    • Pk=rk1Qk1Pk1,Qk=Qk2+(Pk1Pk)rk1,rk=𝒷Pk+𝒷n𝒸Qk𝒸,k2.
    • Продолжаем вычисления коэффициентов Pk,Qkrk до тех пор, пока не найдем Q_k, являющееся полным квадратом. Это должно произойти при некотором k. Пусть Qk=d2 для целого d>0. Перейдем к следующему циклу.
  • Второй цикл.
    • начнем цикл вычислений новых параметров Pj,Qj,rj. Формулы для реализации второго цикла останутся такими же, как раньше. Изменятся только начальные значения параметров P,Q,r:
    • P0=Pk,Q0=d,r0=𝒷P0+𝒷n𝒸Q0𝒸,P1=r0Q0P0,Q1=(NP12)/Q0.
    • Вычисление следует продолжать, пока два подряд идущих значения Pj,Pj+1 не окажутся равными. Тогда, значение Qj даст искомый делитель числа n. Описание алгоритма Шенкса закончено.

Как уже было упомянуто, это не единственная реализация этого алгоритма. Так же реализации алгоритма можно найти здесьШаблон:Sfn

Пример факторизации числа

Применим данный метод для факторизации числа N=22117019Шаблон:Sfn

Цикл №1
Fi
i (1)i1Qi1 2Pi (1)iQi
0 8215 24702 1
1 1 24702 8215
2 8215 23513 1190
3 1190 23627 7531
4 7531 23904 913
5 913 24313 3850
6 3850 23387 2765
7 2765 22143 6338
8 6338 24195 713
9 713 24361 4346
10 4346 24331 773
11 773 24172 6095
12 6095 21923 3022
13 3022 24121 1699
14 1699 24374 1757
15 1757 24411 1514
16 1514 24673 185
17 185 24577 6314
18 6314 21737 3025
Цикл №2
Gi
i (1)i1Qi1 2Pi (1)iQi
0 55 24652 8653
1 8653 24001 706
2 706 24471 3013
3 3013 24568 415
4 415 24562 3145
5 3145 21728 6083
6 6083 24355 518
7 518 24451 4451
8 4451 24451 518

Теперь можно увидеть во втором цикле, что P7=P8. Следовательно число N=22117019=44514969.

Применения

Данный алгоритм используется во многих реализациях NFS и QS для факторизации небольших вспомогательных чисел, возникающих при факторизации большого целого числа. В любом случае, SQUFOF используется в основном как вспомогательный алгоритм в более мощных алгоритмах факторизации и, следовательно, SQUFOF как правило, будет использоваться для факторизации чисел скромных размеров, не имеющих малых простых делителей. Такие числа, как правило, являются произведением небольшого числа различных простых чисел.Шаблон:Sfn.

Примечания

Шаблон:Примечания

Литература

См. также

Шаблон:Теоретико-числовые алгоритмы

  1. Подробнее об истории этого метода и о его связи с методом непрерывных дробей можно узнать из статьи Говера и Вагстаффа (J. Gover, S.S. Wagstaff).
  2. Например в работе SQUARE FORM FACTORIZATION JASON E. GOWER AND SAMUEL S. WAGSTAFF, JR. Assumption 4.12. на странице 20, Assumption 4.5 на стр 16, также при доказательстве теорем о сложности алгоритма и т. д.