Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicio 1 [3 puntos]
Solución:
La definición de Ω es:
n o
Ω(g(n)) = f (n) : ∃ c > 0 y n0 > 0 / 0 ≤ c · g(n) ≤ f (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
Ejercicio 2 [4 puntos]
T (n) = 4T (n − 1) − 5T (n − 2) + 2T (n − 3) + 1 + 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 n4 + C6 2n + C7 n2n + C8 n2 2n
T (n) ∈ θ(n2 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 + 1 + 1) + 1 = 2 + 3j
k=0
Sustituyendo en TFor 1 tenemos:
n
X
TFor 1 = 2 + (4 + 3j)
j=i
n
X n
X n
X n
X i−1
X
=2+ 4+3 j =2+ 4 + 3 j− j
j=i j=i j=i j=1 j=1
n(n + 1) (i − 1)i
= 2 + 4(n − i + 1) + 3 −
2 2
Simplificando obtenemos:
3n2 + 11n + 12 − 3i2 − 5i
TFor 1 =
2
4
n−1
1X
3n2 + 11n + 16 − 3i2 − 5i
T (n) = 2 +
2
i=0
n−1 n−1
3 11 3X 2 5X
T (n) = 2 + n3 + n2 + 8n − i − i
2 2 2 2
i=0 i=0
Para terminar el problema hay que resolver los dos últimos sumatorios:
Ejercicio 4 [6 puntos]
T (n) = 2T (n/2) + n
Solución:
Procedemos a expandir la recurrencia:
T (n) = 2T (n/2) + n
h ni
= 2 2T (n/4) + + n = 4T (n/4) + 2n
2i
h n
= 4 2T (n/8) + + 2n = 8T (n/8) + 3n
4 i
h n
= 8 2T (n/16) + + 3n = 16T (n/16) + 4n
8
..
.
= 2i T (n/2i ) + in
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) = 2T (n/2) + n
Solución:
Para poder aplicar el método primero tenemos que hacer el cambio de variable
n = 2k :
T (n) = T (2k ) = 2T (2k /2) + 2k = 2T (2k−1 ) + 2k
A continuación hacemos un cambio de función t(k) = T (2k ):
(x − 2)(x − 2) = (x − 2)2
t(k) = C1 2k + C2 k2k
Para hallar las constantes necesitamos un segundo caso base. Procedemos a calcular
T (2) = 2T (1) + 2 = 4. 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)