Você está na página 1de 8

UNIVERSIDAD DE LAS AMRICAS

TECNOLOGA EN REDES Y TELECOMUNICACIONES


Asignatura: Algoritmos
Alumno: Geovanny Paredes
Trimestre: Primero
Tema: Algoritmo de Euclides
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 como lgebra, 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
Algoritmo original de Euclides

AB y CD son segmentos conmensurables


Ejemplo del algoritmo original de Euclides.
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
no es un nmero racional, pero en el caso de dos segmentos
conmensurables se desea hallar la mayor medida comn posible.
Euclides describe en la proposicin VII.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
En lenguaje moderno, el algoritmo se describe como sigue:
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.
Si se obtiene un residuo EF, ste es menor que CD y podemos repetir el proceso:
restamos EF tantas veces como sea posible de CD. Si al final no queda un residuo, EF
es la medida comn. En caso contrario obtenemos un nuevo residuo GH menor a EF.
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
Algoritmo de Euclides tradicional
Al dividir a entre b (nmeros enteros), se obtiene un cociente q y un residuo r. Es
posible demostrar que el mximo comn divisor de a y b es el mismo que el de b y r.
ste es el fundamento principal del algoritmo. Tambin es importante tener en cuenta
que el mximo comn divisor de cualquier nmero a y 0 es precisamente a. Para fines
prcticos, la notacin mcd(a,b) significa mximo comn divisor de a y b.
Segn lo antes mencionado, para calcular el mximo comn divisor de 2366 y 273 se
puede proseguir de la siguiente manera:

Paso Operacin

Significado

2366 dividido entre 273 es 8 y sobran


182

mcd(2366,273) =
mcd(273,182)

273 dividido entre 182 es 1 y sobran 91

mcd(273,182) = mcd(182,91)

182 dividido entre 91 es 2 y sobra 0

mcd(182,91) = mcd(91,0)

La 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, entonces se
concluye que mcd(2366,273) = 91. Este mismo procedimiento se puede aplicar a
cualesquiera dos nmeros naturales. En general, si se desea encontrar el mximo comn
divisor de dos nmeros naturales a y b, se siguen las siguientes reglas:
Si b = 0 entonces mcd(a,b) = a y el algoritmo termina
En otro caso, mcd(a,b) = mcd(b,r) donde r es el resto de dividir a entre b. Para calcular
mcd(b,r) se utilizan estas mismas reglas
Asuma que llamamos a = r0 y b = r1. Aplicando estas reglas se obtiene la siguiente
secuencia de operaciones:

Paso Operacin

Significado

r0 dividido entre r1 es q1 y sobran r2

mcd(r0,r1) = mcd(r1,r2)

r1 dividido entre r2 es q2 y sobran r3

mcd(r1,r2) = mcd(r2,r3)

r2 dividido entre r3 es q3 y sobran r4

mcd(r2,r3) = mcd(r3,r4)

rn 1 dividido entre rn es qn y sobran rn +

mcd(rn 1,rn) = mcd(rn,rn +


1)

n + 1 rn dividido entre rn + 1 es qn + 1 y sobra 0

mcd(rn,rn + 1) = mcd(rn + 1,0)

Como la sucesin de residuos va disminuyendo, eventualmente un residuo tiene que ser


cero y es en ese momento cuando el algoritmo termina. El mximo comn divisor es
precisamente rn + 1 (el ltimo residuo que no es cero).
Generalizacin
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 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 P(x) = x5 + 2x3 +
x y Q(x) = x4 1 el algoritmo de Euclides sugiere la siguiente secuencia de operaciones:

Paso Operacin

Significado

x5 + 2x3 + x dividido entre x4 1 es x y


sobra 2x3 + 2x

mcd(x5 + 2x3 + x,x4 1) = mcd(x4


1,2x3 + 2x)

x4 1 dividido entre 2x3 + 2x es


sobra x2 1

mcd(x4 1,2x3 + 2x) = mcd(2x3 +


2x, x2 1)

2x3 + 2x dividido entre x2 1 es 2x


y sobra 0

mcd(2x3 + 2x, x2 1) = mcd( x2


1,0)

De esta manera se concluye que mcd(x5 + 2x3 + x,x4 1) = x2 1.


Descripcin formal
Se puede expresar este algoritmo de manera ms formal usando pseudocdigo. En este
caso la expresin "
Aritmtica modular).

" significa "el residuo de dividir x entre y" (vase

Algoritmo 1 de Euclides
Entrada: Valores a y b pertenecientes a un dominio eucldeo
Salida: Un mximo comn divisor de a y b

Mientras

haga lo siguiente:

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 ri.
Algoritmo de Euclides extendido
El algoritmo de Euclides extendido permite, adems de encontrar un mximo comn
divisor de dos nmeros enteros a y b, expresarlo como la mnima combinacin lineal de
esos nmeros, es decir, encontrar nmeros enteros s y t tales que
. Esto se generaliza tambin hacia cualquier dominio
euclideano.
Fundamentos
Existen varias maneras de explicar el algoritmo de Euclides extendido, una de las ms
comunes consiste en la siguiente:
Usar el algoritmo tradicional de Euclides. En cada paso, en lugar de "a dividido entre b
es q y sobra r" se escribe la ecuacin
(vase algoritmo de la divisin).
Se despejan los residuos de cada ecuacin.
Se substituye el residuo de la ltima ecuacin en la penltima, y la penltima en la
antepenltima y as sucesivamente hasta llegar a la primera ecuacin, y en cada paso
expresar cada residuo 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 (vse Producto de matrices):

(1)
Supngase que se utiliza el algoritmo de Euclides tradicional para calcular los valores qi
y ri que ah se describen. Por cada valor qi calculado se puede formar la matriz
. Usando la ecuacin (1) de manera repetida se puede calcular el
producto las primeras i matrices de este tipo:

Resulta ser que los valores si y ti tienen la propiedad de que


expresan a ri como una combinacin lineal de a y b. Particularmente, como

, es decir,

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 Q1 aparece en el extremo derecho y la matriz Qi en el izquierdo.
Regresando al primer ejemplo, la sucesin de cocientes es q1 = 8, q2 = 1 y q3 = 2.
Entonces se puede calcular

Utilizando el primer rengln de esta matriz se puede leer que 91 = 2366( 1) + 273(9),
es decir, se ha encontrado la manera de expresar al mximo comn divisor de 2366 y
273 como una combinacin lineal.
Descripcin formal
Para expresar el algoritmo de Euclides extendido es conveniente notar la manera en que
se calculan los valores si y ti con la multiplicacin de matrices:

De esta manera si + 1 = si 1 qisi y adems ti + 1 = ti 1 qiti. Por lo tanto el algoritmo en


pseudocdigo se puede expresar como sigue:

Algoritmo 2 de Euclides extendido


Entrada: Valores a y b pertenecientes a un dominio eucldeo
Salida: Un mximo comn divisor de a y b, y valores s y t tales que mcd(a,b) = as +
bt

Mientras
Divida

haga lo siguiente:
entre

para obtener el cociente

y el residuo

El resultado es:

es un mximo comn divisor de y y adems

Implementacin en pseudocdigo
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:

El resultado es
Algoritmo de Euclides extendido implementado de manera recurrente
Funcin
Si

:
entonces:

El resultado es
En otro caso:
El resultado es
Algoritmo de Euclides extendido implementado de manera iterativa
Funcin

Mientras
haga lo siguiente:
Divida entre para obtener un cociente y un residuo
El resultado es
Algoritmo de Euclides extendido implementado de manera iterativa con matrices
Funcin

Mientras
haga lo siguiente:
Divida entre para obtener un cociente y un residuo

El resultado es
Acerca de la notacin empleada:

significa "asigne a la variable x el valor actual de y". 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 a,b,c 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 a entre b". 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 a entre b". 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).

Você também pode gostar