Lehmanns metode

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 6. oktober 2016; checks kræver 45 redigeringer .

Lehmans algoritme (eller Sherman Lehmans algoritme ) faktoriserer deterministisk et givet naturligt tal i aritmetiske operationer. Algoritmen blev første gang foreslået af den amerikanske matematiker Sherman Lehman i 1974 [1] . Denne algoritme var den første deterministiske heltalsfaktoriseringsalgoritme med et estimat mindre end . I øjeblikket er det af rent historisk interesse og bruges som regel ikke i praksis. [2]

Lehmanns metode

Lehmanns metode udvikler ideerne om Fermats faktoriseringsmetode og leder efter divisorer af tallet ved hjælp af lighed for et eller andet heltal . Den er baseret på følgende teorem. [2]


Udtalelse af sætningen [1]

Antag, at det  er et positivt ulige heltal og  er et heltal, således at . Hvis , hvor og er enkle og

så er der ikke-negative heltal , og , sådan at

, , , hvis ulige,

og

.

Hvis  er prime, sådanne tal , og eksisterer ikke.

Ændret Lehmanns metode

Udtalelse af sætningen

Lad et sammensat tal, der er produktet af to ulige coprimtal, der opfylder ulighederne . Så er der naturlige tal og sådan noget

1. Ligheden holder for , 2. Uligheden holder . [2] For at bevise denne sætning har vi brug for følgende Lemma.

Lemma

Lad sætningens betingelser være opfyldt. Så er der naturlige tal sådan, at og .

[3] Bevis for Lemma

Hvis det vil sige , så gælder sætningens påstand for . Dernæst vil vi tælle .

Lad os udvide det til en fortsat brøk . Vi betegner th konvergent med k . Derefter

... _ _

fordi . Vi vælger det første tal sådan

, .

Et sådant tal er sikker på at blive fundet, da den sidste passende brøk har en nævner . Lad os bevise det og tilfredsstille lemmaets påstand. Det er åbenlyst . Yderligere,

egenskaber af egnede fraktioner.

Lad os overveje sagen først . I dette tilfælde

,

Q.E.D.

Overvej nu sagen . Så vender vi ulighederne , hvorfra . Derfor, ved egenskaberne af fortsatte fraktioner, ulighederne

. Herfra

Lemmaet er bevist. [3]

Bevis for sætningen

Lad og være ulige delere af . Lad og , hvor og tilfredsstille Lemma's udsagn, så gælder ligheden , hvor . Ved Lemma opfylder et heltal uligheden . Følgelig er den første påstand i sætningen opfyldt.

For at bevise den anden påstand sætter vi , Siden , derefter og . Ved at bruge det øverste estimat for får vi . Hvorfra følger det . Sætningen er blevet bevist. [fire]

Algoritme (ændret)

Lad ulige og .

Trin 1. For at kontrollere tilstanden . Hvis det på dette trin ikke var muligt at faktorisere, så gå til trin 2.

Trin 2. Hvis divisoren i trin 1 ikke findes og  er sammensat , så , hvor  er primtal , og . Så kontroller for alle og alle , om tallet er kvadratet af et naturligt tal. Hvis det er, sammenlignes der for og :

eller .

I dette tilfælde kontrolleres uligheden for . Hvis det er opfyldt, så  er en faktorisering i to faktorer.

Hvis algoritmen ikke har fundet en dekomponering i to faktorer, så  er det et primtal. [5]

Denne algoritme kontrollerer først, om den har primdivisorer, der ikke overstiger , og arrangerer derefter en søgning efter værdier og for at kontrollere gennemførligheden af ​​følgende sætning. Hvis de ønskede værdier og ikke findes, får vi, at tallet er primtal. Således kan vi betragte denne algoritme som en test af et tal for enkelhed [6]

Møjsommelighed

Beregning af afhængigheden af ​​størrelsen af ​​det faktoriserede tal

Det første trin er at udføre divisionsoperationer for at finde små divisorer af tallet .

Kompleksiteten af ​​det andet trin estimeres i operationerne med at teste tallet for at se, om det er et perfekt kvadrat. Kompleksiteten af ​​den anden fase estimeres ovenfra af værdien

.
Således er altings kompleksitet værdien . [6]

Afhængighed af kapaciteten af ​​det faktoriserede tal

I de fleste tilfælde spiller eksekveringstidens afhængighed af bitdybden af ​​det undersøgte nummer en vigtigere rolle. Ved at have en polynomiel afhængighed for værdien får vi en eksponentiel afhængighed af Lehmann-metodens udførelsestid af ordlængden af ​​det faktoriserede tal. [7]

, hvor  er bitdybden.

Nogle særlige tilfælde

Som en forbedring af Fermats metode afhænger Lehmanns metode også væsentligt af afstanden mellem tallets faktorer, dens udførelsestid afhænger lineært af afstanden. Men hvis afstanden mellem faktorerne er lille, taber Lehmann-metoden betydeligt til Fermat-metoden .

For tal med en lille primtalsdivisor er situationen omvendt - Lehmann-metoden vil takket være successive divisioner i trin et hurtigt vælge en primfaktor. [7]

Pseudokode

for to do

if then return end if

end for for to do

for to do if then if then return else if then return end if end if end for

end for

Forklaringer:

betyder, at det er heltal deleligt med .

Funktionen returnerer if er et perfekt kvadrat og andet.

Funktionen returnerer den største fælles divisor af tal og . [7]

Muligheder for parallel implementering af metoden

Generel idé

Den parallelle implementering er baseret på følgende tilgang: [7]

Trin 1:
Hver beregningsproces involveret i faktorisering får sit eget sæt af potentielle divisorer fra sættet . Beregningsprocessen kontrollerer skiftevis for delelighed med elementer i dens sæt af divisorer. Med nogle tidsintervaller "stiller hovedkoordinatorprocessen spørgsmålstegn ved beregningsprocesserne for at bestemme divisoren". I det tilfælde, hvor det er nok at kontrollere for enkelhed, sender koordinatorprocessen, efter at have modtaget information om divisorens placering, et signal til resten af ​​processerne om at afslutte arbejdet. Findes divisoren ikke, eller målet er at finde alle divisorer, fortsætter søgningen efter divisorer.


Trin 2:
Hver beregningsproces, i lighed med trin 1, får sit eget sæt tal fra sættet . Beregningsprocessen kontrollerer på skift alle de betingelser, der er beskrevet i algoritmen, og bestemmer, om der findes en ikke-triviel faktor. På samme måde, med trin 1, poller koordinatorprocessen periodisk processerne på tidspunktet for at finde divisoren og beslutter, om beregningerne skal afsluttes eller ej.


Anvendelsen af ​​denne tilgang gør det muligt at opnå en lineær acceleration med en stigning i antallet af processer på en maskine med distribueret hukommelse. [7]

Implementering ved hjælp af GPGPU- teknologi

For at implementere en algoritme med succes ved hjælp af GPGPU- teknologi , skal to problemer løses: [8]
1. For hver operation af algoritmen skal du beslutte, om det er værd at udføre den på CPU'en eller på GPU'en .
2. Bestem antallet af brugte GPU- kerner .

Fremgangsmåden beskrevet ovenfor kan bruges til at opdele problemet. [otte]

Trin 1:
Alle handlinger i dette trin skal udføres på GPU'en .

Lad være antallet af tilgængelige GPU-  kerner ,  være antallet af elementer i sættet . Overvej to tilfælde: 1. : Vi bruger GPU- kerner . 2 .: Organiser iterationer . Ved hver iteration udfører vi de næste delinger på kernerne. Ved slutningen af ​​hver iteration bestemmer vi, om vi skal fuldføre eller fortsætte eksekveringen.

Trin 2:

Fordel mellem GPU - kerner på samme måde som i trin 1. Udfør trin 1-3 på hver GPU -kerne: 1. Tjek, om tallet er et kvadrat af et naturligt tal. 2. I tilfælde af at opnå et positivt resultat i det foregående afsnit, beregne og . 3. For værdier og tjek tilstanden . 4. For værdierne og , som bestod den sidste kontrol, skal du kontrollere opfyldelsen af ​​den dobbelte betingelse .



Det er tilrådeligt at udføre det sidste punkt på CPU'en , da sandsynligheden for at udføre disse operationer er lille, og grenkontrol på GPU'en er ret langsom. [otte]

Eksempel

Lad os analysere eksemplet med , så for , hvor , vi tjekker om tallet er en divisor af tallet . Det er nemt at sikre sig, at der ikke er nogen, så går vi videre til næste afsnit.

For alle og enhver tjekker vi, om tallet er kvadratet af et naturligt tal. I vores tilfælde er der og sådan, at udtrykket er et perfekt kvadrat og er lig med . Derfor og . Derefter opfylder uligheden og er en divisor af tallet . Som et resultat dekomponerede vi tallet i to faktorer: og .

Noter

  1. 1 2 Lehman, R. Sherman. Faktorering  af store heltal // Beregningsmatematik. - 1974. - T. 28 , nr. 126 . - S. 637-646 . - doi : 10.2307/2005940 .
  2. 1 2 3 Nesterenko, 2011 , s. 140.
  3. 1 2 Vasilenko, 2003 , s. 65-66.
  4. Nesterenko, 2011 , s. 142.
  5. Vasilenko, 2003 , s. 65.
  6. 1 2 Nesterenko, 2011 , s. 143.
  7. 1 2 3 4 5 Makarenko A.V., Pykhteev A.V., Efimov S.S. Undersøgelse af parallelle heltalsfaktoriseringsalgoritmer i computerklyngesystemer // Omsk State University. F. M. Dostojevskij (Omsk). - 2012. - V. 4 , nr. 66 . - S. 149-158 .
  8. 1 2 3 Zheltov S. A. Tilpasning af Sherman-Lehman-metoden til løsning af faktoriseringsproblemet til CUDA-computerarkitekturen // Russian State University for the Humanities (Moskva). - 2012. - T. 14 , nr. 94 . - S. 84-91 .

Litteratur

  1. Vasilenko O. N. Talteoretiske algoritmer i kryptografi . - M .: MTSNMO , 2003. - 328 s. — ISBN 5-94057-103-4 . Arkiveret 27. januar 2007 på Wayback Machine
  2. Alexey Nesterenko. En introduktion til moderne kryptografi . - MTSNMO , 2011. - 190 s.
  3. Richard Crandall, Carl Pomerance. A beregningsmæssige perspektiver . — 2. - Springer, 2011. - 597 s. — ISBN 0-387-25282-7 .