Tarea 2 de Análisis de Algoritmos
Trimestre 2008 Otoño
Entrega: 6 de noviembre de
2008 en clase.
- [15 puntos] Resuelva exactamente cada una de las siguientes
funciones
recursivas y demuestre que su respuesta es correcta: (a) T(1) = 1 y
T(n) = 2T(n-1) + n - 1 para toda n >= 2, (b) T(1) = 1 y T(n) = 1 +
T(1) + T(2) + ... + T(n-1) para toda n >= 2, (c) T(1) = 1 y T(n) =
T(piso(n/2)) + T(techo(n/2)) + n - 1 para toda n >= 2, donde piso(x)
es el mayor entero que es a lo sumo x.
- [5 puntos] Demuestre por inducción que un montículo
con n
vértices tiene exactamente techo(n/2) hojas, donde techo(x) es
el menor entero que es al menos x.
- [10 puntos] Sean c y k dos constantes enteras positivas.
Demuestre que la
solución
a la recurrencia T(n) = 0 para 0 <= n < c y T(n) = 2T(n-c) + k
para n >= c es de la forma T(n) = O(dn) para alguna
constante d.
- [10 puntos]Suponga que tiene un arreglo a[1], a[2], ..., a[n] con
n enteros
distintos. Se sabe que el arreglo es unimodal, es decir, existe un
entero p entre 1 y n tal que los enteros en el arreglo crecen hasta
llegar a a[p] y a partir de allí decrecen hasta llegar a a[n].
Diseñe un algoritmo de divide y vencerás que encuentre el
valor de p con tan pocas comparaciones entre elementos como sea
posible. Demuestre que su algoritmo es correcto y calcule el
número de comparaciones que hace en el peor caso.