Tarea 2 de Análisis de Algoritmos
Trimestre 2008 Invierno
Entrega: 28 de abril de
2008 en clase.
- Sea n una potencia de c > 1. Suponga que T(n) <= T(n/c) +
an para n >= c y que T(1) = b. Demuestre que T(n) <= knd
para algunas constantes k y d. Diga explícitamente cuáles
valores de k y d son los más pequeños que funcionan.
- Sea n una potencia de c > 1. Suponga que T(n) <= b T(n/c) +
an para n >= c, que T(1) = e y que b > c. Demuestre que T(n)
<= knd - fn para d = logc(b) y algunas
constantes k y f. Diga explícitamente cuáles valores de k
y f son los más pequeños que funcionan.
- 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.
- 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.
- Suponga que tiene dos bases de datos con n enteros cada una (2n
enteros en total, todos distintos) y que quiere encontrar el
p-ésimo entero más pequeño en ellas. Puede acceder
a las bases de datos a través de consultas del tipo dato(b,k)
donde b es 1 o 2 (dependiendo de la base de datos) y 1 <= k <= n
a las cuales la base de datos b regresa el k-ésimo entero
más pequeño que contiene. Diseñe un algoritmo de
divide y vencerás que encuentre el valor buscado usando tan
pocas consultas a la base de datos como sea posible. Demuestre que su
algoritmo es correcto y calcule el número de consultas que hace
en el peor caso.