Professional Documents
Culture Documents
R , c
k
= u y b(n) es un funcin de n N, viene dada por la expresin o
n
= o
n
h
+ o
n
p
,
donde o
n
h
representa la solucin general de la ecuacin lineal homognea
asociada, es decir o
n
= c
1
o
n-1
+c
k
o
n-k
y o
n
p
es una solucin particular (cualquiera)
de la ecuacin completa ([3]).
Siguiendo el mtodo habitual para resolver ecuaciones en diferencias ([4]),
calculamos la solucin general de la recurrencia homognea de coeficientes
constantes o
k
- 2o
k-1
= u, considerando la ecuacin caracterstica asociada, dada
en este caso por z -2 = u.
Utilizando las soluciones de esta ecuacin, en nuestro caso z = 2, construimos la
familia de sucesioneso
k
h
= C2
k
,
donde C es una constante arbitraria,
que cumplen la
igualdad o
k
-2o
k-1
= u.
Puesto que la recurrencia lineal de la ecuacin 5 tiene la funcin b(n) = 1, es decir
b(n) es un polinomio de grado cero, sabemos que sus soluciones particulares tienen
la forma o
k
p
= A, donde A es una constante que tendremos que determinar.
Para ello sustituimos en la relacin de recurrencia anterior o
k
- 2o
k-1
= 1
o
k
p
- 2o
k
p
= A - 2A = 1 A = -1
Luego o
k
p
= -1 y la familia de sucesiones que cumplen la relacin de recurrencia
o
k
= 1 +2o
k-1
, es decir, la solucin general de la recurrencia viene dada por
o
k
= o
k
h
+o
k
p
= C2
k
- 1, donde C es una constante arbitraria.
Para encontrar la solucin particular, es decir la nica sucesin que la relacin de
recurrencia sujeta a la condicin inicial o
0
= 1, ser necesario calcular la constante
C. Para ello sustituimos la condicin inicial en la solucin general
1 = o
0
= C2
0
- 1 C = 2
Luego la solucin de la ecuacin 5 viene dada por o
k
= 22
k
- 1 = 2
k+1
- 1, para
todo k u.
Deshaciendo el cambio de variable n = 2
k
y recordando que hemos denotado
o
k
= I(2
k
), obtendremos la sucesin que cumple la recurrencia dada por la
ecuacin 4
I(n) = I(2
k
) = o
k
= 2 2
k
-1 = 2 n - 1, n 1.
4 Desarrollo del coste de Fibonacci
El ltimo ejemplo que trataremos es la sucesin de Fibonacci definida por la
recurrencia:
n
= _
u n = u
1 n = 1
n-1
+
n-2
n > 1
Ecuacin 6. Sucesin de Fibonacci.
En la parte izquierda de la figura 3, vemos un mtodo recursivo que implementa el
clculo del trmino
n
siguiendo literalmente la definicin anterior. Mientras que a
la derecha, en la misma figura, tenemos una versin iterativa de Fibonacci que
calcula
n
con n pasos de programa.
Figura 3. Clculos recursivo e iterativo de la sucesin de Fibonacci.
Una diferencia que podemos observar entre las dos versiones es que el clculo
recursivo repite muchos clculos, como vemos por ejemplo en la figura 4, en la que
hemos desarrollado el rbol de llamadas recursivas para n = S.
Figura 4. rbol de llamadas del clculo recursivo de Fibonacci de 5.
Para medir cmo va a afectar esta redundancia al tiempo de ejecucin de este
algoritmo, nos vamos a plantear a continuacin el estudio del coste mediante las
relaciones de recurrencia para I(n).
4.1 Solucin a travs de sustitucin
El coste del clculo recursivo de Fibonacci se expresa mediante la siguiente
relacin
I(n) = _
1 u n 1
1 + I(n -1 ) + I(n - 2) n > 1
Ecuacin 7. Relacin de recurrencia del coste de Fibonacci recursivo.
En este caso no podemos resolverla directamente por sustitucin, pero s podemos
acotarla por dos sucesiones ms simples ya que es una sucesin creciente
1 + I(n - 2 ) + I(n - 2) 1 + I(n -1 ) + I(n - 2) 1 + I(n - 1 ) +I(n -1), n > 1
Luego 1 +2 I(n - 2) I(n) 1 + 2 I(n - 1), n > 1.
Por tanto aplicando sustitucin a la cota inferior obtenemos
1 +2 I(n -2) = 1 + 2 (1 + 2 I(n - 4 )) = = 2
-1
k
=1
+2
k
I(n - 2k )
Sustituyendo _ 2
-1
k
=1
= 2
k
- 1, el trmino general de la sucesin viene dado por
1 +2 I(n - 2) = 2
k
-1 +2
k
I(n -2k ) = o2
n 2
- 1 , n > 1
donde o = 2 si n = 2 k (par) y o = 2
1 2
si n = 2 k +1 (impar). Aplicando el mismo
razonamiento de sustitucin a la cota superior obtenemos
1 +2 I(n - 1) = 1 +2 (1 + 2 I(n - 1 )) = = 2
-1
k
=1
+ 2
k
I(n - k )
Sustituyendo _ 2
-1
k
=1
= 2
k
- 1, el trmino general de la sucesin en este caso viene
dado por una nica expresin para todo n
1 +2 I(n - 1) = 2
k
-1 +2
k
I(n -k ) = 2 2
n
- 1, n > 1
Por tanto
o2
n 2
-1 = 1 +2 I(n - 2) I(n) 1 + 2 I(n -1) = 2
n+1
-1, n > 1
donde o = 2 si n es par y o = 2
1 2
si n es impar.
Por ejemplo, para n = S la cota inferior corresponde a suponer un desarrollo de
llamadas como se muestra en la figura 5, a la izquierda; mientras que la cota
superior corresponde a suponer un desarrollo de llamadas recursivas como el de la
misma figura a la derecha.
Figura 5. Cotas inferior y superior del comportamiento de
Fibonacci recursivo para n = S.
En resumen, las dos cotas anteriores son exponenciales en n (con bases 2
1 2
y 2,
respectivamente), lo que puede resultar suficiente para compararlo con el coste
del Fibonacci iterativo.
Aun as, podemos ser todava ms precisos si aplicamos las herramientas
matemticas ya conocidas.
4.2 Solucin a travs de relaciones de recurrencia
Consideramos I(n) = o
n
para transformar el problema del coste de la ecuacin 7 en
un tpico ejercicio de ecuaciones en diferencias de la asignatura de matemticas
o
n
= _
1 u n 1
1 +o
n-1
+o
n-2
n > 1
Ecuacin 8. Relacin de recurrencia lineal con coeficientes constantes.
Para calcular la solucin general de la recurrencia homognea de coeficientes
constantes o
n
= o
n-1
+ o
n-2
, necesitamos construir la ecuacin caracterstica, dada
en este caso por z
2
-z -1 = u.
Utilizando las soluciones de la ecuacin caracterstica z =
1 _ 5
2
, construimos la
familia de sucesiones o
n
h
que cumplen la igualdad o
n
= o
n-1
+o
n-2
. stas vienen
dadas por la expresin o
n
h
= C
1
[
1+ 5
2
n
+ C
2
[
1- 5
2
n
,
donde C
1
y C
2
son constantes
arbitrarias.
Puesto que la recurrencia lineal de la ecuacin 8 tiene la funcin b(n) = 1, sabemos
que las soluciones particulares tienen la forma o
n
p
= A, donde A es una constante
que tendremos que determinar.
Para ello sustituimos o
n
p
en la relacin de recurrencia anterior o
n
-o
n-1
- o
n-2
= 1
o
n
p
-o
n-1
p
- o
n-2
p
= A - 2A = 1 A = -1
Luego o
n
p
= -1 y la solucin general de la recurrencia viene dada por o
n
= o
n
h
+ o
n
p
=
C
1
[
1+ 5
2
n
+ C
2
[
1- 5
2
n
-1, donde C
1
y C
2
son constantes arbitrarias.
Para encontrar la solucin particular de la ecuacin 8, ser necesario calcular las
constantes C
1
y C
2
. Para ello sustituimos las condiciones iniciales o
0
= o
1
= 1 en la
solucin general
1 = o
0
= o
1
C
1
=
1 + S
S
, C
2
=
1 - S
S
Y por tanto la solucin de la recurrencia de la ecuacin 7 viene dada por
I(n) = o
n
=
1 + S
S
_
1 + S
2
_
n
+
1 - S
S
_
1 - S
2
_
n
-1, n u.
5 Conclusin
Mediante algunos ejemplos de anlisis del coste de algoritmos recursivos, hemos
podido comprobar:
En primer lugar, el inters de conocer y aplicar una herramienta
matemtica concreta: la resolucin de recurrencias lineales, al estudio del
comportamiento temporal de un conjunto de algoritmos recursivos.
Por otra parte, que los problemas de anlisis de algoritmos que se ha
resuelto puede ayudar a interpretar los pasos dados cuando se aplica
dicha herramienta matemtica.
De una manera ms general, queremos resaltar la importancia de la formacin
matemtica de los estudiantes de Informtica para su profesin ([5]). Una muestra
notable de esta importancia es el premio Fronteras del conocimiento otorgado
en Espaa en 2011 al matemtico Donald E. Knuth. Como se resea en [6], el
jurado le atribuy hacer de la programacin informtica una ciencia
introduciendo tcnicas matemticas para el anlisis riguroso de los algoritmos, y
reconoci que aport elegancia al promover la escritura de un cdigo de
programacin sencillo, compacto y comprensible de forma intuitiva.
6 Bibliografa
6.1 Libros:
[1] Prieto Sez, N; Casanova Faus, A; Marqus Hernndez, F; y otros: Empezar a
programar usando J ava, Ed. UPV, 2012.
[2] Graham, R L; Knuth, D E; Patashnik, O: Concrete Mathematics: Foundation for
Computer Science, Ed. Addison Wesley, 1994.
[3] Fernndez Prez, C; Vzquez Hernndez, F J ; Vegas Montaner, J M: Ecuaciones
diferenciales y en diferencias, Ed. Thomson, 2003.
[4] Garca Merayo, F; Hernndez Pealver, G; Nevot Luna, A: Problemas resueltos
de Matemtica Discreta, Ed. Thomson, 2003.
6.2 Comunicaciones presentadas en conferencias:
[5] Martnez Hinarejos, C D; Sanabria Codesal, E: Una experiencia de coordinacin
entre las asignaturas de Anlisis Matemtico y Programacin de la ETSINF, Actas
de las VIII J ornadas de Redes de Investigacin en Docencia Universitaria, Alicante,
2010.
6.3 Referencias de fuentes electrnicas:
[6] Entrevista a Donald E. Knuth: El hombre que habla a las mquinas, El Pas, 18 de
enero de 2011. Disponible en:
http://sociedad.elpais.com/sociedad/ 2011/ 01/ 18/ actualidad/ 1295305202_850215.html