Pollards kängurualgoritm

I beräkningstalteori och beräkningsalgebra är Pollards kängurualgoritm (och även Pollards lambdaalgoritm , se rubrikavsnittet nedan) en algoritm för att lösa det diskreta logaritmproblemet . Algoritmen föreslogs 1978 av nummerteoretikern J. M. Pollard i samma artikel [1] som hans mer kända ρ-algoritm för att lösa samma problem. Även om Pollard beskriver tillämpningen av denna algoritm på det diskreta logaritmproblemet i en multiplikativ grupp modulo a prime p , är det i själva verket en allmän diskret logaritmalgoritm – den kommer att fungera på vilken cyklisk finit grupp som helst.

Algoritm

Låta vara  en ändlig cyklisk grupp av ordning som genereras av ett element , och vi letar efter den diskreta logaritmen av elementet med avseende på basen . Med andra ord letar vi efter , sådan att . Lambdaalgoritmen låter oss söka i någon delmängd av . Vi kan söka efter hela uppsättningen möjliga logaritmer genom att anta och , även om ρ-algoritmen kommer att vara mer effektiv i detta fall. Vi går tillväga enligt följande:

1. Välj en uppsättning heltal och definiera en pseudo-slumpmässig mappning .

2. Välj ett heltal och beräkna sekvensen av gruppelement enligt formlerna:

3. Beräkna

.

Lägg märke till att

4. Vi börjar beräkna den andra sekvensen av gruppelement med hjälp av formlerna

och motsvarande sekvens av heltal enligt formeln

.

Lägg märke till att

för

5. Sluta beräkna och när något av villkoren är uppfyllt

A) för vissa . Om sekvenserna och "krockar" på detta sätt har vi: så vi hittade vad vi ville ha. B) . Om detta händer har algoritmen inte lyckats hitta . Ett annat försök kan göras genom att ändra uppsättningen eller/och mappningen .

Svårighet

Pollard specificerade en tidskomplexitet för algoritmen , baserat på probabilistiska resonemang, som följer av antagandet att f fungerar pseudo-slumpmässigt. Observera att i fallet när storleken på mängden { a , …, b } mäts i bitar , vilket är vanligt inom komplexitetsteorin , har mängden storleksloggen( b  −  a ), så den algoritmiska komplexiteten är lika med , vilket är en exponent för problemets storlek. Av denna anledning anses Pollards lambdaalgoritm vara en exponentiell komplexitetsalgoritm . För ett exempel på en tidssubexponentiell algoritm, se Ordningskalkylalgoritm .

Titel

Algoritmen är känd under två namn.

Förnamnet är Pollards "känguru"-algoritm . Namnet hänvisar till en analogi som används i artikeln där algoritmen föreslogs. Artikeln förklarar algoritmen i termer av att använda en tam känguru för att fånga en vild . Som Pollard [2] förklarade , var denna analogi inspirerad av ett "charmigt" dokument som publicerades i samma nummer av Scientific American som publiceringen av RSA Public Key Cryptosystem . Artikel [3] beskriver ett experiment där "energikostnaden för att flytta en känguru, mätt i termer av syreförbrukning vid olika hastigheter, bestämdes genom att placera en känguru på ett löpband ".

Det andra namnet är Pollards lambdaalgoritm . Mycket likt namnet på Pollards andra algoritm för diskret logaritm, ρ-algoritmen , och detta namn beror på algoritmens visualiseringslikhet med den grekiska bokstaven lambda ( ). Den korta raden i bokstaven lambda motsvarar sekvensen . Följaktligen motsvarar den långa raden den sekvens som "krockar med" den första sekvensen (liknande mötet mellan de korta och långa linjerna i en bokstav).

Pollard föredrar att använda namnet "kängurualgoritm" [4] för att undvika förväxling med vissa parallella versioner av ρ-algoritmen, som också kallas "lambdaalgoritmer".

Se även

Anteckningar

  1. Pollard, 1978 .
  2. Pollard, 2000 , sid. 437-447.
  3. Dawson, 1977 , sid. 78-89.
  4. jmptidcott2 . Hämtad 5 november 2016. Arkiverad från originalet 17 augusti 2016.

Litteratur