Exponentiation rapide

De testwiki
Version datée du 22 avril 2024 à 05:56 par imported>Robert FERREOL (Annulation de la modification de 2A02:8440:8100:886F:0:4F:50C8:1801 (d))
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

En informatique, l'exponentiation rapide est un algorithme utilisé pour calculer rapidement de grandes puissances entières. En anglais, cette méthode est aussi appelée square-and-multiply (« mettre au carré et multiplier »).

Écriture mathématique

La première façon de calculer une puissance Modèle:Mvar est de multiplier Modèle:Mvar par lui-même Modèle:Mvar fois. Cependant, il existe des méthodes bien plus efficaces, où le nombre d'opérations nécessaires n'est plus de l'ordre de Modèle:Mvar mais de l'ordre de Modèle:Math.

Par exemple, en base 2, n=k=0dak2k pour ak{0,1}. Donc,

xn=xa0(x2)a1(x22)a2(x2d)ad.

Il faut ainsi Modèle:Mvar opérations pour calculer tous les x2k, puis Modèle:Mvar opérations supplémentaires pour former le produit des (x2k)ak. Le nombre total d'opérations est donc Modèle:Math, qui est bien de l'ordre du logarithme de Modèle:Mvar. Cette simple remarque algébrique conduit à l'algorithme présenté dans la section suivante.

Algorithme

Soit Modèle:Mvar un entier strictement supérieur à Modèle:Math, supposons que l'on sache calculer, pour chaque réel Modèle:Mvar, toutes les puissances Modèle:Mvar de Modèle:Mvar, pour tout Modèle:Mvar, tel que Modèle:Math.

Cette remarque nous amène à l'algorithme récursif suivant qui calcule Modèle:Mvar pour un entier strictement positif Modèle:Mvar :

puissance(x,n)={x,si n = 1puissance(x2,n/2),si n est pairx×puissance(x2,(n1)/2),si n est impair

En comparant à la méthode ordinaire qui consiste à multiplier Modèle:Mvar par lui-même Modèle:Math fois, cet algorithme nécessite de l'ordre de Modèle:Math multiplications et ainsi accélère le calcul de Modèle:Mvar de façon spectaculaire pour les grands entiers.

La méthode fonctionne dans tout semi-groupe et est souvent utilisée pour calculer des puissances de matrices, et particulièrement en cryptographie, mais aussi pour calculer les puissances dans un anneau d'entiers modulo Modèle:Mvar. Elle peut être aussi utilisée pour calculer des puissances d'un élément dans un groupe, en utilisant pour les puissances négatives la règle : Modèle:Math. C'est cette méthode que l'on applique lorsque l'on effectue la multiplication de deux nombres chiffre par chiffre en base 2 : le groupe est (,+).

Voir aussi

Articles connexes

Liens externes

Modèle:Portail