x
1

Algoritmo de Euclides



El algoritmo de Euclides es un método antiguo y eficiente para calcular el máximo común divisor (MCD). Fue originalmente descrito por Euclides en su obra Elementos. El algoritmo de Euclides extendido es una ligera modificación que permite además expresar al máximo común divisor como una combinación lineal. Este algoritmo tiene aplicaciones en diversas áreas como álgebra, teoría de números y ciencias de la computación, entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrónicas debido a su gran eficiencia.

En la concepción griega de la matemática, los números se entendían como magnitudes geométricas. Un tema recurrente en la geometría griega es el de la conmensurabilidad de dos segmentos: dos segmentos (números) AB y CD son conmensurables cuando existe un tercer segmento PQ que cabe exactamente un número entero de veces en los primeros dos; es decir, PQ «mide» (mensura: medida) a los segmentos AB y CD.

No cualquier par de segmentos es conmensurable, como encontraron los pitagóricos cuando establecen que el lado y la diagonal de un cuadrado no son conmensurables, pero en el caso de dos segmentos conmensurables se desea hallar la mayor medida común posible.

Euclides describe en la proposición VI I.2 de sus Elementos un método que permite hallar la mayor medida común posible de dos números (segmentos) que no sean primos entre sí, aunque de acuerdo a la época tal método se explica en términos geométricos, lo que se ilustra en la siguiente transcripción.

Sean AB y CD los dos números que no son primos uno al otro. Se necesita entonces encontrar la máxima medida común de AB y CD.

Si CD mide AB entonces es una medida común puesto que CD se mide a sí mismo. Y es manifiesto que también es la mayor medida pues nada mayor a CD puede medir a CD. Pero si CD no mide a AB entonces algún número quedará de AB y CD, el menor siendo continuamente restado del mayor y que medirá al número que le precede. Porque una unidad no quedará pues si no es así, AB y CD serán primos uno del otro [Prop. VII.1], lo cual es lo contrario de lo que se supuso.

Por tanto, algún número queda que medirá el número que le precede. Y sea CD midiendo BE dejando EA menor que sí mismo y sea EA midiendo DF dejando FC menor que sí mismo y sea FC medida de AE. Entonces, como FC mide AE y AE mide DF, FC será entonces medida de DF. Y también se mide a sí mismo. Por tanto también medirá todo CD. Y CD mide a BE. Entonces CF mide a BE y también mide a EA. Así mide a todo BA y también mide a CD. Esto es, CF mide tanto a AB y CD por lo que es una medida común de AB y CD.

Afirmo que también es la mayor medida común posible porque si no lo fuera, entonces un número mayor que CF mide a los números AB y CD, sea éste G. Dado que G mide a CD y CD mide a BE, G también mide a BE. Además, mide a todo BA por lo que mide también al residuo AE. Y AE mide a DF por lo que G también mide a DF. Mide también a todo DC por lo que mide también al residuo CF, es decir el mayor mide al menor, lo cual es imposible.

En lenguaje moderno, el algoritmo se describe como sigue:

El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano

Al dividir entre (números enteros), se obtiene un cociente y un resto . Es posible demostrar que el máximo común divisor de y es el mismo que el de y . Sea c el máximo común divisor de y , como y divide a y a , divide también a . Si existiera otro número mayor que que divide a y a , también dividiría a , por lo que no sería el mcd de y , lo que contradice la hipótesis). Este es el fundamento principal del algoritmo. También es importante tener en cuenta que el máximo común divisor de cualquier número y es precisamente . Para fines prácticos, la notación significa máximo común divisor de y .

Según lo antes mencionado, para calcular el máximo común divisor de 2366 y 273 se puede proseguir de la siguiente manera:

La secuencia de igualdades implican que . Dado que , entonces se concluye que . Este mismo procedimiento se puede aplicar a cualesquiera dos números naturales. En general, si se desea encontrar el máximo común divisor de dos números naturales y , se siguen las siguientes reglas:

Asuma que llamamos y . Aplicando estas reglas se obtiene la siguiente secuencia de operaciones:

Como la sucesión de residuos va disminuyendo, al final un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina. El máximo común divisor es precisamente (el último residuo que no es cero).

En realidad, el algoritmo de Euclides funciona no sólo para los números naturales, sino para cualquier elemento en el que exista una "división con residuo". A este tipo de divisiones se les llama divisiones euclidianas y a los conjuntos donde se puede definir dicha división se les llama dominios euclídeos. Por ejemplo, el conjunto de los números enteros y el de los polinomios con coeficientes racionales son dominios euclídeos porque podemos definir una división con residuo (véase División polinomial). De esta manera, se puede calcular el máximo común divisor de dos números enteros o de dos polinomias

Por ejemplo, para calcular el máximo común divisor de los polinomios y el algoritmo de Euclides sugiere la siguiente secuencia de operaciones:

De esta manera se concluye que su máximo común divisor es .

Se puede expresar este algoritmo de manera más formal usando pseudocódigo. En este caso la expresión "" significa "el residuo de dividir entre " (véase Aritmética modular).

Entrada: Valores y pertenecientes a un dominio euclídeo

Salida: Un máximo común divisor de y

Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora, ya que requeriría memorizar todos los valores de .

El algoritmo de Euclides extendido permite, además de encontrar un máximo común divisor de dos números enteros y , expresarlo como la mínima combinación lineal de esos números, es decir, encontrar números enteros y tales que . Esto se generaliza también hacia cualquier dominio euclidiano.

Existen varias maneras de explicar el algoritmo de Euclides extendido, una de las más comunes consiste en la siguiente:

Sin embargo, en aras de la comprensión y memorización de este algoritmo, es conveniente conocer la siguiente caracterización. Para multiplicar dos matrices de tamaño se usa la siguiente fórmula (véase Producto de matrices):

(1)

Supóngase que se utiliza el algoritmo de Euclides tradicional para calcular los valores y que ahí se describen. Por cada valor calculado se puede formar la matriz . Usando la ecuación (1) de manera repetida se puede calcular el producto de las primeras matrices de este tipo:

Resulta ser que los valores y tienen la propiedad de que , es decir, expresan a como una combinación lineal de y . Particularmente, como entonces se tiene , lo cual es la solución del problema. Esta propiedad no debería ser sorprendente, pues esta multiplicación de matrices equivale al método antes descrito donde se substituye cada ecuación en la anterior. Es importante calcular en ese mismo orden. La matriz aparece en el extremo derecho y la matriz en el izquierdo.

Regresando al primer ejemplo, la sucesión de cocientes es , y . Entonces se puede calcular

Utilizando el primer renglón de esta matriz se puede leer que , es decir, se ha encontrado la manera de expresar al máximo común divisor de 2366 y 273 como una combinación lineal.

Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores y con la multiplicación de matrices:

De esta manera y además . Por lo tanto el algoritmo en pseudocódigo se puede expresar como sigue:

Entrada: Valores y pertenecientes a un dominio euclídeo

Salida: Un máximo común divisor de y , y valores y tales que

Al momento de hacer cálculos con fracciones, es de gran importancia saber cómo simplificarlas. Por ejemplo, la fracción es equivalente con (véase Número racional). De manera más general, siempre que . Para reducir una fracción cualquiera , sólo se necesita dividir y entre su máximo común divisor.

Por ejemplo, si se desea reducir , primero se usa el algoritmo de Euclides para encontrar . Se hacen las divisiones y . Luego entonces se concluye que .

La sucesión de divisiones que se efectúan al seguir el algoritmo de Euclides puede ser utilizada para expresar una fracción cualquiera como fracción continua. Esto se debe a que si y , entonces

(3)

Por ejemplo, para encontrar el máximo común divisor de y el algoritmo genera la siguiente secuencia de divisiones:

Todas estas ecuaciones las podemos hacer parecidas a la ecuación (3 3):

Si se sustituye la segunda ecuación en la primera, se obtiene

Si se repite este proceso de substitución entonces se obtiene la expresión deseada:

De manera más general, la fracción continua encontrada con este algoritmo siempre es de la forma


Decimos que dos números enteros son congruentes módulo (aunque también se puede generalizar para cualquier otro dominio euclídeo) si al dividirlos entre obtenemos el mismo residuo (véase Congruencia). Por ejemplo, 7 es congruente con 12 módulo 5 porque al dividir 7 entre 5 y 12 entre 5, en ambos casos obtenemos el mismo residuo (que es 2). Cuando es congruente con módulo se escribe , en el ejemplo anterior se tiene . Supóngase que se conocen los valores de , y , pero que se desconoce el valor en la siguiente congruencia:

(2)

Basta encontrar un valor que satisfaga: , pues de esta manera al multiplicar la ecuación (2) por se tendrá la solución deseada:

Al elemento se le llama "inverso módulo " de . Desafortunadamente este valor no siempre existe. Por ejemplo, con y no existe ningún número entero tal que . De hecho este valor existe si y sólo si (la existencia de soluciones depende de la condición , mientras que la unicidad depende de que el ). Más aún, si al usar el algoritmo de Euclides extendido (ahora con ) se obtiene , entonces el valor es el inverso módulo de . Por ejemplo, se desea resolver la ecuación

Entonces con el algoritmo de Euclides extendido se obtiene que . Como entonces 5 tiene un inverso módulo . Más aún, como , entonces ese inverso es 2. Entonces

Es decir que el valor de es .

El teorema de Lamé afirma que el caso peor para este algoritmo es cuando se le pide calcular el máximo común divisor de dos números consecutivos de la sucesión de Fibonacci. Por ejemplo, si se desea calcular el máximo común divisor de y se obtiene la siguiente secuencia de operaciones:

En este ejemplo se observa que con estos dos números de dos dígitos decimales, se necesita hacer 9 divisiones. En general, el número de divisiones efectuadas por el algoritmo nunca supera 5 veces el número de dígitos que tienen estos números. En términos de complejidad computacional, esto significa que se requieren divisiones para calcular el máximo común divisor de y donde .

El número promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968, pero solo hasta apenas el año 2002, Brigitte Vallée demostró que si los dos números se pueden representar con bits, entonces el número promedio de divisiones necesarias es .

Sin embargo, no basta con saber el número de divisiones. Hay que recordar que el algoritmo de Euclides funciona tanto para polinomios como para números enteros, y en general, cualquier dominio Euclídeo. En cada caso, la complejidad del algoritmo depende del número de divisiones efectuadas y del costo de cada división. En el caso de los polinomios, el número de divisiones es donde es el grado de los polinomios.

En general, los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programación, especialmente porque consumen mucha memoria. Si no se necesitan los valores intermedios, y sólo se desea calcular el máximo común divisor de dos números enteros, conviene usar estas variantes:

Función :

Función :

Función :

Función :

Función :

Acerca de la notación empleada:



Escribe un comentario o lo que quieras sobre Algoritmo de Euclides (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!