Algoritmo de Euclides estendido: Diferenzas entre revisións

De testwiki
Saltar á navegación Saltar á procura
imported>Breogan2008
 
(Sen diferenzas.)

Revisión actual feita o 6 de febreiro de 2025 ás 18:38

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

ax+by=gcd(a,b).

E sendo Modelo:Mvar e Modelo:Mvar positivos, un de Modelo:Mvar ou Modelo:Mvar é 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 corpos 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

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.

r0=ar1=bs0=1s1=0t0=0t1=1ri+1=ri1ciri0ri+1<|ri|(isto define ci)si+1=si1cisiti+1=ti1citi

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

O cálculo tamén se detén cando rk+1=0 e dá

  • rk é o máximo común divisor da entrada a=r0 e b=r1.
  • Os coeficientes de Bézout son sk e tk, é dicir gcd(a,b)=rk=ask+btk
  • Os cocientes de a e b polo seu máximo común divisor veñen dados por sk+1=±bgcd(a,b) e tk+1=±agcd(a,b)

A maiores, se a e b son ambos os dous positivos e gcd(a,b)min(a,b), daquela

|si|b2gcd(a,b)e|ti|a2gcd(a,b)

para 0ik, onde x denota a parte enteira de Modelo:Mvar, é dicir, o maior enteiro non maior que Modelo:Mvar.

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

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

índice i cociente cModelo:Sub Resto rModelo:Sub sModelo:Sub tModelo:Sub
0 Modelo:Color Modelo:Color 0
1 Modelo:Color Modelo:Color 1
2 Modelo:Color ÷ Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color 0 − Modelo:Color × 1 = −5
3 Modelo:Color ÷ Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color 1 − Modelo:Color × −5 = 21
4 Modelo:Color ÷ Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color −5 − Modelo:Color × 21 = −26
5 Modelo:Color ÷ Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color 21 − Modelo:Color × −26 = Modelo:Color
6 Modelo:Color ÷ Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color Modelo:ColorModelo:Color × Modelo:Color = Modelo:Color −26 − Modelo:Color × 47 = Modelo:Color

A maiores, os cocientes, en azul, son os coeficientes da fracción continua de Modelo:Sfrac = [5, 4, 1, 1, 2].

Algoritmo polinómico de Euclides estendido

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 0ri+1<|ri| ten que ser substituída por unha desigualdade nos graos do polinomio degri+1<degri. 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 rk. 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

as+bt=gcd(a,b)

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

degs<degbdeg(gcd(a,b)),degt<degadeg(gcd(a,b)).

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.

gcd(a1,a2,,an)=gcd(a1,gcd(a2,gcd(a3,,gcd(an1,an))),),

Cálculo de inversos multiplicativos en aritmética modular

Números enteiros modulares

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

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

ns+at=1

Reducindo esta identidade módulo Modelo:Math dáse

at1modn.

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

Extensións simples de corpos alxébricos

Exemplo

Por exemplo, se o polinomio usado para definir o corpo finito GF(28) é Modelo:Math, e Modelo:Math é 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 corpo). Temos que 1 é o único elemento distinto de cero en GF(2).

paso cociente r s t
Modelo:Math 1 0
Modelo:Math 0 1
1 Modelo:Math Modelo:Math 1 Modelo:Math
2 Modelo:Math Modelo:Math Modelo:Math Modelo:Math
3 Modelo:Math Modelo:Math Modelo:Math Modelo:Math
4 Modelo:Math Modelo:Math Modelo:Math

Así, o inverso é Modelo:Math, como se pode confirmar multiplicando os dous elementos xuntos e tomando o resto por Modelo:Mvar do resultado.

O caso de máis de dous números

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

gcd(a1,a2,,an)=gcd(a1,gcd(a2,gcd(a3,,gcd(an1,an))),),

Notas

Modelo:Reflist

Véxase tamén

Bibliografía

Outros artigos

Ligazóns externas

Modelo:Control de autoridades