Vuonna tietojenkäsittelytiede , nopea potenssiinkorotusta on algoritmi , jota käytetään nopeasti laskea suurten kokonaisluku valtuuksia . In Englanti , tämä menetelmä on myös kutsutaan neliön ja-lisääntyvät .
Ensimmäinen tapa laskea teho n p on kertoa n itse p kertaa. On kuitenkin olemassa paljon tehokkaampia menetelmiä, joissa vaadittujen toimintojen lukumäärä ei ole enää p: n, vaan lokin ( p ) luokkaa .
Jos esimerkiksi kirjoitamme varten , näemme, että
.Tarvitaan d operaatiota kaikkien , sitten d lisäoperaatioiden muodostamiseksi . Operaatioiden kokonaismäärä on siis 2 d , mikä on todellakin p: n logaritmin luokkaa . Tämä yksinkertainen algebrallinen huomautus johtaa seuraavassa osassa esitettyyn algoritmiin.
Olkoon n olla ehdottomasti suurempi kokonaisluku kuin 1 , oletetaan, että osaamme laskea, jokaiselle todellinen X , kaikki valtuudet x k ja X , kaikille k , siten että 1 ≤ k < n .
Tämä huomautus johtaa meidät seuraavaan rekursiiviseen algoritmiin, joka laskee x n ehdottomasti positiiviselle kokonaisluvulle n :
Verrattuna tavalliseen menetelmään, jolla x kerrotaan itsestään n - 1 kertaa, tämä algoritmi vaatii O (log n ) -kertojen järjestyksessä ja nopeuttaa siten x n: n laskemista dramaattisesti suurille kokonaisluvuille.
Menetelmä toimii missä tahansa puoliryhmässä ja sitä käytetään usein matriisien tehojen laskemiseen , erityisesti salauksessa , mutta myös tehojen laskemiseen modulo q- kokonaislukujen renkaassa . Sitä voidaan käyttää myös ryhmän elementin tehojen laskemiseen käyttämällä negatiivisten voimien osalta sääntöä: teho ( x , - n ) = (teho ( x , n )) −1 . Tätä menetelmää sovelletaan, kun kerrotaan kaksi numeroa numerolla numerolla perustassa 2 : ryhmä on .