Algoritmo de Euclides

De testwiki
Revisión feita o 29 de xaneiro de 2025 ás 09:36 por imported>Andresv.63 (Algoritmo orixinal de Euclides)
(dif) ← Revisión máis antiga | Revisión actual (dif) | Revisión máis nova → (dif)
Saltar á navegación Saltar á procura

O algoritmo de Euclides é un método antigo e eficaz para calcular o máximo común divisor (MCD). Foi descrito orixinariamente por Euclides na súa obra Elementos. O algoritmo de Euclides estendido é unha lixeira modificación que permite ademais expresar o máximo común divisor como unha combinación linear. Este algoritmo ten aplicacións en diversas áreas como álxebra, teoría dos números e ciencias da computación entre outras. Cunhas pequenas modificacións adoita empregarse en computadoras electrónicas debido á súa grande eficiencia.

Algoritmo orixinal de Euclides

AB e CD os segmentos conmensurables.
Exemplo do algoritmo orixinal de Euclides.

Na concepción grega da matemática, os números entendíanse como magnitudes xeométricas. Un tema recorrente na xeometría grega é o da conmensurabilidade de dous segmentos: dous segmentos (números) AB e CD son conmensurables cando existe un terceiro segmento PQ que colle exactamente un número enteiro de veces nos primeiros dos, é dicir, PQ «mide» os segmentos AB e CD.

Non todo par de segmentos é conmensurable, como atoparon os pitagóricos cando establecen que o lado e a diagonal dun cadrado non son conmensurables, pero no caso de dous segmentos conmensurables deséxase atopar a maior medida común posible.

Euclides describe na proposición VII.2 dos seus Elementos un método que permite atopar a maior medida común posible de dous números (segmentos) que non sexan primos entre eles, aínda que pola época tal método se explica en termos xeométricos.

Modelo:Cita

En linguaxe moderno, o algoritmo descríbese como segue:

  1. Dados dous segmentos AB e CD (con AB>CD), restamos CD de AB tantas veces como sexa posible. Se non houber residuo, entón CD é a máxima medida común.
  2. Se se obtiver un residuo EA, este é menor que CD e pódese repetir o proceso: restamos EA tantas veces como sexa posible de CD. Se ao final non queda un residuo, EA é a medida común. En caso contrario obtense un novo residuo FC menor que EA.
  3. Repítese o proceso ata que nalgún momento non se obteña residuo. Entón o último residuo obtido é a maior medida común.

O feito de que os segmentos son conmesurables é clave para asegurar que o proceso remata.

Algoritmo de Euclides tradicional

Ao dividir a entre b (números enteiros), obtense un cociente q e un resto r. É posible demostrar que o máximo común divisor de a e b é o mesmo que o de b e r Este é o fundamento principal do algoritmo. Tamén é importante ter en conta que o máximo común divisor de calquera número a e 0 é precisamente a. Para fins prácticos, a notación mcd(a,b) significa máximo común divisor de a e b.

Segundo o antes mencionado, para calcular o máximo común divisor de 2366 e 273 pódese proseguir do seguinte xeito:

Paso Operación Significado
1 2366 dividido entre 273 é 8 e sobran 182 mcd(2366,273)=mcd(273,182)
2 273 dividido entre 182 é 1 e sobran 91 mcd(273,182)=mcd(182,91)
3 182 dividido entre 91 é 2 e sobra 0 mcd(182,91)=mcd(91,0)

A secuencia de igualdades mcd(2366,273)=mcd(273,182)=mcd(182,91)=mcd(91,0) implican que mcd(2366,273)=mcd(91,0). Dado que mcd(91,0)=91, entón conclúese que mcd(2366,273)=91. Este mesmo procedemento pode aplicarse a calquera par de números naturais. En xeral, se se desexa atopar o máximo común divisor de dous números naturais a e b, séguense as seguintes regras:

  1. Se b=0 entón mcd(a,b)=a e o algoritmo termina
  2. Noutro caso, mcd(a,b)=mcd(b,r) onde r é o resto de dividir a entre b. Para calcular mcd(b,r) empréganse estas mesmas regras.

Se chamamos a=r0 e b=r1, aplicando estas regras obtense a seguinte secuencia de operacións:

Paso Operación Significado
1 r0 dividido entre r1 é q1 e sobran r2 mcd(r0,r1)=mcd(r1,r2)
2 r1 dividido entre r2 é q2 e sobran r3 mcd(r1,r2)=mcd(r2,r3)
3 r2 dividido entre r3 é q3 e sobran r4 mcd(r2,r3)=mcd(r3,r4)
n rn1 dividido entre rn é qn e sobran rn+1 mcd(rn1,rn)=mcd(rn,rn+1)
n+1 rn dividido entre rn+1 é qn+1 e sobra 0 mcd(rn,rn+1)=mcd(rn+1,0)

Como a sucesión de residuos vai diminuíndo, ao final un residuo ten que ser cero e é nese momento cando o algoritmo termina. O máximo común divisor é precisamente rn+1 (o último residuo que non é cero).

Xeneralización

En realidade o algoritmo de Euclides funciona non só para os números naturais, senón para calquera elemento no que exista unha "división con residuo". Este tipo de divisións chámanse divisións euclidianas e aos conxuntos onde se pode definir esa división chámanse dominios euclidianos. Por exemplo, o conxunto dos números enteiros e o dos polinomios con coeficientes racionais son dominios euclidianos porque podemos definir unha división con residuo. Deste xeito, pode calcularse o máximo común divisor de dous números enteiros ou de dous polinomios.

Por exemplo, para calcular o máximo común divisor dos polinomios P(x)=x5+2x3+x e Q(x)=x41 o algoritmo de Euclides suxire a seguinte secuencia de operacións:

Paso Operación Significado
1 x5+2x3+x dividido entre x41 é x e sobra 2x3+2x mcd(x5+2x3+x,x41)=mcd(x41,2x3+2x)
2 x41 dividido entre 2x3+2x é 12x e sobra x21 mcd(x41,2x3+2x)=mcd(2x3+2x,x21)
3 2x3+2x dividido entre x21 é 2x e sobra 0 mcd(2x3+2x,x21)=mcd(x21,0)

Deste xeito conclúese que o seu máximo común divisor é x21.

Algoritmo de Euclides estendido

O algoritmo de Euclides estendido permite, ademais de atopar o máximo común divisor de dous números enteiros a e b, expresalo como a mínima combinación linear deses números, é dicir, atopar números enteiros s e t tales que mcd(a,b)=as+bt. Isto tamén se xeneraliza para calquera dominio euclidiano.

Fundamentos

Existen varios xeitos de explicar o algoritmo de Euclides estendido; unha das máis comúns consiste no seguinte:

  1. Usar o algoritmo tradicional de Euclides. En cada paso, en lugar de "a dividido entre b é q e de resto r" escríbese a ecuación a=bq+r.
  2. Despéxase o resto de cada ecuación.
  3. Substitúese o resto da última ecuación na penúltima, e a penúltima na antepenúltima e así sucesivamente ata chegar á primeira ecuación, e en todos os pasos exprésase cada resto como combinación linear.

Complexidade do algoritmo

Gráfica do número de divisións efectuadas no algoritmo de Euclides. O vermello indica poucas operacións, mentres que as cores eventualmente máis azuis representan maior número de operacións.

O teorema de Lamé afirma que o caso peor para este algoritmo é cando se quere calcular o máximo común divisor de dous números consecutivos da sucesión de Fibonacci. Por exemplo, se se desexa calcular o máximo común divisor de f10=55 e f11=89 obtense a seguinte secuencia de operacións:

Paso Operación Significado
1 89 dividido entre 55 é 1 e sobran 34 mcd(89,55)=mcd(55,34)
2 55 dividido entre 34 é 1 e sobran 21 mcd(55,34)=mcd(34,21)
3 34 dividido entre 21 é 1 e sobran 13 mcd(34,21)=mcd(21,13)
4 21 dividido entre 13 é 1 e sobran 8 mcd(21,13)=mcd(13,8)
5 13 dividido entre 8 é 1 e sobran 5 mcd(13,8)=mcd(8,5)
6 8 dividido entre 5 é 1 e sobran 3 mcd(8,5)=mcd(5,3)
7 5 dividido entre 3 é 1 e sobran 2 mcd(5,3)=mcd(3,2)
8 3 dividido entre 2 é 1 e sobran 1 mcd(3,2)=mcd(2,1)
9 2 dividido entre 1 é 2 e sobra 0 mcd(2,1)=mcd(1,0)

Neste exemplo obsérvase que con estes dous números de dous díxitos decimais, precísanse facer 9 divisións. En xeral, o número de divisións efectuadas polo algoritmo nunca supera 5 veces o número de díxitos que teñen estes números. En termos de complexidade computacional, isto significa que se requiren O(logn) divisións para calcular o máximo común divisor de n e m onde n>m.

O número medio de divisións efectuadas polo algoritmo estívose investigando dende 1968, pero só en 2002, Brigitte Vallée demostrou que se os dous números se poden representar con n bits, entón o número medio de divisións necesarias é π26n.

Non obstante, non abonda con saber o número de divisións. Hai que lembrar que o algoritmo de Euclides funciona tanto para polinomios como para números enteiros, e en xeral, calquera dominio euclidiano. En cada caso, a complexidade do algoritmo depende do número de divisións efectuadas e do custo de cada división. No caso dos polinomios, o número de divisións é O(logn) onde n é o grao dos polinomios.

Véxase tamén

Modelo:Commonscat

Bibliografía

Ligazóns externas

Modelo:Control de autoridades