Está en la página 1de 11

20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

Evaluacion final - Escenario 8

Fecha de entrega
21 de dic en 23:55
Puntos
125
Preguntas
10
Disponible
18 de dic en 0:00 - 21 de dic en 23:55
4 días
Límite de tiempo
90 minutos
Intentos permitidos
2

Instrucciones

https://poli.instructure.com/courses/40121/quizzes/81222 1/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

Volver a realizar el examen

Historial de intentos

Intento Hora Puntaje


MÁS RECIENTE Intento 1
61 minutos 120.83 de 125


Las respuestas correctas estarán disponibles del 21 de dic en 23:55 al 22 de dic en 23:55.

Puntaje para este intento:


120.83 de 125
Entregado el 20 de dic en 20:57
Este intento tuvo una duración de 61 minutos.

Pregunta 1 12.5
/ 12.5 pts
https://poli.instructure.com/courses/40121/quizzes/81222 2/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

Mientras estudiaba el algoritmo de ordenamiento por mezcla, Juan


pensó que si el arreglo se dividía en tres partes, en lugar de dos, y
cada una de éstas era ordenada recursivamente y mezclada junto a
las otras dos en tiempo O(n), se obtendría un algoritmo más eficiente
que el ordenamiento por mezcla clásico. Sobre la idea de Juan es
posible afirmar que:

 
Al dividir el arreglo en tres partes, no se puede garantizar que será
ordenado correctamente.

 
La modificación al algoritmo propuesta reduce su complejidad temporal
ya que el caso base es alcanzado más rápidamente.

 
La modificación al algoritmo propuesta no afecta su complejidad
temporal.

 
No es posible mezclar tres arreglos ordenados en tiempo O(n), por lo
que la idea carece de sentido.

 
La modificación al algoritmo propuesta aumenta su complejidad
temporal ya que el número de subproblemas crecerá de dos a tres.

Pregunta 2 12.5
/ 12.5 pts

¿Cuál es el predicado Q más fuerte que hace válida la siguiente tripla?

{Pre Q: _________________________}

program mistery

    input: a: , b:

https://poli.instructure.com/courses/40121/quizzes/81222 3/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

    a := 12

    b := 10

    return a, b

{Pos R: a = 12 /\ A = 12 /\ b = 10 /\ B = 10}

 
A = 12 /\ B = 10

 
true

 
false

 
a = A /\ b = B

 
a = A /\ a = 12 /\ b = 10 /\ b = B

Pregunta 3 12.5
/ 12.5 pts

f, g y h son funciones escritas en el lenguaje de programación java, las


cuales evalúan la siguiente ecuación de recurrencia: 

long f(int n, int k) {

   if (k == 0) return 1;

   if (k > n) return 0;

   return f(n-1, k-1) + f(n-1, k);

long g(int n, int k, long[][] mem){

   if (mem[n][k]>0) return mem[n][k];

   if (k == 0) mem[n][k] = 1;

   else if (k > n) mem[n][k] = 0;

https://poli.instructure.com/courses/40121/quizzes/81222 4/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

   else mem[n][k] = g(n-1, k-1, mem) + g(n-1, k, mem);

   return mem[n][k];

long h(int n, int k){

   long[][] mem = new long[n+1][k+1];

   for (int i = 0; i <= n; i++) mem[i][0] = 1;

   for (int i = 0; i <= n; i++)

        for (int j = i+1; j <= k; j++) mem[i][j] = 0;

   for (int i = 1; i <= n; i++)

        for (int j = 1; j <= k && j <= i; j++) mem[i][j] = mem[i-1][j-1] + mem[i-


1][j];

   return mem[n][k];

La función que implementa el algoritmo de mejor complejidad temporal


es: 

 
Solamente la función g.

 
Tanto la función g como la función h.

 
Solamente la función h.

 
Solamente La función f.

 
Tanto la función f como la función g.

Pregunta 4 12.5
/ 12.5 pts

Para demostrar que la tripla siguiente es válida, se debe demostrar


que:

{Pre Q: a = A /\ b = B}

https://poli.instructure.com/courses/40121/quizzes/81222 5/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

program mistery

    input: a: , b:

    var: c:

    if a < b then

        c := a

    else

        c := b

    return r

{Pos R: (c = A \/ c = B) /\ c >= A /\ c >= B}

 
La tripla no es válida.

 
a = A /\ b = B (a = A \/ b = B) /\ a >= A /\ b >= B

 
(a = A /\ b = B /\ a < b (a = A \/ a = B) /\ a >= A /\ a >= B) /\ (a = A
/\ b = B /\ ¬(a > b) (b = A \/ b = B) /\ b >= A /\ b>= B)

 
a = A /\ b = B /\ a < b (a = A \/ a = B) /\ a >= A /\ a >= B

 
a = A /\ b = B /\ ¬(a < b) (b = A \/ b = B) /\ b >= A /\ b >= B

Pregunta 5 12.5
/ 12.5 pts

Para completar Q, el predicado más débil que hace la tripla válida,


debe rellenarse los espacios en blanco con los valores:

{Pre Q: a = _________ /\ b = _________}

program mistery

    input: a: , b:

    a := a + b

    b := a - b

    a := a - b
https://poli.instructure.com/courses/40121/quizzes/81222 6/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

    return a, b

{Pos R: a = 10 /\ b = 12}

 
12 y 10

 
12 y 20

 
10 y 24

 
20 y 24

 
20 y 12

Pregunta 6 12.5
/ 12.5 pts

De los siguientes, no es un problema de decisión:

 
Dado un número natural n, determinar si n es par.

 
Dado un número natural n, determinar si n es impar.

 
Dado un número natural n, determinar el número de divisores naturales
de n.

 
Dado un número natural n, determinar si n es primo.

 
Dado un número natural n, determinar si n tiene más de diez divisores
naturales diferentes.

Pregunta 7 12.5
/ 12.5 pts

https://poli.instructure.com/courses/40121/quizzes/81222 7/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

f, g y h son funciones escritas en el lenguaje de programación java, las


cuales evalúan la siguiente ecuación de recurrencia: 

long f(int n, int k) {

   if (k == 0) return 1;

   if (k > n) return 0;

   return f(n-1, k-1) + f(n-1, k);

long g(int n, int k, long[][] mem){

   if (mem[n][k]>0) return mem[n][k];

   if (k == 0) mem[n][k] = 1;

   else if (k > n) mem[n][k] = 0;

   else mem[n][k] = g(n-1, k-1, mem) + g(n-1, k, mem);

   return mem[n][k];

long h(int n, int k){

   long[][] mem = new long[n+1][k+1];

   for (int i = 0; i <= n; i++) mem[i][0] = 1;

   for (int i = 0; i <= n; i++)

        for (int j = i+1; j <= k; j++) mem[i][j] = 0;

   for (int i = 1; i <= n; i++)

        for (int j = 1; j <= k && j <= i; j++) mem[i][j] = mem[i-1][j-1] + mem[i-


1][j];

   return mem[n][k];

Sean Tf(n), Tg(n) y Th(n) los tiempos de ejecución de f(n, n/2), g(n,
n/2, {0...0}) y h(n, n/2), respectivamente. Es posible afirmar que: 

https://poli.instructure.com/courses/40121/quizzes/81222 8/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

Parcial Pregunta 8 8.33


/ 12.5 pts

El algoritmo de ordenamiento rápido (quicksort) tiene su peor caso


cuando: 

(Seleccione todas las opciones correctas)  

 
El arreglo está ordenado de manera no creciente.

 
El arreglo está ordenado de manera no decreciente ó de manera no
creciente.

 
El arreglo está completamente desordenado.

 
El arreglo está ordenado de manera no decreciente.

 
El arreglo está ordenado de manera no decreciente y de manera no
creciente.

Pregunta 9 12.5
/ 12.5 pts

https://poli.instructure.com/courses/40121/quizzes/81222 9/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

f, g y h son funciones escritas en el lenguaje de programación java, las


cuales evalúan la siguiente ecuación de recurrencia: 

long f(int n, int k) {

   if (k == 0) return 1;

   if (k > n) return 0;

   return f(n-1, k-1) + f(n-1, k);

long g(int n, int k, long[][] mem){

   if (mem[n][k]>0) return mem[n][k];

   if (k == 0) mem[n][k] = 1;

   else if (k > n) mem[n][k] = 0;

   else mem[n][k] = g(n-1, k-1, mem) + g(n-1, k, mem);

   return mem[n][k];

long h(int n, int k){

   long[][] mem = new long[n+1][k+1];

   for (int i = 0; i <= n; i++) mem[i][0] = 1;

   for (int i = 0; i <= n; i++)

        for (int j = i+1; j <= k; j++) mem[i][j] = 0;

   for (int i = 1; i <= n; i++)

        for (int j = 1; j <= k && j <= i; j++) mem[i][j] = mem[i-1][j-1] + mem[i-


1][j];

   return mem[n][k];

Las funciones que hacen uso de memoización son:

https://poli.instructure.com/courses/40121/quizzes/81222 10/11
20/12/21 20:58 Evaluacion final - Escenario 8: SEGUNDO BLOQUE-TEORICO/ANALISIS Y VERIFICACION DE ALGORITMOS-[GRUPO B02]

 
Solamente g.

 
Solamente h.

 
Las funciones g y h.

 
Ninguna de las funciones hace uso de memoización.

 
Solamente f.

Pregunta 10 12.5
/ 12.5 pts

Un problema A pertenece a la clase NP-Completo si: 

 
Existe un algoritmo que resuelve A en tiempo polinómico en un modelo
de computación determinista.

 
Para todo problema B en NP, existe una reducción de Karp de B en A.

 
Existe un algoritmo que resuelve A en tiempo polinómico en un modelo
de computación no determinista.

 
Tiene una única salida. Además, ésta es de tipo booleano.

 
A pertenece a NP y para todo problema B en NP existe una reducción
de Karp de B en A.

Puntaje del examen:


120.83 de 125

https://poli.instructure.com/courses/40121/quizzes/81222 11/11

También podría gustarte