Harvey-van der Hoeven- algoritmi on algoritmi, jolla kerrotaan kaksibittiset kokonaisluvut aikakompleksisesti moninauhaisessa Turingin konemallissa . Ehdotuksen ovat esittäneet matemaatikot David Harvey New South Walesin yliopistosta ja Joris van der Hoeven Ranskan kansallisesta tieteellisestä tutkimuskeskuksesta . Vuodesta 2020 lähtien se on nopein tunnettu algoritmi lukujen kertomiseen tässä mallissa, kun taas kertolaskualgoritmien aikamonimutkaisuuden arvio näyttää olevan parantamaton.
Kysymys nopeiden algoritmien olemassaolosta kokonaislukujen kertomiseen on tärkeällä sijalla laskennallisen monimutkaisuuden teoriassa . Tunnetuimmat kertolaskumenetelmät, kuten pinottu kertolasku, vaativat aritmeettisia operaatioita. Tätä arviota paransi ensimmäisen kerran vuonna 1960 Anatoli Karatsuba , joka ehdotti algoritmia kertomiselle ajoajalla [1] . Vuonna 1971 Schönhage ja Strassen ehdottivat algoritmia , joka perustuu nopeaan Fourier-muunnokseen ajan myötä [2] . Samassa työssä he esittivät hypoteesin, että optimaalinen kertolaskualgoritmi vaatii alkeisoperaatioita. Pitkään Schönhagen ja Strassenin algoritmin antama yläraja pysyi kuitenkin parantumattomana. Vasta vuonna 2007, 36 vuotta myöhemmin, Martin Fuhrer ehdotti algoritmia , jossa on ajoaika määrittelemättömälle vakiolle , jossa on iteroitu logaritmi [3] . Myöhemmin Harvey ja van der Hoeven paransivat tätä arviota ensin arvoon [4] ja sitten arvoon , mikä vahvisti Schönhagen ja Strassenin [5] olettamuksessa esitetyn ylärajan . Algoritmilla on suuri teoreettinen merkitys, koska se saavuttaa hypoteettisen alarajan lukujen kertolaskualgoritmien käyntiajalle moninauhaisessa Turingin konemallissa. Käytännön kiihtyvyys saavutetaan kuitenkin vain luvuilla, joiden binääripituus ylittää bitin, kun taas havaittavissa olevan universumin hiukkasten lukumääräksi arvioidaan [6] .
Lukuteoreettiset algoritmit | |
---|---|
Yksinkertaisuustestit | |
Alkulukujen löytäminen | |
Faktorisointi | |
Diskreetti logaritmi | |
GCD:n löytäminen |
|
Modulo-aritmetiikka | |
Lukujen kerto- ja jakolasku | |
Neliöjuuren laskeminen |