Pollardin ro-menetelmä diskreetille logaritmille ( -method ) on algoritmi diskreetille logaritmille jäännösten renkaassa modulo alkuluku, jolla on eksponentiaalinen monimutkaisuus . Brittiläisen matemaatikon John Pollardin vuonna 1978 ehdottama algoritmin perusideat ovat hyvin samankaltaisia kuin Pollardin lukukerroinlaskentaan tarkoitetun ro-algoritmin . Tätä menetelmää tarkastellaan nollasta poikkeavien tähteiden ryhmälle modulo , jossa on alkuluku, joka on suurempi kuin .
Tietylle alkuluvulle ja kahdelle kokonaisluvulle on löydettävä kokonaisluku , joka tyydyttää vertailun:
(yksi) |
jossa on elementin muodostaman syklisen ryhmän elementti .
Tarkastellaan kokonaislukuparien sarjaa modulo ja kokonaislukujen sarjaa modulo , jotka määritellään seuraavasti:
(2) |
(3) |
(neljä) |
(5) |
Huomautus: kaikissa lausekkeissa otetaan huomioon pienimmät ei-negatiiviset tähteet.
Huomautus 2 : Yleisemmässä tapauksessa on mahdollista jakaa 3 osajoukkoa hieman eri tavalla: jaamme ryhmän kolmeen suunnilleen samankokoiseen osajoukkoon, jotta se ei kuulu osajoukkoon .
Koska jokainen kolmas segmentistä, johon elementti kuuluu, ei todennäköisesti liity sekvenssien elementteihin , tuloksena oleva sekvenssi on näennäissatunnainen. Siksi voi olla numeroita ja sellaisia, että . Jos löydät tällaisen numeroparin, saat:
(6) |
Jos luku on suhteellisen alkuluku , niin tämä vertailu voidaan ratkaista ja diskreetti logaritmi löytyy:
(7) |
Jos lukujen suurin yhteinen jakaja ja on yhtä suuri kuin luku , niin tälle vertailulle on ratkaisu modulo . Olkoon , sitten haluttu luku , josta voi ottaa arvot . Siksi, jos luku on riittävän pieni, ongelma ratkaistaan laskemalla kaikki mahdolliset arvot . Pahimmassa tapauksessa - kun - menetelmä ei ole parempi kuin täydellinen luettelo kaikista mahdollisista arvoista diskreetille logaritmille.
Indeksien etsimiseen käytetään Floydin syklihakualgoritmia . Tätä algoritmia käytettäessä -: nnessä vaiheessa on arvot ja haetaan numero , jolle . Pienintä arvoa , jolla tämä ehto täyttyy, kutsutaan epact . Jos samaan aikaan , niin
(kahdeksan) |
Olkoon elliptisen käyrän (EC) pisteiden ryhmä annettu . Yleisyyttä menettämättä voimme olettaa, että ja on alkuluku. Merkitse järjestysalaryhmää ja korjaa generoiva elementti . Ryhmän mielivaltaiselle elementille diskreetin logaritmin ongelma on löytää elementti
Ryhmä on edustettuna liittona , jossa on mielivaltaisia joukkoja, joilla on suunnilleen sama kardinaliteetti. Iterointifunktio määritellään seuraavasti
(9) |
Siten missä kertoimet määritellään seuraavasti
(kymmenen) |
(yksitoista) |
Valitsemalla mielivaltainen alkuarvo , kaksi sekvenssiä ja rakennetaan, kunnes törmäys löytyy jossain . Kaavojen (10) ja (11) perusteella diskreetti logaritmiongelma ratkaistaan:
(12) |
On tärkeää, että törmäyksen aikana saatu arvo riippuu alkuarvosta ja määrittää Pollard-menetelmän laskennallisen monimutkaisuuden.
Algoritmin päätehtävänä on sekvenssien laskeminen . Nämä laskelmat vaativat kolme modulo-kertoa päästäkseen seuraavaan iteraatioon. Tarvittavan muistin koko on minimaalinen, koska sekvenssien kaikista aikaisemmista elementeistä ei tarvitse tallentaa tietoja. Siten algoritmin monimutkaisuus vähenee epactin löytämisen ongelman monimutkaisuuteen, jolla puolestaan on heuristinen monimutkaisuusestimaatti , ja eri tapauksissa vakion arvot voivat olla melko erilaisia, mutta esim. sääntö, sijaitsevat sisällä .
Muihin diskreetteihin logaritmialgoritmeihin verrattuna Pollardin algoritmi on halvempi sekä binäärioperaatioiden että tarvittavan muistimäärän kannalta. Esimerkiksi riittävän suurille lukuarvoille tämä algoritmi on tehokkaampi monimutkaisuuden suhteen kuin COS- algoritmi ja Adleman-algoritmi , joilla on monimutkaisuus . Verrattuna Shanks-algoritmiin , jolla on myös monimutkaisuus , Pollard-algoritmi on edullisempi käytettävän muistin suhteen - Shanks-algoritmi vaatii muistia, kun taas vaaditun muistin koko on vakio tälle algoritmille (olettaen, että Floydin syklin hakualgoritmi on käytetty).
Pollardin hajautettujen muistijärjestelmien menetelmän ideana on erottaa pisteiden iterointi asiakastyöasemien välillä ja palvelimen törmäyksen etsiminen. Olkoon annettu joukko asiakastyöasemia Palvelin määrittää järjestelmän yhteiset parametrit, jotkin osajoukot ja alustaa työasemat. Asiakastyöasema rakentaa pistesarjan ja lähettää pisteet elementti kerrallaan palvelimelle. Jos piste ei ole tietokannassa, palvelin lisää pisteen tietokantaan, muussa tapauksessa se laskee diskreetin logaritmin arvon.
Tämän menetelmän ideana on rinnastaa iteraatiofunktio ja törmäyksentunnistusalgoritmi erikseen. Iterointifunktio rinnastetaan sekvenssien laskentavaiheessa ja . On huomattava, että kiinteän arvon ja rinnakkainen laskenta sekä sitä seuraava vertailu on tehotonta. Tämä johtuu siitä, että virtojen käyttöön liittyvä yleiskustannukset ovat laskennallisesti kalliimpia kuin laskennalliset kustannukset , joten sekvenssit on suositeltavaa laskea siten, että overhead on tasattu. Tämä voidaan saavuttaa järjestämällä laskelmat sekvenssien muotoa ja , missä on laskentalohkon koko, . Törmäyksentunnistustoiminto Pollard-menetelmässä vertaa ja . Tämä vertailu voidaan rinnastaa käyttämällä iterointialgoritmia jaetuille muistijärjestelmille. Pisteiterointifunktion suorittamisen tulos on kaksi pistettä ja , joita verrataan lohko lohkolta, eli kahden ytimen tapauksessa.
Hajautettujen muistijärjestelmien Pollard-menetelmää voidaan laajentaa käytettäväksi moniytimisissä työasemissa. Menetelmän ideana on, että asiakastyöasemien pisteiden iterointi tapahtuu tietyn algoritmin mukaisesti, jonka ydin on, että on olemassa asiakastyöasema, joka rakentaa pistejonon . Seuraavaksi työasema valitsee pisteiden osajoukon ja lähettää sen palvelimelle. Osajoukkoon kuulumisen tarkistus suoritetaan rinnakkaistilassa: ja (kahden ytimen tapauksessa). Palvelin lisää pisteitä ja tietokantaan, kunnes se löytää jo olemassa olevan pisteen.
Algoritmiin on tehty useita merkittäviä parannuksia erilaisiin temppuihin perustuen.
Yksi parannus on kuvattu julkaisussa [Teske 1998]. Työssä esitetyn menetelmän ero on monimutkaisessa iteratiivisessa funktiossa - se sisältää 20 eri haaraa edellä kuvattujen kolmen sijaan. Numeeriset kokeet osoittavat, että tällainen parannus johtaa satunnaiskävelyalgoritmin keskimääräiseen nopeuteen 20 %.
Diskreettien logaritmien laskemista koskevassa työssään Pollard ehdotti myös menetelmää, joka on saanut nimensä, koska kreikkalaisen kirjaimen muoto muistuttaa kuvaa, jossa kaksi polkua yhdistyy yhdeksi. Menetelmän ideana on kulkea kahta tietä kerralla: yksi luvusta, jonka diskreetti logaritmi on löydettävä, ja toinen numerosta, jonka diskreetti logaritmi on jo tiedossa. Jos nämä kaksi polkua lähentyvät, on mahdollista löytää luvun diskreetti logaritmi . Pollard ehdotti, että kunkin polun askeleita pidettäisiin kenguruhyppyinä, minkä vuoksi tätä algoritmia kutsutaan joskus "kengurumenetelmäksi". Jos tiedetään, että haluttu diskreetti logaritmi on jossain lyhyessä välissä, niin kengurumenetelmää voidaan mukauttaa, nimittäin käyttämällä kenguruja lyhyemmillä hyppyillä.
Yksi lambda-menetelmän tärkeä ominaisuus on se, että se on helppo jakaa useille tietokoneille. Jokainen hajautetun laskennan osallistuja valitsee satunnaisluvun ja alkaa tehdä näennäissatunnaisia askelia luvusta , jossa on se ryhmän elementti, jolle diskreetti logaritmi haetaan. Jokainen osallistuja käyttää samaa helposti laskettavaa näennäissatunnaista funktiota , jossa on suhteellisen pieni joukko lukuja, joiden keskiarvo on verrattavissa ryhmän kokoon , jolla on järjestys . Tehot lasketaan etukäteen . Sitten "vaeltaminen", alkaen elementistä , saa muodon:
Anna toisen osallistujan, valitessaan alkuluvun , saada sekvenssi Jos se leikkaa jonon , eli joillekin , niin, kun otetaan huomioon, että , seuraava pitää paikkansa:
(13) |
(neljätoista) |
Tyypillisesti tätä menetelmää käytetään, kun ryhmäjärjestys on yksinkertainen. Siitä lähtien, jos kaikki laskelmien alussa valitut luvut ovat erilaisia absoluuttisesti , niin vertailu voidaan helposti ratkaista diskreetin logaritmin löytämiseksi . Pieni vaikeus on, että vastaavuus voi tapahtua samassa sarjassa, mikä tarkoittaa, että . Kuitenkin, jos osallistujien määrä laskelmissa on riittävän suuri, niin sekvenssien välisen yhteensopivuuden todennäköisyys on suurempi kuin saman sekvenssin osuvuuden todennäköisyys.
On mahdollista käyttää pseudosatunnaisfunktiota . Tässä tapauksessa kaikki osumat ovat hyödyllisiä: saman sekvenssin osumaa voidaan käyttää myös diskreetin logaritmin laskemiseen. Tällaisen vastaavuuden tapauksessa menetelmä yksinkertaisesti muuttuu menetelmäksi. Jos kuitenkin tiedetään, että haluttu diskreetti logaritmi on lyhyellä aikavälillä, voidaan käyttää alkuperäistä menetelmää. Tällöin ajoaika on noin neliöjuuri intervallin pituudesta. Tässä tapauksessa joukon kokonaislukujen keskiarvon tulee olla pienempi, jotta "kengurut" hyppäävät vain halutun pituisen intervallin yli.
Keskustietokoneen on seurattava otteluiden kaikkia jaksoja kaikilta osallistujilta. Syntymäpäiväparadoksin mukaan vastaavuus odotetaan, kun elementtien lukumäärä kaikissa sarjoissa on luokkaa ). Ilmeisesti kuvatussa muodossa tämä menetelmä vaatii suuren määrän keskustietokoneen muistia. Seuraava van Orschotin teoksessa kuvattu idea vähentää huomattavasti muistivaatimuksia ja tekee tästä menetelmästä soveltuvan monimutkaisten ongelmien ratkaisemiseen. Ajatuksena on ottaa huomioon niin sanotut valitut kohdat. Oletetaan, että ryhmän elementtejä edustavat kokonaisluvut (tai mahdollisesti kokonaislukujoukot). Erottuva binääripituuskenttä tällaisessa numerossa koostuu kaikista nollista noin osan ajasta. Satunnainen kävely kulkee tällaisten valittujen pisteiden läpi keskimäärin joka askeleella. Jos kaksi satunnaista sekvenssiä leikkaa jossain, ne leikkaavat edelleen ja pääsevät yhdessä seuraavaan valittuun pisteeseen. Ideana on siis lähettää vain nämä valitut pisteet keskustietokoneelle, mikä pienentää tarvittavaa muistin kokoa kertoimella.