Exponențiere rapidă

În informatică , exponențierea rapidă este un algoritm folosit pentru a calcula rapid puteri întregi mari . În limba engleză , această metodă se mai numește pătrat și multiplică .

Scrierea matematică

Prima modalitate de a calcula o putere n p este de a multiplica n de la sine p de ori. Cu toate acestea, există metode mult mai eficiente, în care numărul de operații necesare nu mai este de ordinul lui p, ci de ordinul jurnalului ( p ) .

De exemplu, dacă scriem pentru , vedem asta

.

Este nevoie de d operații pentru a calcula toate , apoi d operații suplimentare pentru a forma produsul . Numărul total de operații este deci de 2 d , ceea ce este într-adevăr de ordinul logaritmului lui p . Această simplă remarcă algebrică duce la algoritmul prezentat în secțiunea următoare.

Algoritm

Fie n un întreg strict mai mare decât 1 , să presupunem că știm să calculăm, pentru fiecare x real , toate puterile x k ale x , pentru toate k , astfel încât 1 ≤ k < n .

Această remarcă ne aduce la următorul algoritm recursiv care calculează x n pentru un întreg strict pozitiv n  :

În comparație cu metoda obișnuită de înmulțire x de la sine n - 1 ori, acest algoritm necesită în ordinea O (log n ) multiplicări și, astfel, accelerează calculul lui x n dramatic pentru numerele întregi mari.

Metoda funcționează în orice semi-grup și este adesea utilizată pentru a calcula puterile matricilor , în special în criptografie , dar și pentru a calcula puterile într-un inel de numere întregi modulo q . Poate fi, de asemenea, utilizat pentru a calcula puterile unui element dintr-un grup, folosind pentru puteri negative regula: putere ( x , - n ) = (putere ( x , n )) −1 . Această metodă o aplicăm atunci când înmulțim două cifre cifră cu cifră în baza 2  : grupul este .

Vezi și tu

Articole similare

linkuri externe

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">