Professional Documents
Culture Documents
Gonzalo Maurelia
Maximiliano Opitz
Abril 13, 2013.
1. Qu realiza la siguiente funcion? Exprese su respuesta como una funcion de n y entregue el peor caso
para el costo en tiempo usando notacion O.
Function Misterio(n)
1 r <- 0
2 for i = 1 to n do
3
for j = i to i do
for k = j to i + j do
r <- r + 1
6
7
endfor
endfor
8 endfor
9 return r
Podemos ver que los tres ciclos no son independientes, ya que todos dependen exclusivamente de la
variable i. Es por ello que el anlisis de este algoritmo tenemos que considerarlo de manera global.
De esta forma, si analizamos la cantidad de veces que se ejecuta el tercer ciclo, correspondera a la
siguiente sumatoria:
( )
2. Elabore y analice un algoritmo recursivo que encuentra la moneda falsa entre n monedas cuyos pesos
son almacenados en un arreglo con n = 2k. La moneda falsa es la de menor valor. Se pide un algoritmo
que realice el menor nmero de comparaciones posible.
Figura 1.
En la figura 1, al descomponer el arreglo (top-down) hasta la mnima subdivisin, el algoritmo comienza
a recorrer de vuelta el rbol (bottom-up) de modo tal que compara cada hoja y siempre escoge el menor
valor. Por ejemplo, entre la hoja 1 y 8 escoge el 1, luego compara 1 y 4, vuelve a escoger el 1, finalmente
cuando en la raz se renen los dos mnimos valores de las dos ramas, se vuelve a comparar y ese es el
mnimo valor del arreglo de monedas.
Por otro lado, con respecto a la complejidad de este algoritmo, utilizamos el mtodo del rbol recursivo
para obtenerla. Como vemos en la Figura 1, en cada iteracin, el nodo se divide en 2 ramas y cada
problema se va reduciendo a la mitad, es decir n/2, debido a que siempre dividimos el arreglo en dos. Es
por ello que la ecuacin del sistema recurrente nos queda:
T(1)=1
T(n)= 2*T(n/2)+O(1) [0]
Con esta ecuacin podemos demostrar, a travs del teorema maestro, la complejidad de este algoritmo.
Segn la primera condicin del teorema maestro:
Si f (n) e O(n^logb (a)-) para alguna constante > 0, entonces T(n) e O(n ^logb(a)). [1]
Luego, dado que en nuestro caso f(n)=1, y la funcin T(n) anterior est definida sobre enteros no
negativos, se demostrar que la primera condicin del teorema se cumple.
Primero, veremos si la funcin f(n) tiene una cota superior, es por ello que formamos la siguiente
inecuacin:
n^(log2(2)-) 1
es lo mismo que:
n^(1-) 1