Página Principal Principal ► Master_2016-1_Presencial ► Secciones_2016-1_P Secciones_2016-1_Presencial resencial ► RA/ANALISIS RA/ANALISIS Y VERIFICACION DE ALGORITMOS / Grupo[001] Grupo [001] / P2016-1 ► General Genera l ► Examen parcial - semana 4 Comenzado el
lunes, 4 de abril de 2016, 20:19
Estado Finalizado Finalizado en Tiempo empleado
lunes, 4 de abril de 2016, 21:27 1 hora 8 minutos
Puntos 5,8/10,0 Calif Califica icación ción
57,7 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 Puntúa 0,1 sobre 1,0
1. La primera es una solución iterativa que tiene un tiempo de ejecución . 2. La segunda es una solución recursiva que tiene un tiempo de ejecución que cumple la siguiente relación: 3. La tercera también es una solución recursiva, que cumple la siguiente relación: A partir de lo anterior es cierto afirmar que (seleccione todas las opciones válidas): Seleccione una o más de una: a. La primera solución tiene una complejidad de
, porque el
término relevante es una exponencial. b. La primera solución tiene una complejidad de c. La complejidad de la segunda solución es d. La complejidad de la segunda solución es e. La complejidad de la tercera solución es 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 , La complejidad de la segunda solución es complejidad de la tercera solución es primera.
O\(n^3\cdot log n\) , La
O\({\phi^n}\) , La mejor solución es la
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 1,0
static int fib(int n){ 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 f. La complejidad del algoritmo es
O\( \log_{} n \) 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
Puntúa 0,0 sobre 1,0
Entradas: a,b, m Salidas: p 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 1,0
int mult( int x, int y){ 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
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
O\(n^2\)
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
,
1,0
,
\(2\)^n ,
\(2\)^{n/2} ,
,
,
,
,
\(\log_{} n\)^2 ,
,
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
Puntúa 1,0 sobre 1,0
del arreglo o -1 si no lo encontró. Como variables adicionales, recibe una posición de inicio y una de fin (que corresponderían a 0 y n-1 en el primer llamado). 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 f. La complejidad del algoritmo es
O\(n\) 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 ,
,
1,0
\(log n\)^2 ,
,
,
,
,
,
, \(2\)^{n/2} ,
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 Puntúa 0,4 sobre 1,0
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} . 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 Puntúa 0,3 sobre 1,0
Entradas: a, b Salidas: q, r 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 \)