I beregningstalteori og beregningsmæssig algebra er Pollards kængurualgoritme (og også Pollards lambdaalgoritme , se afsnittet om titel nedenfor) en algoritme til løsning af det diskrete logaritmeproblem . Algoritmen blev foreslået i 1978 af talteoretikeren J. M. Pollard i samme papir [1] som hans bedre kendte ρ-algoritme til at løse det samme problem. Selvom Pollard beskriver anvendelsen af denne algoritme til det diskrete logaritmeproblem i en multiplikativ gruppe modulo a prime p , er det i virkeligheden en generel diskret logaritmealgoritme - den vil fungere på enhver cyklisk finit gruppe.
Lade være en endelig cyklisk gruppe af orden genereret af et element , og vi leder efter den diskrete logaritme af elementet med hensyn til basen . Med andre ord, vi leder efter , sådan at . Lambda-algoritmen giver os mulighed for at søge i en delmængde af . Vi kan søge efter det fulde sæt af mulige logaritmer ved at antage og , selvom ρ-algoritmen vil være mere effektiv i dette tilfælde. Vi går videre som følger:
1. Vælg et sæt heltal og definer en pseudo-tilfældig afbildning .
2. Vælg et heltal og beregn rækkefølgen af gruppeelementer i henhold til formlerne:
3. Beregn
.Læg mærke til det
4. Vi begynder at beregne den anden sekvens af gruppeelementer ved hjælp af formlerne
og den tilsvarende sekvens af heltal ifølge formlen
.Læg mærke til det
til5. Stop computing , og når en af betingelserne er opfyldt
A) for nogle . Hvis sekvenserne og "kolliderer" på denne måde, har vi: så vi fandt, hvad vi ønskede. B) . Hvis dette sker, har algoritmen ikke kunnet finde . Et andet forsøg kan gøres ved at ændre sættet eller/og tilknytningen .Pollard specificerede en tidskompleksitet for algoritmen , baseret på probabilistisk ræsonnement, som følger af antagelsen om, at f virker pseudo-tilfældigt. Bemærk, at i det tilfælde, hvor størrelsen af mængden { a , …, b } måles i bits , hvilket er sædvanligt i kompleksitetsteori , har mængden størrelseslog( b − a ), så den algoritmiske kompleksitet er lig med , som er en eksponent for problemstørrelsen. Af denne grund anses Pollards lambda-algoritme for at være en eksponentiel kompleksitetsalgoritme . For et eksempel på en tids-subeksponentiel algoritme, se Order calculus algoritme .
Algoritmen kendes under to navne.
Fornavnet er Pollards "kænguru"-algoritme . Navnet henviser til en analogi brugt i artiklen, hvor algoritmen blev foreslået. Artiklen forklarer algoritmen i forhold til at bruge en tam kænguru til at fange en vild . Som Pollard [2] forklarede , var denne analogi inspireret af et "charmerende" papir offentliggjort i samme nummer af Scientific American som udgivelsen af RSA Public Key Cryptosystem . Artikel [3] beskriver et eksperiment, hvor "energiomkostningerne ved at flytte en kænguru, målt i iltforbrug ved forskellige hastigheder, blev bestemt ved at placere en kænguru på et løbebånd ".
Det andet navn er Pollards lambda-algoritme . Meget lig navnet på Pollards anden algoritme for diskret logaritme, ρ-algoritmen , og dette navn skyldes algoritmens visualiseringslighed med det græske bogstav lambda ( ). Den korte linje i bogstavet lambda svarer til rækkefølgen . Følgelig svarer den lange linje til den sekvens , der "kolliderer med" den første sekvens (svarende til mødet mellem de korte og lange linjer i et bogstav).
Pollard foretrækker at bruge navnet "kænguru-algoritme" [4] for at undgå forveksling med nogle parallelle versioner af ρ-algoritmen, som også kaldes "lambda-algoritmer".
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |