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

Матеріал з testwiki
Версія від 04:54, 12 квітня 2024, створена imported>Tolsai (growthexperiments-addlink-summary-summary:3|0|0)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Шаблон:Помилки

Метод квадратичних форм Шенкса — метод факторизації цілих чисел із застосуванням квадратичних форм, розроблений Даніелем Шенксом (Шаблон:Lang-en) 1975 року на основі Шаблон:Нп.

На початку XX-го сторіччя програми для 32-розрядних комп'ютерів, засновані на цьому методі, були безумовними лідерами для факторизації чисел від 1010 до 1018 Шаблон:Sfn. Цей алгоритм може розкласти практично будь-яке складене 18-значне число швидше, ніж за мілісекунду. Методи, що базуються на цьому алгоритмі, застосовуються для розкладання на дільники великих чисел, типу чисел Ферма.

Історія

Шаблон:Джерело?

Хоча Шенкс описав інші алгоритми для факторизації цілих чисел, по SQUFOF він нічого не опублікував. Він прочитав лекції з цієї теми і пояснив основну суть свого методу досить невеликому колу людей. Після смерті Шенкса в його паперах знайшли незавершену чернетку з описом методу SQUFOF. Її оцифрували й опублікували 2003 рокуШаблон:Sfn. Інші дослідникиШаблон:SfnШаблон:SfnШаблон:SfnШаблон:Sfn обговорювали алгоритм. У своєму методі Шенкс зробив деяку кількість припущень[Прим. 1], які залишилися без доведення. Утім, результати експериментів свідчать, що більшість припущень справджуютьсяШаблон:Sfn. У підсумку, ґрунтуючись на цих спрощених припущеннях, Шенксу вдалося створити SQUFOF.

Ідея методу

Ідея методів Шенкса полягає в зіставленні числу n, яке треба розкласти, квадратичної форми від двох змінних f із дискримінантом D=4n, із якою потім виконується серія еквівалентних перетворень і перехід від форми f до неоднозначної форми (a,b,c). Тоді, gcd(a,b) буде дільником n.

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

Другий варіант — це власне SQUFOF (від Шаблон:Lang-en), у якому застосовується група квадратичних форм від двох змінних із позитивним дискримінантом. У ньому також відбувається пошук неоднозначної форми й розкладання дискримінанту на множники. Складність SQUFOF становить O(n1/4+ε) арифметичних операцій. Особливістю алгоритму є те, що він працює з цілими числами, які не перевищують 2n. На початку XX-го сторіччя SQUFOF вважався одним із найефективніших серед алгоритмів факторизації з експоненційною складністюШаблон:Sfn.

Допоміжні визначення

Квадратичною формою двох змінних називають однорідний поліном від двох змінних x і y:

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

У методі SQUFOF застосовуються тільки невизначені форми. Під Δ розуміється дискримінант квадратичної форми b24ac. Квадратична форма f представляє ціле число m, якщо існують такі цілі числа x0,y0, що виконується рівність: f(x0,y0)=ax02+bx0y0+cy02=m. У разі, якщо в представленні gcd(x0,y0)=1, то таке представлення називають примітивним.

Форму f=(a,b,c) називають скороченою (редукованою), якщо |Δ2|a||<b<Δ.

Для будь-якої невизначеної квадратичної форми 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 не стане скороченою.

Теорема.

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

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

Неоднозначними (Шаблон:Lang-en) називають форми вигляду (k,kn,c). Така неоднозначна форма існує для кожного дільника k дискримінанту ∆Шаблон: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 (можливо, тривіальний).

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

Хоча теоретична частина алгоритму пов'язана з еквівалентними перетвореннями квадратичних форм, практична частина виконується на основі обчислення коефіцієнтів P,Q,r Шаблон:Нп без звертання до форм. Кожна ітерація циклу відповідає одній операції застосування оператора редукції до відповідної формиШаблон:Sfn. За потреби можна відновити відповідні форми 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+nQk,k2.
    • Продовжуємо обчислення коефіцієнтів Pk,Qkrk доти, доки не знайдемо Qk, що є повним квадратом. Це має статися за деякого k. Нехай Qk=d2 для цілого d>0. Перейдемо до наступного циклу.
  • Другий цикл.
    • почнемо цикл обчислень нових параметрів Pj,Qj,rj. Формули для реалізації другого циклу залишаться такими ж, як раніше. Зміняться лише початкові значення параметрів P,Q,r:
    • P0=Pk,Q0=d,r0=P0+nQ0,P1=r0Q0P0,Q1=(NP12)/Q0.
    • Обчислення слід продовжувати, поки два поспіль значення Pj,Pj+1 не стануть рівними. Тоді, значення Qj дасть шуканий дільник числа n.

Оцінка збіжності

Згідно з розрахунками, виконаними самим Шенксом, кількість ітерацій першого й другого циклів алгоритму визначається кількістю множників w числа n і дорівнює приблизно:

C2w2n1/4,

де C — константа, що дорівнює приблизно 2,4 для першого циклу ітерацій.Шаблон: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(=552)
Цикл №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. Отже, 4451 є дільником числа N=22117019. Далі обчислюємо другий дільник: 22117019÷4451=4969
22117019=44514969.

Застосування

Алгоритм застосовується в багатьох реалізаціях решета числового поля і квадратичного решета для факторизації невеликих чисел, що виникають під час факторизації великого цілого числа. У будь-якому випадку, SQUFOF застосовується в основному як допоміжний алгоритм у потужніших методах для факторизації чисел невеликого розміру, які не мають малих простих дільників. Як правило, такі числа є добутком кількох різних простих чиселШаблон:Sfn.

Примітки

Шаблон:Reflist

Джерела

Шаблон:Reflist

Література

Шаблон:Алгоритми теорії чисел
Помилка цитування: Теги <ref> існують для групи під назвою «Прим.», але не знайдено відповідного тегу <references group="Прим."/>