Shanks kvadratiska formmetoden är en faktoriseringsmetod för heltal baserad på användningen av kvadratiska former , utvecklad av Daniel Shanks [1] 1975 , som en utveckling av Fermats faktoriseringsmetod .
För 32-bitars datorer är algoritmer baserade på denna metod de obestridda ledande bland faktoriseringsalgoritmer för siffror från till och kommer förmodligen att förbli så. [2] Denna algoritm kan dela nästan alla 18-siffriga sammansatta tal på mindre än en millisekund. Algoritmen är extremt enkel, vacker och effektiv. Dessutom används metoder baserade på denna algoritm som hjälpmedel vid expansionen av divisorer för stora tal som Fermat-tal .
Ett annat namn för algoritmen är SQUFOF ( en akronym för engelska är SQUAre FORm Factorization), vilket betyder kvadratisk formfaktorisering . Detta tillvägagångssätt har varit ganska framgångsrikt under åren och som ett resultat kan en hel del olika modifieringar och implementeringar hittas på detta ämne i litteraturen. [3] De flesta av metoderna är komplexa och förvirrande, särskilt när metoden behöver implementeras på en dator. Som ett resultat är många varianter av algoritmer inte lämpliga för implementering. Men 1975 föreslog Daniel Shanks att skapa en algoritm som kan implementeras och användas inte bara på en dator utan också på en enkel mobiltelefon.
Även om Shanks har beskrivit andra algoritmer för heltalsfaktorisering har han inte publicerat något på SQUFOF. Han höll föreläsningar i ämnet och förklarade den grundläggande essensen av sin metod för en ganska liten krets av människor. Vissa artiklar av andra forskare [4] [3] [5] [6] diskuterade algoritmen, men ingen innehåller en detaljerad analys. Det är också intressant att Shanks i sin metod gör en hel del antaganden [7] , som tyvärr förblev utan bevis. I [8] presenteras resultaten av några experiment, som tyder på att många antaganden är på plats. Till slut, baserat på dessa förenklade antaganden, kunde Shanks skapa SQUFOF.
För att förstå hur denna algoritm implementeras är det nödvändigt att känna till den minsta informationen om de matematiska objekten som används i denna metod, nämligen kvadratiska former . En binär kvadratisk form är ett polynom i två variabler och :
Shanks - metoden använder endast obestämda former . Med vi menar diskriminanten av en kvadratisk form. Vi kommer att säga att den kvadratiska formen representerar ett heltal om det finns heltal så att likheten är sann: . Om likheten är sann , så kallas representationen primitiv .
För alla obestämda kvadratiska former kan reduktionsoperatorn definieras som:
, där definieras som ett heltal , unikt bestämt av villkoren: [8]Resultatet av att tillämpa operatorn på formuläret en gång skrivs som . Operatören definieras också som:
, där definieras på samma sätt som i föregående fall. Observera att som ett resultat av att tillämpa operatorerna och på en kvadratisk form med diskriminant , kommer de resulterande kvadratiska formerna också att ha diskriminant .Metoden för att erhålla en reducerad form motsvarande denna hittades av Carl Gauss och består i att successivt applicera reduktionsoperatorn tills den reduceras.
Sats.
Varje form är likvärdig med någon reducerad form, och varje reducerad form för är lika med någon positiv . Om - reduceras, så reduceras det också. |
För en tydlig förståelse av alla operationer med kvadratiska former behöver vi också begreppen kvadratiska, intilliggande och tvetydiga kvadratiska former
Tanken med Shanks-metoden är att jämföra talet som ska dekomponeras med en kvadratisk binär form med en diskriminant , med vilken en serie ekvivalenta transformationer sedan utförs och övergången från formen till den tvetydiga formen . Då kommer att vara en divisor .
Den första varianten fungerar med positiv-definita binära kvadratiska former av en given negativ diskriminant, och i formklassgruppen finner den en ambig form , vilket ger en faktorisering av diskriminanten. Komplexiteten i det första alternativet är föremål för sanningen i den utökade Riemann-hypotesen . [9]
Den andra varianten är SQUFOF, som använder en klassgrupp av binära kvadratiska former med en positiv diskriminant. Den hittar också den tvetydiga formen och faktoriserar diskriminanten. Komplexiteten i SQUFOF uppgår till aritmetiska operationer; Algoritmen fungerar med heltal som inte överstiger . Bland faktoriseringsalgoritmer med exponentiell komplexitet anses SQUFOF vara en av de mest effektiva. [9]
Enligt beräkningarna utförda av Shanks själv bestäms antalet iterationer av den första och andra cykeln av algoritmen av antalet faktorer för numret och är ungefär lika med:
där är en konstant lika med ungefär 2,4 för den första cykeln av iterationer. [tio]
Mer detaljerat kan algoritmen skrivas enligt följande: [11]
Inmatning: Ett udda sammansatt tal att faktorisera. Om vi ersätter med Nu Den sista egenskapen är nödvändig för att bestämningsfaktorn för den kvadratiska formen ska vara fundamental, vilket säkerställer metodens konvergens.
Utgång: Icke-trivial divisor .
1. Definiera den ursprungliga kvadratiska formen , med diskriminant , där . 2. Låt oss köra reduktionscykeln tills formen blir kvadratisk. 3. Beräkna kvadratroten ur 4. Låt oss köra reduktionscykeln tills värdet på den andra koefficienten stabiliseras . Antalet iterationer av denna slinga bör vara ungefär lika med hälften av antalet iterationer av den första slingan. Det sista värdet kommer att ge talets divisor (eventuellt trivialt).Nu beskriver vi algoritmen för implementering på en dator. [11] Observera att även om den teoretiska delen av algoritmen är relaterad till ekvivalenta transformationer av kvadratiska former, så bygger den praktiska delen av algoritmen på att beräkna koefficienterna för den fortsatta bråkmetoden utan att tillgripa formerna. Varje iteration av slingan motsvarar en operation för att applicera reduktionsoperatorn på motsvarande form. Om det behövs kan du återställa motsvarande formulär med formlerna:
Inmatning: Sammansatt nummer
Utgång: Icke-trivial divisor
Som redan nämnts är detta inte den enda implementeringen av denna algoritm. Du kan också hitta implementeringen av algoritmen här [8]
Vi använder denna metod för att faktorisera talet [8]
|
|
Nu kan du se i den andra cykeln att Därav siffran
Denna algoritm används i många implementeringar av NFS och QS för att faktorisera små hjälptal som uppstår vid faktorisering av ett stort heltal. I vilket fall som helst används SQUFOF huvudsakligen som en hjälpalgoritm i mer kraftfulla faktoriseringsalgoritmer och därför kommer SQUFOF i allmänhet att användas för att faktorisera tal av blygsam storlek som inte har små primtalsdelare. Sådana tal är vanligtvis produkten av ett litet antal olika primtal. [8] .
Talteoretiska algoritmer | |
---|---|
Enkelhetstest | |
Hitta primtal | |
Faktorisering | |
Diskret logaritm | |
Hitta GCD | |
Modulo aritmetik | |
Multiplikation och division av tal | |
Beräkna kvadratroten |