Académique Documents
Professionnel Documents
Culture Documents
Algoritmo de Euclides
El algoritmo de Euclides es un mtodo antiguo y eficaz para calcular el mximo comn divisor (MCD). Fue originalmente descrito por Euclides en su obra Elementos. El algoritmo de Euclides extendido es una ligera modificacin que permite adems expresar al mximo comn divisor como una combinacin lineal. Este algoritmo tiene aplicaciones en diversas reas comolgebra, teora de nmeros y ciencias de la computacin entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrnicas debido a su gran eficiencia.
ndice
[ocultar]
o o
o o
4 Aplicaciones
o o o
En la concepcin griega de la matemtica, los nmeros se entendan como magnitudes geomtricas. Un tema recurrente en la geometra griega es el de la conmensurabilidad de dos segmentos: dos segmentos (nmeros) AB y CD son conmensurables cuando existe un tercer segmento PQ el cual cabe exactamente un nmero 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 pitagricos 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 comn posible.
Euclides describe en la proposicin VI I.2 de sus Elementos un mtodo que permite hallar la mayor medida comn posible de dos nmeros (segmentos) que no sean primos entre s, aunque de acuerdo a la poca tal mtodo se explica en trminos geomtricos, lo que se ilustra en la siguiente transcripcin.
Para encontrar la mxima medida comn de dos nmeros que no sean primos entre s.
Sean AB y CD los dos nmeros que no son primos uno al otro. Se necesita entonces encontrar la mxima medida comn de AB yCD. Si CD mide AB entonces es una medida comn puesto que CD se mide a s mismo. Y es manifiesto que tambin es la mayor medida pues nada mayor a CD puede medir a CD. Pero si CD no mide a AB entonces algn nmero quedar de AB y CD, el menor siendo continuamente restado del mayor y que medir al nmero que le precede. Porque una unidad no quedar pues si no es as,AB y CD sern primos uno del otro [Prop. VII.1], lo cual es lo contrario de lo que se supuso. Por tanto, algn nmero queda que medir el nmero que le precede. Y sea CD midiendo BE dejando EA menor que s mismo y seaEA 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 tambin se mide a s mismo. Por tanto tambin medir todo CD. Y CD mide a BE. Entonces CF mide a BEy tambin mide a EA. As mide a todo BA y tambin mide a CD. Esto es, CF mide tanto a AB y CD por lo que es una medida comn deAB y CD. Afirmo que tambin es la mayor medida comn posible porque si no lo fuera, entonces un nmero mayor que CF mide a los nmeros AB y CD, sea ste G. Dado que G mide a CD y CD mide a BE, G tambin mide a BE. Adems, mide a todo BA por lo que mide tambin al residuo AE. Y AE mide a DF por lo que G tambin mide a DF. Mide tambin a todo DC por lo que mide tambin al residuo CF, es decir el mayor mide al menor, lo cual es imposible. Por tanto, ningn nmero mayor a CF puede medir a los nmeros AB y CD. Entonces CF es la mayor medida comn de AB y CD, lo cual se quera demostrar. Euclides. Elementos VII.2
En lenguaje moderno, el algoritmo se describe como sigue: 1. Dados dos segmentos AB y CD (con AB>CD), restamos CD de AB tantas veces como sea posible. Si no hay residuo, entonces CD es la mxima medida comn. 2. Si se obtiene un residuo EA, ste es menor que CD y podemos repetir el proceso: restamos EA tantas veces como sea posible de CD. Si al final no queda un residuo, EA es la medida comn. En caso contrario obtenemos un nuevo residuo FC menor a EA. 3. El proceso se repite hasta que en algn momento no se obtiene residuo. Entonces el ltimo residuo obtenido es la mayor medida comn. El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano
, lo que contradice la hiptesis). ste es el fundamento principal del algoritmo. Tambin es importante y es precisamente . Para fines prcticos, la notacin significa mximo
tener en cuenta que el mximo comn divisor de cualquier nmero comn divisor de y .
Segn lo antes mencionado, para calcular el mximo comn divisor de 2366 y 273 se puede proseguir de la siguiente manera: Paso Operacin Significado
procedimiento se puede aplicar a cualesquiera dos nmeros naturales. En general, si se desea encontrar el mximo comn divisor de dos nmeros naturales se siguen las siguientes reglas: 1. Si entonces y el algoritmo termina donde y Operacin es el resto de dividir entre . Para calcular se utilizan estas mismas reglas
dividido entre
es
y sobran
dividido entre
es
y sobran
dividido entre
es
y sobran
dividido entre
es
y sobran
dividido entre
es
y sobra
Como la sucesin de residuos va disminuyendo, al final un residuo tiene que ser cero y es en ese momento cuando el algoritmo termina. El mximo comn divisor es precisamente (el ltimo residuo que no es cero).
Generalizacin[editar]
En realidad el algoritmo de Euclides funciona no slo para los nmeros naturales, sino para cualesquiera elementos donde exista una "divisin con residuo". A este tipo de divisiones se les llamadivisiones euclidianas y a los conjuntos donde se puede definir dicha divisin se les llama dominios eucldeos. Por ejemplo, el conjunto de los nmeros enteros y el de los polinomios con coeficientes racionales son dominios eucldeos porque podemos definir una divisin con residuo (vase Divisin polinomial). De esta manera, se puede calcular el mximo comn divisor de dos nmeros enteros o de dos polinomios. Por ejemplo, para calcular el mximo comn divisor de los polinomios siguiente secuencia de operaciones: Paso Operacin Significado y el algoritmo de Euclides sugiere la
dividido entre
es
y sobra
dividido entre
es
y sobra
dividido entre
es
y sobra 0
Descripcin formal[editar]
Se puede expresar este algoritmo de manera ms formal usando pseudocdigo. En este caso la expresin " (vase Aritmtica modular). Algoritmo 1 de Euclides " significa "el residuo de dividir entre "
Entrada: Valores
haga lo siguiente:
Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora, ya que requerira memorizar todos los valores de
Fundamentos[editar]
Existen varias maneras de explicar el algoritmo de Euclides extendido, una de las ms comunes consiste en la siguiente: 1. Usar el algoritmo tradicional de Euclides. En cada paso, en lugar de " (vase algoritmo de la divisin). 2. Se despeja el resto de cada ecuacin. 3. Se sustituye el resto de la ltima ecuacin en la penltima, y la penltima en la antepenltima y as sucesivamente hasta llegar a la primera ecuacin, y en todo paso se expresa cada resto como combinacin lineal. Sin embargo, en areas de la comprensin y memorizacin de este algoritmo, es conveniente conocer la siguiente caracterizacin. Para multiplicar dos matrices de tamao se usa la siguiente frmula (vase Producto de matrices): dividido entre es y de resto " se escribe la ecuacin
(1) Supngase 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 ecuacin (1) de manera repetida se puede calcular el producto las primeras
, es decir, expresan a
debera ser sorprendente, pues esta multiplicacin de matrices equivale al mtodo antes descrito donde se substituye cada ecuacin en la anterior. Es importante calcular en ese mismo orden. La matriz , y aparece en el extremo derecho y la matriz . Entonces se puede calcular en el izquierdo.
Utilizando el primer rengln de esta matriz se puede leer que comn divisor de 2366 y 273 como una combinacin lineal.
Descripcin formal[editar]
Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores y con la multiplicacin de matrices:
y adems
Entrada: Valores
, y valores
tales que
1. 2. 3. Mientras 1. Divida 2. 3. 4. 4. El resultado es: es un mximo comn divisor de y y se expresa haga lo siguiente: entre para obtener el cociente y el residuo
Aplicaciones[editar]
Simplificar fracciones[editar]
Al momento de hacer clculos con fracciones, es de gran importancia saber cmo simplificarlas. Por ejemplo, la fraccin racional). De manera ms general, divisor. Por ejemplo, si se desea reducir divisiones y , primero se usa el algoritmo de Euclides para encontrar . Luego entonces se concluye que . . Se hacen las siempre que . Para reducir una fraccin cualquiera es equivalente con y (vase Nmero
Fracciones continuas[editar]
La sucesin de divisiones que se efectan al seguir algoritmo de Euclides puede ser utilizada para expresar una fraccin cualquiera se debe a que si y , entonces como fraccin continua. Esto
(3) Por ejemplo, para encontrar el mximo comn divisor de Paso Operacin y Significado el algoritmo genera la siguiente secuencia de divisiones:
1. 2. 3. 4.
De manera ms general, la fraccin continua encontrada con este algoritmo siempre es de la forma
Inversos modulares[editar]
Artculo principal: Inverso multiplicativo (aritmtica modular)
(aunque tambin se puede generalizar para cualquier otro dominio eucldeo) si al dividirlos entre
obtenemos el mismo residuo (vase Congruencia). Por ejemplo, 7 es congruente con 12 mdulo 5 porque al dividir 7 entre 5 y 12 entre 5, en ambos casos obtenemos el mismo residuo (que es 2). Cuando tiene (2) es congruente con mdulo , y se escribe , pero que se desconoce el valor , en el ejemplo anterior se de la siguiente ecuacin:
se
Al valor
mdulo
. Desafortunadamente este valor no siempre existe. Por ejemplo, con . De hecho este valor existe si y slo si
no existe
ningn nmero entero entero soluciones depende de que extendido (ahora con ecuacin
(la condicin de existencia de ). Ms an, si al usar el algoritmo de Euclides mdulo . Por ejemplo, se desea resolver la
, mientras que la unicidad depende de que el ) se obtiene , entonces el valor es el inverso modular de
Entonces con el algoritmo de Euclides extendido se calcula que modular. Ms an, como , entonces ese inverso es 2. Entonces
. Como
es
Grfica del nmero de divisiones efectuadas en el algoritmo de Euclides. El rojo indica pocas operaciones, mientras que los colores eventualmente ms azules representan mayor nmero de operaciones.
El teorema de Lam afirma que el caso peor para este algoritmo es cuando se le pide calcular el mximo comn divisor de dos nmeros consecutivos de la sucesin de Fibonacci. Por ejemplo, si se desea calcular el mximo comn divisor de Paso Operacin Significado y se obtiene la siguiente secuencia de operaciones:
En este ejemplo se observa que con estos dos nmeros de dos dgitos decimales, se necesita hacer 9 divisiones. En general, el nmero de divisiones efectuadas por el algoritmo nunca supera 5 veces el nmero de dgitos que tienen estos nmeros. En trminos de complejidad computacional, esto significa que se requieren divisiones para calcular el mximo comn divisor de y donde .
El nmero promedio de divisiones efectuadas por el algoritmo se estuvo investigando desde 1968, pero slo hasta apenas el ao 2002, Brigitte Valle demostr que si los dos nmeros se pueden representar con bits, entonces el nmero promedio de divisiones necesarias es .
Sin embargo, no basta con saber el nmero de divisiones. Hay que recordar que el algoritmo de Euclides funciona tanto para polinomios como para nmeros enteros, y en general, cualquier dominio Eucldeo. En cada caso, la complejidad del algoritmo depende del nmero de divisiones efectuadas y del costo de cada divisin. En el caso de los polinomios, el nmero de divisiones es donde es el grado de los polinomios.
Implementacin en pseudocdigo[editar]
En general, los algoritmos 1 y 2 no son muy apropiados para implementarse directamente en un lenguaje de programacin, especialmente porque consumen mucha memoria. Si no se necesitan los valores intermedios, y slo se desea calcular el mximo comn divisor de dos nmeros enteros, conviene usar estas variantes: Algoritmo de Euclides tradicional implementado de manera recurrente
Funcin Si
: entonces:
El resultado es En otro caso: El resultado es Algoritmo de Euclides tradicional implementado de manera iterativa
Funcin
Mientras
haga lo siguiente:
Funcin Si
: entonces:
Funcin
Funcin
el valor actual de
". En lenguajes como C, Java, C#, Python y Visual Basic esto significa simplemente x = y. En
otros lenguajes como Pascal se traduce en a := b, en Maxima es a : b, en R, S y Ocaml es x <- y, e inclusive se utiliza la flecha x y como el caso de APL.
y luego se asigna
Python, Ruby o Maxima esta instruccin tiene una estructura muy similar, como por ejemplo en Python: (x,y,z) = (a,b,c). En otros lenguajes es necesario el uso de variables auxiliares, como por ejemplo en lenguaje C: aux1 = b; aux2 = c; x = a; y = aux1; z = aux2;.
entre
". A esta operacin se le conoce tambin como la divisin truncada porque trunca la parte fraccionaria del
nmero. En muchos lenguajes de programacin esto se implementa simplemente como a/b. Otras maneras son a\b (Visual Basic) , a div b (Pascal) o bien a//b (Python 3).
entre
". A esta operacin se le conoce simplemente como mdulo. En muchos lenguajes de programacin se
implementa como a % b, mientras que en otros es a mod b (Visual Basic o Pascal) o bien a rem b (Ada).
Referencias[editar]
von zur Gathen, Joachim; Gerhard, Jrgen (2003). The Euclidean Algorithm. Modern Computer Algebra. Cambridge University Press. ISBN 0-521-82646-2. Shoup, Victor (2008). Euclids algorithm. A Computational Introduction to Number Theory and Algebra. Cambridge University Press. ISBN 978-0-521-85154-1. Johnsonbaugh, Richard (2005). Introduccin a la teora de nmeros. Matemticas Discretas. Mxico: PEARSON EDUCACIN. ISBN 970-26-0637-3. Ralph P. Grimaldi (1998). Propiedades de los nmeros enteros: Induccin matemtica. Matemticas Discreta y Combinatoria. Mxico: Addison Wesley Longman de Mxico. ISBN 968-444-324-2.
Lipschutz, Seymour; Lipson, Marc (2009). Propiedades de los enteros. Matemticas Discretas. McGraw-Hill. ISBN 978-970-10-7236-3. Brassard, Gilles; Bratley, Paul (1997). Anlisis de algoritmos. Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X. Valle, Brigitte (2002). Dynamical Analysis of -Euclidean Algorithms. Journal of Algorithms 44 (1). ISSN 0196-6774 , pp. 246-285.
Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Number-Theoretic Algorithms. Introduction to Algorithms. The MIT Press. ISBN 9780-262-53305-8.
Barrera Mora, Fernando (2005). Definiciones y resultados generales. Introduccin a la Teora de Grupos. Publicaciones Electrnicas de la Sociedad Matemtica Mexicana. ISBN 968-9161-02-4.
Crdenas, Humberto; Lluis, Emilio; Raggi, Francisco; Toms, Francisco (2004). Divisibilidad. lgebra Superior. Mxico: Trillas. ISBN 968-24-3783-0. Prez Segu, Mara Luisa (2006). Divisibilidad. Teora de Nmeros. Instituto de Matemticas, UNAM. ISBN 970-32-1170-0. Snchez Velzquez, Jess (1998). Algoritmos para nmeros grandes. Introduccin al anlisis de algoritmos. Mxico: Trillas. ISBN 968-24-4341-5.
Baldor, Aurelio (2008). Mximo comn divisor. lgebra. Mxico: Grupo Editorial Patria. ISBN 978-970-817-000-0.
Enlaces externos[editar]
Divisibilidad. El algoritmo de Euclides. Algoritmo de Euclides. Implementacin del algoritmo de Euclides extendido en la web Euclidean Algorithm de Wolfram MathWorld