Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A Soluciones
A Soluciones
Ejercicio 1 [3 puntos]
Solución:
La definición de O es:
n o
O(g(n)) = f (n) : ∃ c > 0 y n0 > 0 / 0 ≤ f (n) ≤ c · g(n), ∀n ≥ n0
Por tanto, tenemos que ver si es posible encontrar una pareja de constantes c > 0 y
n0 > 0 de forma que se cumpla la definición. Empezamos analizando:
n2 − 3n + 1 ≤ cn2
n2 − 3n + 1 ≤ n2
−3n + 1 ≤ 0
1
≤n
3
Por tanto, podemos escoger para n0 cualquier valor superior o igual a 1/3. Por
ejemplo, n0 = 1. De esta manera hemos encontrado las dos constantes c y n0 que
satisfacen la definición, y podemos afirmar que n2 − 3n + 1 ∈ O(n2 ).
2
Ejercicio 2 [4 puntos]
T (n) = 5T (n − 1) − 8T (n − 2) + 4T (n − 3) + 3 + n2 + n2n
Solución:
Aplicamos el método general de resolución de recurrencias. Primero pasamos los
términos con T del lado derecho al izquierdo, y expresamos el resto de términos de
la derecha como polinomios por potencias elevadas a n:
T (n) = C1 + C2 n + C3 n2 + C4 n3 + C5 2n + C6 n2n + C7 n2 2n + C8 n3 2n
T (n) ∈ θ(n3 2n )
3
Ejercicio 3 [6 puntos]
La fórmula para considerar todas las operaciones que se llevan a cabo en un bucle
de tipo FOR o WHILE es:
n
X
Tbucle = 1inicialización + (1comparación + Tcuerpo + 1incremento ) + 1última comparación
Solución:
El código consta de 3 bucles, que podemos descomponer de la siguiente manera:
n−1
X
T (n) = 1 + (1 + TFor 1 + 1) + 1
i=0
n
X
TFor 1 = 1 + (1 + TFor 2 + 1) + 1
j=i
j−1
X
TFor 2 = 1 + (1 + 2 + 1) + 1 = 2 + 4j
k=0
Simplificando obtenemos:
n−1
X n−1
X
T (n) = 2 + 2n3 + 6n2 + 8n − 2 i2 − 2 i
i=0 i=0
Para terminar el problema hay que resolver los dos últimos sumatorios:
Ejercicio 4 [6 puntos]
T (n) = T (n/3) + n
Solución:
Procedemos a expandir la recurrencia:
T (n) = n + T (n/3)
= n + n/3 + T (n/32 )
= n + n/3 + n/32 + T (n/33 )
= n + n/3 + n/32 + n/33 + T (n/34 )
..
.
= n 1 + 1/3 + 1/32 + 1/33 + · · · + 1/3i−1 + T (n/3i )
Ejercicio 5 [6 puntos]
Halla una expresión no recursiva para la siguiente recurrencia por el método general
de resolución recurrencias:
T (n) = T (n/3) + n
Solución:
Para poder aplicar el método primero tenemos que hacer el cambio de variable
n = 3k :
T (n) = T (3k ) = T (3k /3) + 3k = T (3k−1 ) + 3k
A continuación hacemos un cambio de función t(k) = T (3k ):
(x − 1)(x − 3)
t(k) = C1 1k + C2 3k = C1 + C2 3k
Para hallar las constantes necesitamos un segundo caso base. Procedemos a calcular
T (3) = T (1) + 3 = 3. Los correspondientes casos base para t(k) son:
Ejercicio 6 [5 puntos]
donde T (0) = 1.
Solución:
En primer lugar podemos reescribir la fórmula de la siguiente manera:
n−2
X
T (n) = 1 + T (n − 1) + T (i) (1)
i=0
n−3
" # "n−3 #
X X
=2+2 1+2 T (i) = 4 + 4 T (i)
i=0 i=0
Hacemos lo mismo un paso más:
n−4 n−4
" # " # "n−4 #
X X X
T (n) = 4+4 T (n − 3) + T (i) = 4+4 1 + 2 T (i) = 8+8 T (i)
i=0 i=0 i=0
Tras una serie de pasos (en este caso usamos la variable j ya que la i ya aparece
en el sumatorio) tenemos:
"n−j #
X
T (n) = 2j−1 + 2j−1 T (i)
i=0
Alcanzamos el caso base cuando el sumatorio solo suma un término T (0). Esto
sucede cuando n = j. Sustituyendo:
T (n) = 2T (n − 1) = 4T (n − 2) = 8T (n − 3) = · · · = 2i T (n − i)