Article de reference

Algorithme d'Euclide étendu

En arithmétique et en programmation informatique , l' algorithme d'Euclide étendu est une extension de l' algorithme d'Euclide et calcule, en plus du plus grand commun diviseur ...

En arithmétique et en programmation informatique , l' algorithme d'Euclide étendu est une extension de l' algorithme d'Euclide et calcule, en plus du plus grand commun diviseur (PGCD) des entiers a et b , les coefficients de l'identité de Bézout , qui sont des entiers x et y tels que

Il s'agit d'un algorithme de certification , car le PGCD est le seul nombre qui puisse simultanément satisfaire cette équation et diviser les entrées. Il permet également de calculer, à un coût presque nul, les quotients de a et b par leur plus grand commun diviseur.

algorithme très similaire pour calculer le plus grand commun diviseur polynomial et les coefficients de l'identité de Bézout de deux polynômes univariés .

L'algorithme d'Euclide étendu est particulièrement utile lorsque a et b sont premiers entre eux . Sous cette condition, x est l' inverse multiplicatif modulaire de a modulo b , et y est l'inverse multiplicatif modulaire de b modulo a . De même, l'algorithme d'Euclide étendu polynomial permet de calculer l' inverse multiplicatif dans les extensions de corps algébriques et, en particulier, dans les corps finis d'ordre non premier. Il s'ensuit que ces deux algorithmes d'Euclide étendus sont largement utilisés en cryptographie . En particulier, le calcul de l' inverse multiplicatif modulaire est une étape essentielle de la génération des paires de clés dans la méthode de chiffrement à clé publique RSA .

Description

L'algorithme d'Euclide standard procède par une succession de divisions euclidiennes dont les quotients ne sont pas utilisés. Seuls les restes sont conservés. Pour l'algorithme étendu, les quotients successifs sont utilisés. Plus précisément, l'algorithme d'Euclide standard, avec a et b comme entrées, consiste à calculer une séquence

La principale propriété de la division euclidienne est que les inégalités à droite définissent de manière unique

Le calcul s'arrête lorsqu'on atteint un reste

L'algorithme euclidien étendu procède de manière similaire, mais ajoute deux autres séquences, comme suit

Le calcul s'arrête également lorsque

  • Les coefficients de Bézout sont
  • Les quotients de a et b par leur plus grand commun diviseur sont donnés par

De plus, si a et b sont tous deux positifs et

pour

Cela implique que la paire de coefficients de Bézout fournie par l'algorithme euclidien étendu est la paire minimale de coefficients de Bézout, car il s'agit de la seule paire satisfaisant les deux inégalités ci-dessus.

Cela signifie également que si a et b tiennent dans un type de données entier non signé , un programme informatique peut calculer les coefficients de Bézout dans le type entier signé correspondant sans dépassement d'entier .

Exemples

Le tableau suivant illustre le déroulement de l'algorithme d'Euclide étendu avec les entrées et Le plus grand commun diviseur (PGCD) est la dernière valeur non nulle, soit dans la colonne « reste ». Le calcul s'arrête à la ligne 6, car le reste y est . Les coefficients de Bézout apparaissent dans les deux dernières colonnes de l'avant-dernière ligne. En effet, on vérifie aisément que × 240 + 47 × 46 = 2. Enfin, les deux dernières valeurs, et , de la dernière ligne correspondent, au signe près, aux quotients des entrées et par le PGCD .

L'exemple suivant utilise une notation plus compacte. Le plus grand commun diviseur de

Algorithme d'Euclide étendu pour 𝑔 = pgcd(68,30)
Algorithme d'Euclide étendu pour 𝑔 = pgcd(68,30)

En appliquant les additions de multiples indiquées en vert de manière analogue aux équations, en commençant par

Preuve

Depuis

À partir de l'équation

Les relations de récurrence, pour

peut être démontré par induction. En fait, pour

En supposant qu'ils soient satisfaits pour certains

En particulier, l'équation

Multiplication

Donc,

Pour prouver la dernière assertion, supposons ques et t pour ( a , b ) sous l'hypothèse d'égalité des termes (EEA) sont, à 0 et 1 près, les séquences t et s pour ( b , a ). Les définitions montrent alors que le cas ( a , b ) se réduit au cas ( b , a ). Supposons donc que…b un>b{\displaystyle a>b}b sans perte de généralité .

On peut constater queb un>b{\displaystyle a>b}b Il en va de même pour lea et b sont tous deux positifs et

Ceci, accompagné du fait que

Algorithme d'Euclide étendu polynomial

doit être remplacée par une inégalité sur les degrés

Une seconde différence réside dans la limite de la taille des coefficients de Bézout fournie par l'algorithme euclidien étendu, qui est plus précise dans le cas polynomial, ce qui conduit au théorème suivant.

Si a et b sont deux polynômes non nuls, alors l'algorithme d'Euclide étendu produit la paire unique de polynômes ( s , t ) telle que

et

Une troisième différence réside dans le fait que, dans le cas des polynômes, le plus grand commun diviseur est défini à une multiplication près par une constante non nulle. Il existe plusieurs façons de définir sans ambiguïté un plus grand commun diviseur.

En mathématiques, il est courant d'exiger que le plus grand commun diviseur soit un polynôme unitaire . Pour ce faire, il suffit de diviser chaque élément du résultat par le coefficient dominant de ce polynôme.a et b sont premiers entre eux, d'obtenir 1 dans le membre de droite de l'inégalité de Bézout. Sinon, on peut obtenir n'importe quelle constante non nulle. En calcul formel , les polynômes ont généralement des coefficients entiers, et cette méthode de normalisation du plus grand commun diviseur introduit trop de fractions pour être pratique.

La deuxième façon de normaliser le plus grand commun diviseur dans le cas des polynômes à coefficients entiers consiste à diviser chaque résultat par le contenu de

Une troisième approche consiste à étendre l'algorithme des suites de pseudo-restes sous-résultants d'une manière similaire à l'extension de l'algorithme d'Euclide à l'algorithme d'Euclide étendu. Ceci permet, en partant de polynômes à coefficients entiers, que tous les polynômes calculés aient des coefficients entiers. De plus, chaque reste calculé

a et b . Dans cette forme de l'identité de Bézout, la formule ne comporte pas de dénominateur. Si l'on divise tous les termes par le résultant, on retrouve l'identité de Bézout classique, avec un dénominateur commun explicite pour les nombres rationnels qui y figurent.

Pseudocode

, on peut résoudre pour
fonction pgcd_étendu(a, b) s := 0; vieux_s := 1 r := b; vieux_r := a tant que r ≠ 0 faire quotient := ancien_r div r (ancien_r, r) := (r, ancien_r − quotient × r) (ancien_s, s) := (s, ancien_s − quotient × s) si b ≠ 0 alors bezout_t := (old_r − old_s × a) div b sinon bezout_t := 0 sortie "Coefficients de Bézout :", (old_s, bezout_t) sortie "Plus grand commun diviseur :", old_r

Cependant, dans de nombreux cas, il ne s'agit pas réellement d'une optimisation : alors que l'algorithme précédent n'est pas sujet aux dépassements de capacité lorsqu'il est utilisé avec des entiers machine (c'est-à-dire des entiers dont le nombre de chiffres est limité), la multiplication de ` old_s` × `a` dans le calcul de `bezout_t` peut provoquer un dépassement de capacité, limitant ainsi cette optimisation aux entrées pouvant être représentées avec moins de la moitié de la taille maximale. Avec des entiers de taille illimitée, le temps nécessaire aux multiplications et divisions croît quadratiquement avec la taille des entiers. Cela signifie que l'« optimisation » remplace une séquence de multiplications/divisions de petits entiers par une seule multiplication/division, ce qui requiert un temps de calcul supérieur à celui de l'ensemble des opérations remplacées.

Simplification des fractions

Une fraction / b est sous forme simplifiée canonique si et sont premiers entre eux et si positif. Cette forme simplifiée canonique peut être obtenue en remplaçant les trois lignes de sortie du pseudo-code précédent par

Si , afficher « Division par zéro » . Si  s  t pour éviter les dénominateurs négatifs ).  s , alors afficher  ( pour éviter les dénominateurs égaux à 1)  Afficher 

La démonstration de cet algorithme repose sur le fait que et sont deux entiers premiers entre eux tels que , et donc

Si divise sans reste, l'algorithme n'effectue qu'une seule itération et à la fin. C'est le seul cas où le résultat est un entier.

Calcul des inverses multiplicatifs dans les structures modulaires

L'algorithme d'Euclide étendu est l'outil essentiel pour le calcul des inverses multiplicatifs dans les structures modulaires, notamment les entiers modulaires et les extensions de corps algébriques . Les corps finis d'ordre non premier en sont un exemple notable.

Entiers modulaires

est un entier positif, l' anneau peut être identifié à l'ensemble { des restes de la division euclidienne par , de l'addition et de la multiplication consistant à prendre le reste par du résultat de l'addition et de la multiplication des entiers. Un élément de possède un inverse multiplicatif (c'est-à-dire qu'il est ) s'il est premier avec . En particulier, si est premier , possède un inverse multiplicatif s'il est non nul (modulo ). Ainsi, si et seulement si est premier.

L'identité de Bézout affirme que et sont premiers entre eux si et seulement s'il existe des entiers et tels que

La réduction de cette identité modulo donne

Ainsi , , ou plus exactement, le reste de la division de par , est l'inverse multiplicatif de modulo .

Pour adapter l'algorithme d'Euclide étendu à ce problème, il convient de noter que le coefficient de Bézout de n'est pas nécessaire et n'a donc pas besoin d'être calculé. De plus, pour obtenir un résultat positif et inférieur à n , on peut utiliser le fait que l'entier fourni par l'algorithme satisfait . Autrement dit, si , il faut lui ajouter à la fin (un exemple est disponible dans l'article « Inverse multiplicatif modulaire »). On obtient ainsi le pseudocode suivant, où n est un entier supérieur à 1.

fonction inverse(a, n) t := 0; newt := 1 r := n; nouveaur := a while newr ≠ 0 do quotient := r div newr (t, triton) := (triton, t − quotient × triton) (r, nouveau) := (nouveau, r − quotient × nouveau) si r > 1 alors retourner « a n'est pas inversible » si t < 0 alors t := t + n retourner t

Extensions de corps algébriques simples

L'algorithme d'Euclide étendu est également l'outil principal pour le calcul des inverses multiplicatifs dans les extensions algébriques simples de corps . Un cas important, largement utilisé en cryptographie et en théorie du codage , est celui des corps finis d'ordre non premier. En effet, si est un nombre premier et , le corps d'ordre est une extension algébrique simple du corps premier à éléments, engendrée par une racine d'un polynôme irréductible de degré .

Une extension algébrique simple d'un corps , engendrée par la racine d'un polynôme irréductible de degré peut être identifiée à l' anneau quotient.

L'algorithme est très similaire à celui présenté précédemment pour le calcul de l'inverse multiplicatif modulaire. Deux différences principales subsistent : premièrement, l'avant-dernière ligne est inutile, car le coefficient de Bézout fourni est toujours de degré inférieur à . Deuxièmement, le plus grand commun diviseur fourni, lorsque les polynômes d'entrée sont premiers entre eux, peut être n'importe quel élément non nul de ; ce coefficient de Bézout (un polynôme généralement de degré positif) doit donc être multiplié par l'inverse de cet élément de Dans le pseudocode qui suit, est un polynôme de degré supérieur à un, et est un polynôme.

fonction inverse(a, p) t := 0; newt := 1 r := p; nouveaur := a while newr ≠ 0 do quotient := r div newr (r, nouveau) := (nouveau, r − quotient × nouveau) (t, triton) := (triton, t − quotient × triton) si degree(r) > 0 alors retourner "Soit p n'est pas irréductible, soit a est un multiple de p" retour (1/r) × t

Exemple

Par exemple, si le polynôme définissant le corps fini GF(2⁸ x⁴ + calcul corps d'ordre 2ⁿ, on a −z = z et z + z 0 pour tout élément z du corps . Puisque 1 est le seul élément non nul de GF(2), la modification de la dernière ligne du pseudocode est inutile.

Ainsi, l'inverse est , comme on peut le confirmer en multipliant les deux éléments ensemble et en prenant le reste par Pour le prouver, supposons que…

Donc si

Pour appliquer cette méthode à n nombres, on utilise l'induction.

les équations suivent directement.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index