You are on page 1of 4

ALG32019

Tarea 3 7 de marzo de 2019

1. Ejercicio
Encuentre el costo asintótico en términos de Θ de la siguiente recurrencia. Puede utilizar
cualquier método conocido para encontrarlo
 
 1 si n = 0
T (n) = n n (1)
2T ( ) + si n > 0
2 log(n)

2. Ejercicio
Considere el siguiente algoritmo escrito en Java que retorna el mayor valor de un arreglo:

int maxArreglo ( int [] A, int inicio, int fin ) {


if ( inicio == fin )
return A[inicio];
else {
int medio = inicio + ( fin - inicio ) / 2 ;
return java.lang.Math.max( maxArreglo(A, inicio, medio),
maxArreglo(A, medio+1, fin ));

(i) Escribir la ecuación de recurrencia,

(ii) Establecer la T (n) considerando la cantidad de operaciones elementales definidas en


clase,

(iii) Encontrar la cota exacta Θ(n),

(iv) ¿Cuántas llamadas recursivas se harán cuando el tamaño del arreglo A sea de n ele-
mentos? (2p). Escribir la ecuación de recurrencia.

1
ALG32019
Tarea 3 7 de marzo de 2019

3. Ejercicio *
Suponga que tiene el siguiente método Java:

public static boolean contiene ( int [] [] m, int valor ) {


int N = m.length;
for ( int f = 0; f < N; f++ )
for ( int c = 0; c < N; c++ )
if ( m[f][c] == valor )
return true;
return false;
}

1 2 3 4
3 4 5 6
5 6 7 8
9 10 11 12

donde
m : representa una matriz de N filas y N columnas, donde en cada fila los elementos se
encuentran ordenados de forma creciente y en cada columna los elementos también se en-
cuentran ordenados en forma creciente (como el ejemplo de arriba). Retorna true si valor se
encuentra en m o f alse en caso contrario.
a) ¿Cuál es el tiempo de ejecución ( T (N ) = .. ) de este método considerando el peor caso?.
Indique las cotas: O, Θ, Ω
b) Suponga que toma 4 segundos la ejecución en una matriz de 100x100. ¿Cuánto tiempo
aproximadamente tomarı́a la ejecución en una matriz de 400x400?
c) Reescriba el algoritmo, en Java, de forma que ahora tenga una mejor cota superior en el
peor caso. Fundamente.

4. Ejercicio
Resuelva las siguientes recurrencias. Justificar las respuestas.

2
ALG32019
Tarea 3 7 de marzo de 2019

n
T (n) =5T ( ) + n
2
n 1
T (n) =T ( ) +
2 n
n 7n
T (n) =T ( ) + T ( ) + Θ(1)
8 8 (2)
1
T (n) =T (n − 1) +
√ √ n
T (n) = nT ( n) + n

T (n) =4T (n/2) + n2 n
T (n) =6T (n/3) + n2 log(n)

5. Ejercicio *
Por cada par de funciones f (n) y g(n), escribir si f (n) = Ω(g(n)) , si f (n) = O(g(n)), o bien
si f (n) = Θ(g(n)) o decir si ninguna relación se cumple. Desarrollar de manera a verificar
los resultados obtenidos. Utilizar alguna librerı́a Java para graficar las funciones, de manera
a corroborar las cotas obtenidas.

f (n) g(n)
n − 100 n − 200
1
n 2 n 23
10log(n) log(n2 )
n
log(n)log(n) log(n)

n (log(n))3
n2n 3n
n! (n + 1)!
nlog(n) 10nlog(10n)
1,01
n (log(n))1 0
1
n2 5log2 (n)
n2
log(n)
n(log(n))2

6. Ejercicio
Muestre que si c es un número real positivo, entonces g(n) = 1 + c + c2 + ... + cn es:

(i) Θ(1) si c < 1

3
ALG32019
Tarea 3 7 de marzo de 2019

(ii) Θ(n) si c = 1

(iii) Θ(cn ) si c > 1

Observaciones
Se pueden entregar los ejercicios en formato PDF, o fotografı́as de los ejercicios resuel-
tos.

Los ejercicios marcados con * deben entregar con un código fuente java anexo, de
acuerdo a cómo se solicita en el ı́tem.

para cada ejercicio se deben proveer datos de prueba ya cargados en el método main,
de manera a ser ejecutados sin necesidad de carga manual.

Los códigos fuente deben ser comentados de manera a entender la lógica de implemen-
tación.

You might also like