Ve výpočetní teorii čísel a výpočetní algebře je Pollardův klokaní algoritmus (a také Pollardův algoritmus lambda , viz nadpis níže) algoritmem pro řešení problému diskrétního logaritmu . Algoritmus navrhl v roce 1978 teoretik čísel J. M. Pollard ve stejném článku [1] jako jeho známější ρ-algoritmus pro řešení stejného problému. Ačkoli Pollard popisuje aplikaci tohoto algoritmu na problém diskrétního logaritmu v multiplikativní grupě modulo a prvočíslo p , ve skutečnosti se jedná o obecný algoritmus diskrétního logaritmu – bude fungovat na jakékoli cyklické konečné grupě.
Nechť je konečná cyklická skupina řádu generovaná prvkem a hledáme diskrétní logaritmus prvku vzhledem k základně . Jinými slovy, hledáme takové, že . Algoritmus lambda nám umožňuje vyhledávat v nějaké podmnožině . Úplnou sadu možných logaritmů můžeme hledat za předpokladu a , ačkoliv ρ-algoritmus bude v tomto případě efektivnější. Postupujeme následovně:
1. Vyberte sadu celých čísel a definujte pseudonáhodné zobrazení .
2. Vyberte celé číslo a vypočítejte posloupnost prvků skupiny podle vzorců:
3. Vypočítejte
.všimněte si, že
4. Začneme počítat druhou sekvenci prvků skupiny pomocí vzorců
a odpovídající posloupnost celých čísel podle vzorce
.všimněte si, že
pro5. Zastavte výpočet a jakmile je splněna jedna z podmínek
A) pro některé . Pokud se sekvence a "srazí" tímto způsobem, máme: tak jsme našli, co jsme chtěli. B) . Pokud k tomu dojde, algoritmu se nepodařilo najít . Další pokus lze provést změnou sady nebo/a mapování .Pollard specifikoval časovou složitost pro algoritmus na základě pravděpodobnostního uvažování, které vyplývá z předpokladu, že f působí pseudonáhodně. Všimněte si, že v případě, kdy se velikost množiny { a , …, b } měří v bitech , což je obvyklé v teorii složitosti , má množina velikost log( b − a ), takže algoritmická složitost je rovna , což je exponent velikosti problému. Z tohoto důvodu je Pollardův lambda algoritmus považován za algoritmus exponenciální složitosti . Příklad časově-subexponenciálního algoritmu naleznete v tématu Algoritmus počtu objednávek .
Algoritmus je znám pod dvěma názvy.
První název je Pollardův algoritmus „klokan“ . Název odkazuje na analogii použitou v článku, kde byl navržen algoritmus. Článek vysvětluje algoritmus z hlediska použití ochočeného klokana k odchytu divokého . Jak vysvětlil Pollard [2] , tato analogie byla inspirována „okouzlujícím“ článkem publikovaným ve stejném čísle Scientific American jako publikace RSA Public Key Cryptosystem . Článek [3] popisuje experiment, ve kterém „náklady na energii na pohyb klokana, měřené jako spotřeba kyslíku při různých rychlostech, byly určeny umístěním klokana na běžící pás “.
Druhý název je Pollardův lambda algoritmus . Velmi podobný jménu jiného Pollardova algoritmu pro diskrétní logaritmus, ρ-algoritmu , a tento název je způsoben vizualizační podobností algoritmu s řeckým písmenem lambda ( ). Krátký řádek písmene lambda odpovídá sekvenci . Dlouhý řádek tedy odpovídá posloupnosti , která "koliduje" s první posloupností (podobně jako setkání krátkých a dlouhých řádků písmene).
Pollard upřednostňuje použití názvu „klokaní algoritmus“ [4] , aby se vyhnul záměně s některými paralelními verzemi ρ-algoritmu, které se také nazývají „algoritmy lambda“.
Číselné teoretické algoritmy | |
---|---|
Testy jednoduchosti | |
Hledání prvočísel | |
Faktorizace | |
Diskrétní logaritmus | |
Hledání GCD | |
Modulová aritmetika | |
Násobení a dělení čísel | |
Výpočet druhé odmocniny |