Algoritmo de Euclides estendido

obtén multiplicativo inverso a maiores

En aritmética e programación informática, o algoritmo de Euclides estendido é unha extensión do algoritmo de Euclides que calcula, alén do máximo común divisor (mcd) dos números enteiros a e b, tamén os coeficientes da identidade de Bézout, que son números enteiros x e y tal que

.

E sendo a e b positivos, un de x ou y é negativo.

O algoritmo de Euclides estendido é particularmente útil cando a e b son coprimos. Con esa condición temos que x é o inverso multiplicativo modular de a módulo b, e y é o inverso multiplicativo modular de b módulo a.

Do mesmo xeito, o algoritmo de Euclides polinómico estendido permite calcular o inverso multiplicativo en extensións de campos alxébricos e, en particular, en corpos finitos de orde non prima.

Cun algoritmo moi similar podemos calcular o máximo común divisor polinómico e os coeficientes da identidade de Bézout de dous polinomios dunha variable.

Descrición

editar

O algoritmo de Euclides estándar son unha sucesión de divisións cuxos cocientes non se utilizan. Só se usan os restos. Para o algoritmo estendido tamén fan falta os sucesivos cocientes.

 

O algoritmo de Euclides estendido procede de xeito similar, mais engade outras dúas secuencias  , sendo   os cocientes e   os restos como segue:

O cálculo tamén se detén cando   e dá

  •   é o máximo común divisor da entrada   e  
  • Os coeficientes de Bézout son   e   é dicir  
  • Os cocientes de a e b polo seu máximo común divisor veñen dados por   e  

A maiores, se a e b son ambos os dous positivos e  , daquela

 

para   onde   denota a parte enteira de x, é dicir, o maior enteiro non maior que x.

Isto implica que o par de coeficientes de Bézout proporcionado polo algoritmo de Euclides estendido é o par mínimo de coeficientes de Bézout, xa que é o único par que satisfai ambas as desigualdades anteriores.

A continuación un exemplo pode clarificar.

Exemplo

editar

A seguinte táboa mostra como funciona o algoritmo de Euclides estendido coas entradas 240 e 46[1]. O máximo común divisor é a última entrada distinta de cero, 2 na columna "resto". O cálculo detense na fila 6, porque o resto é 0. Os coeficientes de Bézout aparecen nas dúas últimas entradas da penúltima fila. De feito, é doado verificar que -9   240 + 47   46 = 2. Finalmente, as dúas últimas entradas 23 e 120 da última fila son, ata o signo, os cocientes da entrada 46 e 240 polo máximo común divisor 2.

índice i cociente ci−1 Resto ri si ti
0 240 1 0
1 46 0 1
2 240 ÷ 46 = 5 2405 × 46 = 10 15 × 0 = 1 0 − 5 × 1 = −5
3 46 ÷ 10 = 4 464 × 10 = 6 04 × 1 = −4 1 − 4 × −5 = 21
4 10 ÷ 6 = 1 101 × 6 = 4 11 × −4 = 5 −5 − 1 × 21 = −26
5 6 ÷ 4 = 1 61 × 4 = 2 −41 × 5 = −9 21 − 1 × −26 = 47
6 4 ÷ 2 = 2 42 × 2 = 0 52 × −9 = 23 −26 − 2 × 47 = −120

A maiores, os cocientes, en azul, son os coeficientes da fracción continua de 240/46 = [5, 4, 1, 1, 2].

Algoritmo polinómico de Euclides estendido

editar

Para polinomios dunha variable con coeficientes nun corpo, todo funciona de xeito similar, división euclidiana, identidade de Bézout e algoritmo de Euclides estendido. A primeira diferenza é que, na división de Euclides e no algoritmo, a desigualdade   ten que ser substituída por unha desigualdade nos graos do polinomio   Para o demais, todo o que precede neste artigo segue sendo o mesmo, simplemente substituíndo os enteiros por polinomios.

Unha segunda diferenza reside no límite do tamaño dos coeficientes de Bézout proporcionados polo algoritmo, que é máis preciso no caso polinómico, o que leva ao seguinte teorema.

En matemáticas, é común esixir que o máximo común divisor sexa un polinomio mónico. Para conseguir isto, abonda con dividir cada elemento da saída polo coeficiente principal de   Isto permite que, se a e b son coprimos, se obtén 1 no lado dereito da desigualdade de Bézout. En caso contrario, pódese obter calquera constante distinta de cero.


Se a e b son dous polinomios distintos de cero, entón o algoritmo de Euclides estendido produce o único par de polinomios (s, t) tal que

 

O algoritmo de Euclides estendido é a ferramenta esencial para calcular inversos multiplicativos en estruturas modulares, normalmente os enteiros modulares e as extensións de campos alxébricos. Un exemplo notable deste último caso son os corpos finitos de orde non prima.

 

Unha terceira diferenza é que, no caso polinómico, o máximo común divisor defínese só ata a multiplicación por unha constante distinta de cero. Hai varias formas de definir sen ambigüidades un máximo común divisor.

 

Cálculo de inversos multiplicativos en aritmética modular

editar

Números enteiros modulares

editar

Un elemento a do anel Z/nZ ten un inverso multiplicativo (é dicir, é unha unidade) se é coprimo con n. En particular, se n é primo, a ten un inverso multiplicativo se non é cero (módulo n). Así, Z/nZ é un corpo se e só se n é primo.

A identidade de Bézout afirma que a e n son primos primos se e só se existen números enteiros s e t tal que

 

Reducindo esta identidade módulo n dáse

 

Así t, ou, máis exactamente, o resto da división de t por n, é o inverso multiplicativo de a módulo n.

Extensións simples de campos alxébricos

editar

Exemplo

editar

Por exemplo, se o polinomio usado para definir o campo finito GF(28) é p = x8 + x4 + x3 + x + 1, e a = x6 + x4 + x + 1 é o elemento cuxo inverso se desexa, entón a realización do algoritmo dá como resultado o cálculo descrito na seguinte táboa embaixo. Lembremos que en corpos de orde 2n, un ten − z = z e z + z = 0 para cada elemento z do campo). Temos que 1 é o único elemento distinto de cero en GF(2).

paso cociente r s t
p = x8 + x4 + x3 + x + 1 1 0
a = x6 + x4 + x + 1 0 1
1 x2 + 1 x2 = pa (x2 + 1) 1 x2 + 1 = 0 − 1 · (x2 + 1)
2 x4 + x2 x + 1 = ax2 (x4 + x2) x4+x2 = 0 − 1(x4+x2) x6 + x2 + 1 = 1 − (x4 + x2) (x2 + 1)
3 x + 1 1 = x2 − (x + 1) (x + 1) x5+x4+x3+x2+1 = 1 − (x +1)(x4 + x2) x7 + x6 + x3 + x = (x2 + 1) − (x + 1) (x6 + x2 + 1)
4 x + 1 0 = (x + 1) − 1 × (x + 1) x6 + x4 + x + 1 = (x4+x2) − (x+1)(x5+x4+x3+x2+1)

Así, o inverso é x7 + x6 + x3 + x, como se pode confirmar multiplicando os dous elementos xuntos e tomando o resto por p do resultado.

O caso de máis de dous números

editar

Pódese manexar o caso de máis de dous números de forma iterativa.

 

Véxase tamén

editar

Bibliografía

editar

Outros artigos

editar

Ligazóns externas

editar