Sei sulla pagina 1di 13

Página Principal  ► Master_2016­1_Presencial  ► Secciones_2016­1_Presencial  ►

RA/ANALISIS Y VERIFICACION DE ALGORITMOS / Grupo[001] / P2016­1  ► General  ►
Examen parcial ­ semana 4

Comenzado el lunes, 4 de abril de 2016, 20:19
Estado Finalizado
Finalizado en lunes, 4 de abril de 2016, 21:27
Tiempo empleado 1 hora 8 minutos
Puntos 5,8/10,0
Calificación 57,7 de 100,0
Pregunta 1 Suponga que usted está escribiendo un algoritmo que resuelve un problema de
Parcialmente tamaño n, y ha encontrado varias maneras de hacerlo:
correcta 1. La primera es una solución iterativa que tiene un tiempo de ejecución 
T \(n\) = 4 ⋅ n + 2 ⋅ n + 10 + 3 ⋅ n ⋅ logn .
2 3 2

Puntúa 0,1 sobre
2. La segunda es una solución recursiva que tiene un tiempo de ejecución que
1,0
cumple la siguiente relación: T \(n\) = 5 ⋅ n + 8 ⋅ T \(n/2\) + 2 ⋅ n3
3. La tercera también es una solución recursiva, que cumple la siguiente
relación: T \(n\) = T \(n − 2\) + 2 ⋅ T \(n − 1\) + 2 ⋅ n ⋅ logn

A partir de lo anterior es cierto afirmar que (seleccione todas las opciones
válidas):

Seleccione una o más de una:
3
a. La primera solución tiene una complejidad de O\(10 \) , porque el
término relevante es una exponencial.

b. La primera solución tiene una complejidad de O\(n3 \) 

c. La complejidad de la segunda solución es O\(n3 \)

d. La complejidad de la segunda solución es O\(n3 ⋅ logn\)  

e. La complejidad de la tercera solución es O\(ϕn \)

f. La complejidad de la tercera solución es   

g. La mejor solución es la primera.

h. La primera y segunda son iguales, sería necesario revisar las constantes.

i. La mejor solución es la tercera porque tiene un tiempo lineal. 

La respuesta correcta es: La primera solución tiene una complejidad de O\(n3 \)
, La complejidad de la segunda solución es  O\(n^3\cdot log n\)  , La

complejidad de la tercera solución es  O\({\phi^n}\)  , La mejor solución es la


primera.
Pregunta 2 El siguiente algoritmo busca hallar el n­ésimo número de la sucesión de
Correcta Fibbonacci, donde n es un entero mayor o igual a cero.

Puntúa 1,0 sobre
static int fib(int n){
1,0
 if(n == 0){
 return 0;

}else if(n == 1){
 return 1;

}else{
 int a= fib(n­1);
int b = fib(n­2);
return a + b;

Analice el anterior algoritmo. Cuáles de las siguientes afirmaciones son
verdaderas? (Escoja todas las que lo sean).

Seleccione una o más de una:
a. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n­1\) + T\(n­2\)+O\( 1 \)  

b. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n­1\) + T\(n­2\)+O\( n \)

c. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = 2\cdot T\(n­2\)+O\( n \)

d. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n/2\)+O\( 1 \)

e. La complejidad del algoritmo es  O\( \log_{} n \)

f. La complejidad del algoritmo es  O\(n\cdot\log_{}n\)

g. La complejidad del algoritmo es  O\(n\phi^n\)

h. La complejidad del algoritmo es  O\(\phi^n\)  

i. La complejidad del algoritmo es  O\(n\cdot 2^n\)

j. El algoritmo no funciona, porque los resultados no corresponden a la
definición de Fibonacci

La respuesta correcta es: La función de tiempo del algoritmo cumple la siguiente
ecuación:  T\(n\) = T\(n­1\) + T\(n­2\)+O\( 1 \)  , La complejidad del algoritmo es 

O\(\phi^n\)
Pregunta 3 El siguiente algoritmo calcula el resultado de una exponenciación modular. Esto
Incorrecta es dados tres enteros de tamaño arbitrariamente largo, calcula   
Entradas: a,b, m
Puntúa 0,0 sobre
Salidas: p
1,0
int expMod(int a, int b, int m){
int r = a;
int p = 1;
while( b > 0 ){

if( b % 2 == 1){

p = p*r % m;

r = r*r % m;

b = b / 2;

}
return p;

}
Analice el anterior algoritmo. Cuáles de las siguientes afirmaciones son
verdaderas? (Escoja todas las que lo sean).

Seleccione una o más de una:
a. El tamaño del problema es n = min(a,b, m), es decir el menor valor entre a,
b y m. 

b. El tamaño del problema es  n= min\( \log_{} a, \log_{} b, \log_{} m \) , esto


es el tamaño de a, b y m

c. El tamaño del problema es n = p

d. La complejidad del algoritmo es  O\( n^3 \)

e. La complejidad del algoritmo es  O\(\ 2^n \)

f. La complejidad del algoritmo es  O\(n^2\)  

g. La complejidad del algoritmo es  O\(n \)
h. La complejidad del algoritmo es  O\( \log_{} n \)

i. El algoritmo no funciona porque el resultado no corresponde al problema
descrito

La respuesta correcta es: El tamaño del problema es 
n= min\( \log_{} a, \log_{} b, \log_{} m \) , esto es el tamaño de a, b y m , La

complejidad del algoritmo es  O\( n^3 \)
Pregunta 4 El siguiente método recursivo busca multiplicar dos enteros arbitrariamente largos
Incorrecta de manera recursiva:

Puntúa 0,0 sobre
int mult( int x, int y){
1,0
if(y == 0){
return 0;

} else if( y % 2 == 0){

return 2 * mult( x, y / 2);

} else {
return x + 2*mult( x, y / 2);

Asumiendo que el tamaño de los enteros es de n bits, cuáles de las siguientes
afirmaciones son ciertas? (Seleccione todas las que lo sean).

Seleccione una o más de una:
a. La función de tiempo cumple la ecuación  T\(n\) = 2\cdot T\(n/2\)+O\(n\)

b. La función de tiempo cumple la ecuación 
T\(n\) = 2\cdot T\(n­1\)+O\(n^2\)  

c. La función de tiempo cumple la ecuación  T\(n\) = T\(n­1\)+O\(n\)

d. La función de tiempo cumple la ecuación  T\(n\) = T\(n/2\)+O\(n\)

e. La complejidad del Algoritmo es  O\(n\)  

f. La complejidad del Algoritmo es  O\(n^2\)

g. La complejidad del Algoritmo es  O\(n\cdot log n\)

h. La complejidad del Algoritmo es  O\( n\cdot 2^n\)

i. La complejidad del Algoritmo es  O\(n^3\)

j. El algoritmo no corresponde al problema descrito (la respuesta es
incorrecta)

La respuesta correcta es: La función de tiempo cumple la ecuación 
T\(n\) = T\(n­1\)+O\(n\)  , La complejidad del Algoritmo es  O\(n^2\)

Pregunta 5 Un algoritmo O(n) será siempre más eficiente que un algoritmo O(n^2). 
Correcta  
Puntúa 1,0 sobre
1,0 Seleccione una:
Verdadero

Falso 

La respuesta correcta es 'Falso'
Pregunta 6 Ordene las siguientes funciones de manera ascendente, esto es que cada
Correcta función sea asintóticamente mayor que sus funciones anteriores:

Puntúa 1,0 sobre
,  ,  \(2\)^n ,  \(2\)^{n/2} ,  ,  ,  ,  ,  \(\log_{} n\)^2 ,  , 
1,0

1 10^50  

2 log n  

3 (log n) ^2  

4 raiz( n )  

5 n  

6 n * log n  

7 n^2  

8 (2)^(n/2)  

9 (2)^(n)  

10 n!  

11 n^n  

La respuesta correcta es: 1 – 10^50, 2 – log n, 3 – (log n) ^2, 4 – raiz( n ), 5 – n, 6
– n * log n, 7 – n^2, 8 – (2)^(n/2), 9 – (2)^(n), 10 – n!, 11 – n^n
Pregunta 7 El siguiente algoritmo recibe un arreglo de enteros (de tamaño n), ordenado
Correcta ascendentemente, y un entero x. Como salida devuelve la posición de x dentro
del arreglo o ­1 si no lo encontró. Como variables adicionales, recibe una posición
Puntúa 1,0 sobre
de inicio y una de fin (que corresponderían a 0 y n­1 en el primer llamado).
1,0

int search(int[] A, int x, int ini, int fin){
 if(ini > fin)
 return ­1;

int m = (ini + fin )/2;
if(A[m] == x)
 return m;

if(x < A[m])
 return search(A,x,ini, m­1);

else
 return search(A,x,m+1,fin);

Analice el anterior algoritmo. Cuáles de las siguientes afirmaciones son
verdaderas? (Escoja todas las que lo sean).

Seleccione una o más de una:
a. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n/2\) + O\( \log_{}n\)

b. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n/2\) + O\( n\)

c. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n/2\) + O\( 1\)  

d. La función de tiempo del algoritmo cumple la siguiente ecuación: 
T\(n\) = T\(n­1\) + O\( n^2\)

e. La complejidad del algoritmo es  O\(n\)

f. La complejidad del algoritmo es  O\(\log_{}n\)  

g. La complejidad del algoritmo es  O\(n\cdot\log_{}n\)

h. La complejidad del algoritmo es  O\(n^2\)
i. La complejidad del algoritmo es  O\(n^3\)

j. El algoritmo no funciona, porque los resultados no corresponden a la
descripción del problema.

La respuesta correcta es: La función de tiempo del algoritmo cumple la siguiente
ecuación:  T\(n\) = T\(n/2\) + O\( 1\)  , La complejidad del algoritmo es 

O\(\log_{}n\)

Pregunta 8 Ordene las siguientes funciones de manera descendente, esto es que cada
Correcta función sea asintóticamente menor que sus funciones anteriores:

Puntúa 1,0 sobre
,  \(2\)^n ,  \(log n\)^2 ,   ,  ,  ,  ,  ,  , \(2\)^{n/2} , 
1,0

1 n^n  

2 n!  

3 (2)^(n)  

4 (2)^(n/2)  

5 n^2  

6 n * log n  

7 n  

8 raiz( n )  

9 (log n) ^2  

10 log n  

11 4^10  

La respuesta correcta es: 1 – n^n, 2 – n!, 3 – (2)^(n), 4 – (2)^(n/2), 5 – n^2, 6 – n
* log n, 7 – n, 8 – raiz( n ), 9 – (log n) ^2, 10 – log n, 11 – 4^10
Pregunta 9 Suponga que usted está escribiendo un algoritmo que resuelve un problema de
Parcialmente tamaño n, y ha encontrado varias maneras de hacerlo:
correcta 1. La primera es una solución iterativa que tiene un tiempo de ejecución 
T\(n\) = 20\cdot n^{\frac{3}{2}}+2^{40} .
Puntúa 0,4 sobre
1,0 2. La segunda es una solución recursiva que tiene un tiempo de ejecución que
cumple la siguiente relación:  T\(n\) = 8 \cdot T\(n/4\)+n
3. La tercera también es una solución recursiva, que cumple la siguiente
relación:  T\(n\) = T\(n­1\)+ T\(n­2\) ­ 3

A partir de lo anterior es cierto afirmar que (seleccione todas las opciones
válidas):

Seleccione una o más de una:
a. La segunda solución tiene una complejidad  O\(n^{3/2}\)  

b. La segunda solución tiene una complejidad  O\(n^{3/2}\cdot log n\)

c. La tercera solución tiene una complejidad  O\(n^{1/2}\)

d. La tercera solución tiene una complejidad  O\( {\phi^{n}} \)  

e. La última solución es la mejor porque tiene las constantes mas bajas 
Esto no es cierto.

f. La segunda solución es la mejor de todas.

g. La primera solución es la mejor de todas.

h. La primera y segunda solución tienen la misma complejidad. Sería
necesario un análisis de constantes para saber cuál es mejor.

La respuesta correcta es: La segunda solución tiene una complejidad 
O\(n^{3/2}\)  , La tercera solución tiene una complejidad  O\( {\phi^{n}} \)  , La
primera y segunda solución tienen la misma complejidad. Sería necesario un
análisis de constantes para saber cuál es mejor.
Pregunta 10 El siguiente algoritmo busca obtener el cociente y residuo entre dos números
Parcialmente enteros positivos a y b de tamaño arbirario:
correcta
Entradas: a, b
Puntúa 0,3 sobre
Salidas: q, r
1,0

int[] divMod(int a, int b){
int q = 0;
int r = a;
while( r > b ){
r = r ­ b;
q = q+1;

}
return new int[] {q, r};

}
Acerca del anterior algoritmo, es correcto afirmar (Escoja todas las opciones
verdaderas):

Seleccione una o más de una:
a. El tamaño del problema es el mayor valor de a y b. n = max( a, b)

b. El tamaño del problema es   , que corresponde al tamaño de a

c. El tamaño del problema es n = a, porque en caso que b sea mayor, el
algoritmo se ejecuta una única vez. 

d. La complejidad del algoritmo es  O\( n \)

e. La complejidad del algoritmo es  O\( n^2 \)  

f. La complejidad del algoritmo es  O\( \log_{} n \)

g. La complejidad del algoritmo es  O\( 2^n \)

h. La complejidad del algoritmo es  O\( \sqrt{n} \)

i. El algoritmo es incorrecto ya que los resultados no corresponden a la
descripción del problema

La respuesta correcta es: El tamaño del problema es n = a, porque en caso que b
sea mayor, el algoritmo se ejecuta una única vez., La complejidad del algoritmo
es  O\( 2^n \)

Potrebbero piacerti anche