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

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

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

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

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

ИсторияПравить

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

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

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

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

f ( x , y ) = a x 2 + b x y + c y 2 = ( x y ) ( a b 0 c ) ( x y ) .  

В методе Шенкса используются только неопределенные формы. Под Δ   будем понимать дискриминант квадратичной формы. Будем говорить, что квадратичная форма f   представляет целое число m Z  , если существуют такие целые числа x 0 , y 0  , что выполнено равенство: f ( x 0 , y 0 ) = a x 0 2 + b x 0 y 0 + c y 0 2  . В случае если выполнено равенство gcd ( x 0 , y 0 ) = 1  , то представление называется примитивным.

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

ρ ( a , b , c ) = ( c , r ( b , c ) , r ( b , c ) 2 Δ 4 c )  ,где r ( b , c )   — определено, как целое число r  , однозначно определяемое условиями: [8]
  1. r + b 0 mod ( 2 c )  
  2. | c | < r < | c | , i f Δ < | c |  
  3. Δ 2 | c | < r < Δ , i f | c | < Δ  

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

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

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

Теорема.

Каждая форма f   эквивалентна некоторой редуцированной форме, и любая редуцированная форма для f   равна ρ k ( f )   для некоторого положительного k  . Если f   - редуцирована, то ρ ( f )   также редуцирована.

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

ВариантыПравить

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

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

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

Оценка сходимостиПравить

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

C 2 w 2 n 1 / 4 ,  

где C   — константа, равная примерно 2,4 для первого цикла итераций.[10]

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

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

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

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

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

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

Теперь опишем алгоритм для реализации на компьютере.[11] Отметим, что хотя теоретическая часть алгоритма связана с эквивалентными преобразованиями квадратичных форм, практическая часть алгоритма выполняется на основе вычисления коэффициентов P , Q , r   метода непрерывных дробей без обращения к формам. Каждая итерация цикла соответствует одной операции применения оператора редукции к соответствующей форме. При необходимости можно восстановить соответствующие формы f k = ( a k , b k , c k )   по формулам: ( a k , b k , c k ) = ( ( 1 ) k 1 Q k 1 , 2 P k , ( 1 ) k Q k )  


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

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

  • Инициализация алгоритма.
    • Проверим, является ли n   полным квадратом. Если да, то вычислим d = n ,   и завершим вычисление. Иначе, перейдем к следующему пункту.
    • Если n 1 ( m o d 4 ) ,   тогда заменим n   на 2 n .   Определим D = 4 n ,   q 0 = b D c .  
    • Определим исходные значения параметров P , Q , r :  

P 0 = 0 ,   Q 0 = 1 ,   r 0 = P 1 = b n c ,   Q 1 = n r 0 2 , r 1 = b 2 r 0 / Q 1 c .  

  • Первый цикл
    • P k = r k 1 Q k 1 P k 1 ,   Q k = Q k 2 + ( P k 1 P k ) r k 1 , r k = b P k + b n c Q k c ,   k 2.  
    • Продолжаем вычисления коэффициентов P k ,   Q k   r k   до тех пор, пока не найдем Q_k, являющееся полным квадратом. Это должно произойти при некотором k .   Пусть Q k = d 2   для целого d > 0.   Перейдем к следующему циклу.
  • Второй цикл.
    • начнем цикл вычислений новых параметров P j ,   Q j ,   r j .   Формулы для реализации второго цикла останутся такими же, как раньше. Изменятся только начальные значения параметров P ,   Q ,   r :  
    • P 0 = P k ,   Q 0 = d ,   r 0 = b P 0 + b n c Q 0 c ,   P 1 = r 0 Q 0 P 0 ,   Q 1 = ( N P 1 2 ) / Q 0 .  
    • Вычисление следует продолжать, пока два подряд идущих значения P j ,   P j + 1   не окажутся равными. Тогда, значение Q j   даст искомый делитель числа n .   Описание алгоритма Шенкса закончено.

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

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

Применим данный метод для факторизации числа N = 22117019  [8]

Цикл №1
F i  
i   ( 1 ) i 1 Q i 1   2 P i   ( 1 ) i Q i  
0   8215   2 4702   1  
1   1   2 4702   8215  
2   8215   2 3513   1190  
3   1190   2 3627   7531  
4   7531   2 3904   913  
5   913   2 4313   3850  
6   3850   2 3387   2765  
7   2765   2 2143   6338  
8   6338   2 4195   713  
9   713   2 4361   4346  
10   4346   2 4331   773  
11   773   2 4172   6095  
12   6095   2 1923   3022  
13   3022   2 4121   1699  
14   1699   2 4374   1757  
15   1757   2 4411   1514  
16   1514   2 4673   185  
17   185   2 4577   6314  
18   6314   2 1737   3025  
Цикл №2
G i  
i   ( 1 ) i 1 Q i 1   2 P i   ( 1 ) i Q i  
0   55   2 4652   8653  
1   8653   2 4001   706  
2   706   2 4471   3013  
3   3013   2 4568   415  
4   415   2 4562   3145  
5   3145   2 1728   6083  
6   6083   2 4355   518  
7   518   2 4451   4451  
8   4451   2 4451   518  

Теперь можно увидеть во втором цикле, что P 7 = P 8 .   Следовательно число N = 22117019 = 4451 4969.  

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

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

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

  1. Подробнее об истории этого метода и о его связи с методом непрерывных дробей можно узнать из статьи Говера и Вагстаффа (J. Gover, S.S. Wagstaff).
  2. Yike Guo, 1999, High Performance Data Mining: Scaling Algorithms, Applications and Systems..
  3. 1 2 Hans Riesel, 1994, Prime Numbers and Computer Methods for Factorization. Birkhauser, second edition.
  4. Henri Cohen, 1996, A Course in Computational Algebraic Number Theory..
  5. D. A. Buell, 1989, Binary Quadratic Forms.
  6. Samuel S. Wagstaff Jr., 2003, Cryptanalysis of Number Theoretic Ciphers.
  7. Например в работе SQUARE FORM FACTORIZATION JASON E. GOWER AND SAMUEL S. WAGSTAFF, JR. Assumption 4.12. на странице 20, Assumption 4.5 на стр 16, так же при доказательстве теорем о сложности алгоритма и т. д.
  8. 1 2 3 4 5 SQUARE FORM FACTORIZATION, 2003, SQUARE FORM FACTORIZATION.
  9. 1 2 Василенко, 2003, Теоретико-числовые алгоритмы в криптографии.
  10. Ишмухаметов, 2011, Методы факторизации натуральных чисел: Учебное пособие.
  11. 1 2 Ишмухаметов, 2011, Методы факторизации натуральных чисел: Учебное пособие стр. 79-80.

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

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