Pollard ro-metódusa diszkrét logaritmushoz ( -method ) egy algoritmus a diszkrét logaritmushoz a maradékok gyűrűjében modulo prím, exponenciális összetettséggel . Az 1978 - ban John Pollard brit matematikus által javasolt algoritmus alapötlete nagyon hasonlít Pollard számfaktorizációs ro - algoritmusához . Ezt a módszert a nem nulla maradékok modulo csoportjára tekintjük , ahol egy prímszám nagyobb, mint .
Adott prímszámra és két egészre, és meg kell találni egy olyan egész számot , amely kielégíti az összehasonlítást:
(egy) |
ahol az elem által generált ciklikus csoport egy eleme .
A modulo egész számpárok sorozatát és a modulo egész számok sorozatát tekintjük, a következőképpen definiálva:
(2) |
(3) |
(négy) |
(5) |
Megjegyzés: minden kifejezésben a legkisebb, nem negatív maradékokat veszik figyelembe.
2. megjegyzés : általánosabb esetben 3 részhalmazra kicsit eltérő módon is fel lehet osztani: a csoportot három , megközelítőleg egyenlő méretű részhalmazra osztjuk úgy, hogy ne tartozzon a részhalmazba .
Mivel annak a szegmensnek minden harmadik része, amelyhez egy elem tartozik, valószínűleg nincs kapcsolatban a sorozatok elemeivel , a kapott sorozat álvéletlen. Ezért létezhetnek olyan számok , amelyek . Ha talál ilyen számpárt, akkor a következőket kapja:
(6) |
Ha a szám relatív prímszám -hoz , akkor ez az összehasonlítás megoldható, és a diszkrét logaritmus megtalálható:
(7) |
Ha a számok legnagyobb közös osztója és egyenlő a számmal , akkor van megoldás erre az összehasonlításra a modulo -ra . Legyen , majd a kívánt szám , ahol felveheti az értékeket . Ezért, ha elég kicsi a szám, akkor a problémát az összes lehetséges érték felsorolásával oldjuk meg . A legrosszabb esetben - amikor - a módszer nem bizonyul jobbnak, mint a diszkrét logaritmus összes lehetséges értékének teljes felsorolása.
Az indexek kereséséhez a Floyd cikluskeresési algoritmust használjuk . Ennek az algoritmusnak a használatakor a -edik lépésben értékek vannak, és egy számot kell keresni , amelyhez . Azt a legkisebb értéket , amelynél ez a feltétel teljesül, epactnak nevezzük . Ha ugyanakkor , akkor
(nyolc) |
Legyen adott egy elliptikus görbe (EC) pontcsoportja . Az általánosság elvesztése nélkül feltételezhetjük, hogy és prímszám. Jelölje a sorrendi alcsoportot és rögzítse a generáló elemet . A csoport tetszőleges eleme esetén a diszkrét logaritmus problémája az elem megtalálása
A csoportot unióként ábrázoljuk , ahol közel azonos kardinalitású tetszőleges halmazok vannak. Az iterációs függvény definíciója:
(9) |
Így ahol az együtthatók a következők szerint vannak definiálva
(tíz) |
(tizenegy) |
Egy tetszőleges kezdeti érték kiválasztásával két és szekvenciát készítünk, amíg ütközést nem találunk . A (10) és (11) képlet alapján megoldódik a diszkrét logaritmus feladat:
(12) |
Fontos, hogy az ütközés során kapott érték a kezdeti értéktől függ, és meghatározza a Pollard-módszer számítási bonyolultságát.
Az algoritmus fő feladata a sorozatok kiszámítása . Ezekhez a számításokhoz három modulo szorzás szükséges a következő iterációhoz való továbblépéshez. A szükséges memória mérete minimális, mivel nincs szükség a sorozatok összes korábbi elemére vonatkozó információ tárolására. Így az algoritmus összetettsége az epact megtalálásának problémájának összetettségére redukálódik, aminek viszont van egy heurisztikus komplexitásbecslése , és különböző esetekben az állandó értékei egészen eltérőek lehetnek, de pl. egy szabály, feküdj belül .
Más diszkrét logaritmus-algoritmusokhoz képest a Pollard-algoritmus olcsóbb mind a bináris műveletek, mind a szükséges memóriamennyiség tekintetében. Például kellően nagy számértékek esetén ez az algoritmus a komplexitás szempontjából hatékonyabb, mint a COS algoritmus és az Adleman algoritmus , amelyek összetettsége . A szintén összetett Shanks algoritmushoz képest a Pollard algoritmus előnyösebb a felhasznált memória szempontjából - a Shanks algoritmus memóriát igényel, míg ennél az algoritmusnál a szükséges memória mérete állandó (feltéve, hogy a Floyd ciklus keresési algoritmusa használt).
A Pollard elosztott memóriarendszerekre vonatkozó módszerének ötlete az, hogy elválasztja a pontok iterációját a kliens munkaállomások között és a szerver általi ütközés keresését. Adjuk meg a kliens munkaállomások halmazát A szerver meghatározza a rendszerben közös paramétereket, néhány részhalmazt és inicializálja a munkaállomásokat. A kliens munkaállomás pontsorozatot épít fel, és a pontokat elemenként küldi el a szervernek. Ha a pont nincs az adatbázisban, akkor a szerver hozzáadja a pontot az adatbázishoz, ellenkező esetben kiszámítja a diszkrét logaritmus értékét.
Ennek a módszernek az az ötlete, hogy az iterációs függvényt és az ütközésészlelési algoritmust külön-külön párhuzamosítsák. Az iterációs függvény párhuzamosításra kerül a sorozatok és szekvenciák kiszámításának szakaszában .. Megjegyzendő, hogy a és a fix érték párhuzamos számítása és az azt követő összehasonlítás nem hatékony. Ennek az az oka, hogy az adatfolyamok használatához kapcsolódó többletköltség számításilag drágább, mint a számítástechnika , ezért célszerű a sorozatokat úgy kiszámítani, hogy a többletterhelés egyenletes legyen. Ezt úgy érhetjük el, hogy rendszerezzük a számításokat a és formájú sorozatok , ahol a számítási blokk mérete, . A Pollard-módszer ütközésészlelési funkciója összehasonlítja és . Ez az összehasonlítás párhuzamosítható egy iterációs algoritmus használatával megosztott memóriarendszerekhez. A pontiterációs függvény végrehajtásának eredménye két ponthalmaz és , amelyeket blokkonként, azaz két kernel esetén összehasonlítunk.
Az elosztott memóriarendszerek Pollard-módszere kiterjeszthető többmagos munkaállomásokon való használatra. A módszer lényege, hogy a pontok kliens munkaállomások általi iterációja egy bizonyos algoritmus szerint történik, aminek a lényege, hogy van egy kliens munkaállomás, amely pontsorozatot épít fel . Ezután a munkaállomás kiválasztja a pontok egy részhalmazát, és elküldi a szervernek. Az egy részhalmazhoz való tartozás ellenőrzése párhuzamos módban történik: és (két mag esetén). A szerver pontokat és pontokat ad hozzá az adatbázishoz, amíg meg nem talál egy már létező pontot.
Az algoritmuson számos jelentős fejlesztés található különböző trükkök alapján.
Egy fejlesztést ír le [Teske 1998]. A cikkben bemutatott módszer különbsége a bonyolult iteratív függvényben rejlik - a fent leírt három helyett 20 különböző ágat tartalmaz. A numerikus kísérletek azt mutatják, hogy egy ilyen javulás a véletlenszerű séta algoritmusának átlagosan 20%-os gyorsulásához vezet.
A diszkrét logaritmusok kiszámításáról szóló munkájában Pollard egy módszert is javasolt, amelyet azért neveztek el, mert egy görög betű alakja két út egyesülésének képére hasonlít. A módszer lényege, hogy egyszerre két úton haladunk: az egyik abból a számból indul ki, amelynek diszkrét logaritmusát kell megtalálni, a másikat abból a számból, amelynek a diszkrét logaritmusa már ismert. Ha ez a két út konvergál, lehetségessé válik egy szám diszkrét logaritmusának megtalálása . Pollard azt javasolta, hogy az egyes utak lépéseit kengurugrásnak kell tekinteni, ezért ezt az algoritmust néha "kenguru-módszernek" is nevezik. Ha tudjuk, hogy a kívánt diszkrét logaritmus valamilyen rövid intervallumban rejlik, akkor a kenguru módszer adaptálható, mégpedig rövidebb ugrású kenguruk használatával.
A lambda módszer egyik fontos tulajdonsága, hogy könnyen elosztható több számítógép között. Az elosztott számítástechnikában minden résztvevő választ egy véletlen számot , és álvéletlen lépéseket kezd a számból , ahol a csoport azon eleme, amelyre a diszkrét logaritmust keresik. Minden résztvevő ugyanazt a könnyen kiszámítható pszeudo-véletlen függvényt használja , ahol a számok viszonylag kis halmaza, amelynek átlagos értéke összehasonlítható a csoport méretével , amelynek sorrendje van . A teljesítményeket előre kiszámítják. Ekkor a "vándorlás" az elemből kiindulva a következő alakot ölti:
Hagyja, hogy a másik résztvevő a kezdő számot választva a sorozatot kapja Ha metszi a sorozatot , azaz egyeseknél , akkor, figyelembe véve, hogy , a következő igaz:
(13) |
(tizennégy) |
Ezt a módszert általában akkor használják, ha a csoport sorrendje egyszerű. Azóta, ha a számítások elején kiválasztott összes szám abszolút értékben különbözik , akkor az összehasonlítás könnyen megoldható a diszkrét logaritmus meghatározásához . Egy kis nehézséget jelent, hogy az egyezés előfordulhat ugyanabban a sorozatban, ami azt jelenti, hogy . Ha azonban a számításokban részt vevők száma elég nagy, akkor a sorozatok közötti egyezés valószínűsége nagyobb, mint az azonos sorozaton belüli egyezés valószínűsége.
Lehetséges pszeudo-véletlen függvény használata . Ebben az esetben az összes egyezés hasznos lesz: az azonos sorozaton belüli egyezés felhasználható a diszkrét logaritmus kiszámítására is. Egy ilyen egyezés esetén a metódus egyszerűen metódussá válik . Ha azonban tudjuk, hogy a kívánt diszkrét logaritmus egy rövid intervallumban található, akkor az eredeti módszer használható. Ekkor a futási idő körülbelül az intervallum hosszának négyzetgyöke lesz. Ebben az esetben a halmaz egészeinek átlagértékének kisebbnek kell lennie, hogy a "kenguruk" csak a kívánt hosszúságú intervallumon ugorjanak át.
A központi számítógépnek nyomon kell követnie minden résztvevőtől a mérkőzések összes sorozatát. A születésnapi paradoxon szerint egyezés akkor várható, ha az elemek száma az összes sorozatban ). Nyilvánvaló, hogy a leírt formában ez a módszer nagy mennyiségű memóriát igényel a központi számítógéptől. A következő, van Orschot munkájában leírt ötlet nagymértékben lecsökkenti a memóriaigényt, és így alkalmazhatóvá teszi ezt a módszert összetett problémák megoldására. Az ötlet az, hogy figyelembe vegyük az úgynevezett kiválasztott pontokat. Feltételezzük, hogy a csoport elemeit egész számok (vagy esetleg egész számok halmazai) reprezentálják. Egy ilyen számban lévő megkülönböztetett bináris hosszúságú mező az idő körülbelül harmadáig minden nullából áll . Egy véletlenszerű séta átlagosan minden lépésben áthalad az ilyen kiválasztott pontokon. Ha két véletlenszerű sorozat valahol metszi egymást, akkor tovább metszik egymást, és együtt jutnak el a következő kiválasztott ponthoz. Tehát az ötlet az, hogy csak ezeket a kiválasztott pontokat küldjük a központi számítógépnek, ami egy faktorral csökkenti a szükséges memória méretét.