Teorema de Lamé

De testwiki
Ir a la navegación Ir a la búsqueda

El Teorema de Lamé es un resultado de Gabriel Lamé, publicado en 1844, que trata sobre la complejidad del Algoritmo de Euclides.[1][2] Este teorema afirma que cuando se busca el máximo común divisor (MCD) de dos enteros a y b, con a>b, el algoritmo de Euclides termina en a lo sumo 5k pasos (divisiones); donde k es el número de dígitos de b (expresado en base decimal).[3] La prueba del Teorema utiliza la sucesión de Fibonacci.[4]

Enunciado del Teorema

Supongamos que se aplica el algoritmo de Euclides con entradas enteras no negativas a y b. El número de pasos (divisiones) que requiere el algoritmo para finalizar, es menor o igual que 5 veces el número de dígitos decimales de min(a,b) (la entrada de menor magnitud).

Ejemplo

Supongamos que se aplica el algoritmo de Euclides con entradas a=1235 y b=455. El teorema de Lamé afirma que el número de pasos (divisiones) que requiere el algoritmo para finalizar, es menor o igual que 5 veces el número de dígitos decimales de min(1235,455)=455. Es decir, la cantidad de pasos es menor o igual a 5×3=15.

Podemos comparar esta cota con la cantidad exacta de pasos que requiere el algoritmo de Euclides en este ejemplo. Los pasos del algoritmo son los siguientes:1235=2×455+325,455=1×325+130,325=2×130+65,130=2×65+0.El algoritmo termina en 4 pasos (divisiones), que es menor a la cota de 15 pasos del Teorema de Lamé.

Prueba del Teorema

Sean a>b dos números enteros positivos. Supongamos que aplicamos el algoritmo de Euclides a estos dos enteros, y que el algoritmo termina en n pasos (divisiones enteras). Es decir:a=q1b+r2,b=q2r2+r3,r2=q3r3+r4r3=q4r4+r5rn2=qn1rn1+rnrn1=qnrn+0.

De esta forma se obtienen dos sucesiones de números enteros positivos, que denotamos (q1,,qn) y (r2,,rn). Si definimos r0=a, r1=b y rn+1=0, se puede expresar cada paso del algoritmo de forma compacta mediante: ri1=qiri+ri+1,  i=1,,n.

Además, sabemos que la sucesión de los restos es estrictamente decreciente (por definición de resto). Es decir: a>b>r2>>rn>rn+1=0.

Como ya fue dicho, el número Plantilla:Mvar es el número de pasos del algoritmo de Euclides, ya que es el número de divisiones euclidianas que se realizan hasta obtener resto nulo rn+1=0 .

Consideremos ahora la sucesión de Fibonacci. Esta sucesión se puede definir de forma recursiva mediante:

F0=0, F1=1, Fn+1=Fn+Fn1,  n1.

Vamos a probar la siguiente relación entre la sucesión de Fibonacci y los restos del algoritmo de Euclides: rniFi+2,  i=0,1,,n. La prueba será mediante el método de inducción fuerte en i. El paso base consiste en probar que: rnF2=1 y rn1F3=2.

Dado que rn es un entero positivo, se cumple: rn1=F2. Por otro lado, dado que rn1=qnrn, para ver que rn12=F3, basta con probar que se cumple qn2. Para ver esto último, supongamos por absurdo que fuese qn=0 o qn=1. En el primer caso se tendría: rn1=qnrn=0; lo cual contradice la hipótesis de que el primer resto nulo es rn+1. Por otro lado, si fuese si fuese qn=1, se tendría: rn1=qnrn=rn, lo cual a su vez implicaría: rn2=qn1rn1+rn=qn1rn1+rn1=rn1(qn1+1). Nuevamente, esto contradice la hipótesis de que el primer resto nulo es rn+1. La hipótesis de inducción fuerte consiste en asumir que se cumple: rnkFk+2,  k<i. Usando esto, queremos probar que se cumple la propiedad para el índice i: rniFi+2. Para ver esto, escribimos:

rni=qni+1rni+1+rni+2rni+1+rni+2=rn(i1)+rn(i2)Fi+1+Fi=Fi+2.

Notar que en la penúltima desigualdad utilizamos que los cocientes son siempre enteros no nulos: qs1,  s. Si esto no fuese cierto, tendríamos un resto nulo anterior a rn+1, lo cual contradice la hipótesis de que Plantilla:Mvar es la cantidad de pasos del algoritmo de Euclides.

En particular, probamos que se cumple: b=r1=rn(n1)Fn+1.

Por otro lado, por propiedades de la sucesión de Fibonacci, sabemos que se cumple Fkφk2, para cada entero k>2; dónde φ=1+52 es la proporción áurea.

[Esta propiedad se puede probar mediante inducción fuerte, comenzando con el paso base: F2=φ0=1, F3=2>φ. Usando que φ2=φ+1, el paso inductivo es: Fk+1=Fk+Fk1φk2+φk3=φk3(1+φ)=φk1.]

Por lo tanto, juntando las últimas dos desigualdades: bFn+1φn1. Como los números son positivos, al aplicar logaritmo se mantiene el sentido de las desigualdades. Es decir:

log10(b)log10(Fn+1)(n1)log10(φ). Como log10(φ)>0, podemos despejar y obtener: n1log10(b)log10(φ). Usando que 1log10(φ)4.785<5, se obtiene: n1log10(b)log10(φ)<5log10(b).

Para terminar, notar que si d es la cantidad de dígitos decimales de b, se cumple: b<10d. Es decir: log10(b)<dlog10(10)=d. Reemplazando esta cota, y despejando, se obtiene la cota buscada para la cantidad de pasos del algoritmo de Euclides: n1<5dn<5d+15d.

Como resultado secundario de esta prueba, se obtiene que los pares de números enteros (a,b) que dan el número máximo de pasos del algoritmo de Euclides (para un tamaño fijo de b), son los pares de números de Fibonacci consecutivos.

Referencias

Plantilla:Listaref

Bibliografía

  • Bach, Eric (1996). Teoría algorítmica de números . Jeffrey Outlaw Shallit. Cambridge, Massachusetts: MIT Press.Plantilla:ISBN. Plantilla:OCLC
  • Carvalho, João Bosco Pitombeira de (1993). Olhando mais de cima : Euclides, Fibonacci y Lamé . Revista do Professor de Matemática, São Paulo, n. 24, pág. 32-40, 2 sem.

Plantilla:Control de autoridades