Algoritmul lui Dixon

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 28 mai 2021; verificările necesită 4 modificări .

Algoritmul lui Dixon  este un algoritm de factorizare care folosește practic ideea lui Legendre , care constă în găsirea unei perechi de numere întregi și astfel încât și

Metoda lui Dixon este o generalizare a metodei lui Fermat .

Istoric [1]

În anii 1920, Maurice Krajczyk (1882-1957), generalizând teorema lui Fermat, a sugerat în loc de perechi de numere care să satisfacă ecuația , să caute perechi de numere care să satisfacă o ecuație mai generală . Krajczyk a observat câteva fapte utile pentru rezolvare. În 1981, John Dickson a publicat o metodă de factorizare pe care a dezvoltat-o ​​folosind ideile lui Kraitzik și a calculat complexitatea ei de calcul. [2]

Descrierea algoritmului [3]

  1. Faceți o bază de factori formată din toate numerele prime , unde .
  2. Alege la întâmplare
  3. Calculați .
  4. Verificați numărul pentru netezime pe divizii de încercare. Dacă este un număr neted , adică , ar trebui să vă amintiți vectorii și : .
  5. Repetați procedura de generare a numerelor până când sunt găsite numere netede .
  6. Folosind metoda Gauss, găsiți o relație liniară între vectori : si pune: .
  7. Verificați . Dacă da, atunci repetați procedura de generare. Dacă nu, atunci se găsește o descompunere non-trivială:
Dovada corectitudinii [4]
  1. Pentru ca formula să fie corectă, suma trebuie să fie pară. Să demonstrăm:
  2. rezultă din faptul că:

Exemplu

Să factorizăm numărul .

Toate numerele găsite cu vectorii corespunzători sunt scrise în tabel.

337 23814 unu 5 0 2 0 0
430 5390 unu 0 unu 2 unu 0
519 96 5 unu 0 0 0 0
600 980 2 0 unu 2 0 0
670 125 0 0 3 0 0 0
817 39204 2 patru 0 0 2 0
860 21560 3 0 unu 2 unu 0

Rezolvând un sistem liniar de ecuații, obținem că . Apoi

Prin urmare,

.

S-a dovedit descompunere

Complexitatea computațională [5]

Se notează cu numărul de numere întregi astfel încât și este un număr neted, unde . Din teorema lui de Bruijn-Erdős , unde . Aceasta înseamnă că fiecare număr neted va veni, în medie, prin încercări. Pentru a verifica dacă un număr este neted, trebuie efectuate împărțiri . Conform algoritmului, este necesar să se găsească un număr neted. Deci complexitatea de calcul a găsirii numerelor

.

Complexitatea computațională a metodei Gauss din ecuații

.

Prin urmare, complexitatea totală a algoritmului lui Dixon

.

Ținând cont de faptul că numărul de numere prime este mai mic decât este estimat prin formula și că , după simplificare, obținem

.

este ales în așa fel încât să fie minim. Apoi înlocuind , obținem

.

Estimarea făcută de Pomeranz pe baza unei teoreme mai riguroase decât teorema de Bruijn-Erdös [6] dă , în timp ce estimarea originală a complexității lui Dixon dă .

Strategii suplimentare [7]

Luați în considerare strategii suplimentare care accelerează funcționarea algoritmului.

Strategia LP

Strategia LP (Large Prime Variation) folosește numere prime mari pentru a accelera procedura de generare a numerelor .

Algoritm

Numărul găsit la articolul 4 să nu fie neted. Apoi poate fi reprezentat acolo unde nu este divizibil cu numere din baza factorilor. Este evident că . Dacă în plus , atunci s este prim și îl includem în baza factorilor. Acest lucru vă permite să găsiți numere netede suplimentare, dar crește numărul de numere netede necesare cu 1. Pentru a reveni la baza factorilor inițiali după pasul 5, procedați în felul următor. Dacă se găsește un singur număr, a cărui extindere este inclusă într-un grad impar, atunci acest număr trebuie șters din listă și șters din baza factorilor. Dacă, de exemplu, există două astfel de numere și , atunci acestea trebuie tăiate și numărul adăugat . Indicatorul va intra în expansiune într-un grad egal și va fi absent în sistemul de ecuații liniare.

Variația strategiei

Este posibil să se utilizeze strategia LP cu mai multe numere prime care nu sunt cuprinse în baza factorilor. În acest caz , teoria grafurilor este folosită pentru a exclude numere prime suplimentare .

Complexitate computațională

Estimarea teoretică a complexității algoritmului folosind strategia LP, realizată de Pomerants, nu diferă de estimarea versiunii originale a algoritmului Dixon:

.

Strategia EAS

Strategia EAS (pauza timpurie) elimină unele dintre considerente prin nefinalizarea testului de netezime.

Algoritm

se aleg cele fixe . În algoritmul lui Dixon, este factorizat prin diviziuni de probă cu . În strategie, se alege EAS și numărul este mai întâi factorizat prin diviziunile de probă cu , iar dacă după descompunere partea necompusă rămâne mai mare decât , atunci cea dată este aruncată.

Variația strategiei

Este posibil să folosiți o strategie EAS cu pauze multiple, adică cu o secvență ascendentă și o secvență descrescătoare .

Complexitate computațională

Algoritmul lui Dixon care utilizează strategia EAS pentru este estimat

.

PS Strategy

Strategia PS folosește algoritmul Pollard-Strassen , care pentru și găsește divizorul prim minim al numărului de mcd-uri în . [opt]

Algoritm

Fix este selectat . În algoritmul lui Dixon, este factorizat prin diviziuni de probă cu . În strategia PS, . noi credem . Aplicăm algoritmul Pollard-Strassen, alegând pentru partea necompusă, obținem expansiunea .

Complexitate computațională

Complexitatea algoritmului lui Dixon cu strategia PS este minimă la și este egală cu

.

Note

  1. Ișmukhametov, 2011 , p. 115.
  2. Dixon, J.D.Factorizarea rapidă asimptotic a numerelor întregi  // Math . Comp. : jurnal. - 1981. - Vol. 36 , nr. 153 . - P. 255-260 . - doi : 10.1090/S0025-5718-1981-0595059-1 . — .
  3. Cheryomushkin, 2001 , p. 77-79.
  4. Vasilenko, 2003 , p. 79.
  5. Cheryomushkin, 2001 , p. 79-80.
  6. C. Pomerance. Analiza și compararea unor algoritmi de factoring întregi  //  HW Lenstra și R. Tijdeman, Eds., Computational Methods in Number Theory, Math Center Tracts —Part 1. Math Centrum, Amsterdam : Articolul. - 1982. - S. 89-139 . Arhivat din original pe 6 noiembrie 2021.
  7. Vasilenko, 2003 , p. 81-83.
  8. Cheryomushkin, 2001 , p. 74-75.

Literatură