Documente Academic
Documente Profesional
Documente Cultură
Algoritmo de Euclides
El algoritmo de Euclides es un mtodo antiguo y eficaz para calcular el mximo comn divisor (MCD). Fue originalmente descrito
Portada por Euclides en su obra Elementos. El algoritmo de Euclides extendido es una ligera modificacin que permite adems expresar al
Portal de la comunidad mximo comn divisor como una combinacin lineal. Este algoritmo tiene aplicaciones en diversas reas como lgebra, teora de
Actualidad nmeros y ciencias de la computacin, entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrnicas
Cambios recientes
debido a su gran eficiencia.
Pginas nuevas
Pgina aleatoria ndice [ocultar]
Ayuda
1 Algoritmo original de Euclides
Donaciones
2 Algoritmo de Euclides tradicional
Notificar un error
2.1 Generalizacin
Imprimir/exportar 2.2 Descripcin formal
Crear un libro
3 Algoritmo de Euclides extendido
Descargar como PDF
3.1 Fundamentos
Versin para imprimir
3.2 Descripcin formal
En otros proyectos 4 Aplicaciones
Wikimedia Commons 4.1 Simplificar fracciones
Herramientas 4.2 Fracciones continuas
Lo que enlaza aqu 4.3 Inversos modulares
Cambios en 5 Complejidad del algoritmo
enlazadas
6 Implementacin en pseudocdigo
Subir archivo
7 Referencias
Pginas especiales
Enlace permanente 8 Enlaces externos
Informacin de la
pgina
Elemento de Wikidata Algoritmo original de Euclides [ editar ]
Citar esta pgina
En la concepcin griega de la matemtica, los nmeros se entendan como magnitudes geomtricas. Un tema recurrente en la
Otros proyectos
geometra griega es el de la conmensurabilidad de dos segmentos: dos segmentos (nmeros) AB y CD son conmensurables cuando
Wikilibros
Convertido de web en PDF con
existe un tercer segmento PQ el cual cabe exactamente un nmero entero de veces en los
En otros idiomas
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
English establecen que el lado y la diagonal de un cuadrado no son conmensurables, pero en el caso
Franais
de dos segmentos conmensurables se desea hallar la mayor medida comn posible.
Italiano
Euclides describe en la proposicin VI I.2 de sus Elementos un mtodo que permite hallar la
Romn mayor medida comn posible de dos nmeros (segmentos) que no sean primos entre s,
Scots aunque de acuerdo a la poca tal mtodo se explica en trminos geomtricos, lo que se
ilustra en la siguiente transcripcin.
44 ms
Editar Para encontrar la mxima medida comn de dos nmeros que no sean primos
enlaces entre s.
AB y CD los segmentos
conmensurables.
Sean AB y CD los dos nmeros que no son primos uno al otro. Se necesita entonces
encontrar la mxima medida comn de AB y CD.
Por tanto, algn nmero queda que medir el nmero 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 tambin se mide a s mismo. Por tanto tambin
medir todo CD. Y CD mide a BE. Entonces CF mide a BE y 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 de AB 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
Convertido de web en PDF con
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.
El hecho de que los segmentos son conmesurables es clave para asegurar que el proceso termina tarde o temprano
Al dividir entre (nmeros enteros), se obtiene un cociente y un residuo . Es posible demostrar que el mximo comn divisor de
y es el mismo que el de y (Sea c el mximo comn divisor de y ,.Como y divide a ya divide tambin a
. Si existiera otro nmero mayor que que divide a y a , tambin dividira a , por lo que no sera el mcd de y , lo que
contradice la hiptesis). ste es el fundamento principal del algoritmo. Tambin es importante tener en cuenta que el mximo comn
divisor de cualquier nmero y es precisamente . Para fines prcticos, la notacin significa mximo 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:
Asuma que llamamos y . Aplicando estas reglas se obtiene la siguiente secuencia de operaciones:
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 en los que exista
una "divisin con residuo". A este tipo de divisiones se les llama divisiones 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 y el algoritmo de
Convertido de web en PDF con
Euclides sugiere la siguiente secuencia de operaciones:
Se puede expresar este algoritmo de manera ms formal usando pseudocdigo. En este caso la expresin " " significa "el
residuo de dividir entre " (vase Aritmtica modular).
Algoritmo 1 de Euclides
1. ,
2.
3. Mientras haga lo siguiente:
1.
2.
4. El resultado es:
Vale la pena notar que este algoritmo no es eficiente ser implementado directamente en una computadora, ya que requerira
memorizar todos los valores de .
El algoritmo de Euclides extendido permite, adems de encontrar un mximo comn divisor de dos nmeros enteros y , expresarlo
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 " dividido entre es y de resto " se escribe la
ecuacin (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 aras 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):
(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
Resulta ser que los valores y tienen la propiedad de que , es decir, expresan a como una combinacin lineal
de y . Particularmente, como entonces se tiene , lo cual es la solucin del
problema. Esta propiedad no 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
aparece en el extremo derecho y la matriz en el izquierdo.
Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que se calculan los valores y con la
multiplicacin de matrices:
1.
2.
3. Mientras haga lo siguiente:
1. Divida entre para obtener el cociente y el residuo
2.
3.
4.
4. El resultado es: es un mximo comn divisor de y y se expresa
Aplicaciones [ editar ]
equivalente con (vase Nmero racional). De manera ms general, siempre que . Para reducir una fraccin
cualquiera , slo se necesita dividir y entre su mximo comn divisor.
Por ejemplo, si se desea reducir , primero se usa el algoritmo de Euclides para encontrar . Se hacen las
La sucesin de divisiones que se efectan al seguir algoritmo de Euclides puede ser utilizada para expresar una fraccin cualquiera
como fraccin continua. Esto se debe a que si y , entonces
(3)
Por ejemplo, para encontrar el mximo comn divisor de y 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
Decimos que dos nmeros enteros son congruentes mdulo (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 es congruente con
mdulo se escribe , en el ejemplo anterior se tiene . Supngase que se conocen los
valores de , y , pero que se desconoce el valor de la siguiente ecuacin:
(2)
Basta con encontrar un valor que tenga la caracterstica de que , pues de esta manera al multiplicar la
ecuacin (2 ) por se tendra la solucin deseada:
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 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.
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:
Funcin :
Si entonces:
El resultado es
En otro caso:
El resultado es
El resultado es
Funcin :
Si entonces:
El resultado es
En otro caso:
El resultado es
Funcin :
El resultado es
El resultado es
significa "asigne a la variable 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.
significa que primero se evalan los valores y luego se asigna , etc. En
lenguajes como 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; .
significa "el cociente de dividir 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).
significa "el residuo de dividir 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
Convertido de web en PDF con
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 978-0-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.
Esta pgina fue modificada por ltima vez el 18 ene 2017 a las 18:09.
Poltica de privacidad Acerca de Wikipedia Limitacin de responsabilidad Desarrolladores Declaracin de cookies Versin para mviles