Está en la página 1de 7

Evaluacion final - Escenario 8

Fecha de entrega
5 de jul en 23:55
Puntos
125
Preguntas
10
Disponible
2 de jul en 0:00 - 5 de jul en 23:55
Límite de tiempo
90 minutos
Intentos permitidos
2

Instrucciones

Historial de intentos

Intento Hora Puntaje


MANTENER Intento 2
20 minutos 120.83 de 125

MÁS RECIENTE Intento 2


20 minutos 120.83 de 125

Intento 1
61 minutos 75 de 125


Las respuestas correctas estarán disponibles del 5 de jul en 23:55 al 6 de jul en 23:55.

Puntaje para este intento:


120.83 de 125
Entregado el 5 de jul en 20:44
Este intento tuvo una duración de 20 minutos.

Pregunta 1 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;

   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: 

 
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.

 
Solamente la función g.

Pregunta 2 12.5
/ 12.5 pts

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

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

 
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 si n es primo.

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

Pregunta 3 12.5
/ 12.5 pts

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

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

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}

 
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)

 
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

Pregunta 4 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;

   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: 

Pregunta 5 12.5
/ 12.5 pts

De los siguientes, no es un problema representativo de la clase NP-Difícil: 

 
Máximo conjunto independiente.

 
Decidir si n es primo.

 
3-SAT

 
Coloración de vértices.

 
Máximo clique.

Parcial Pregunta 6 8.33


/ 12.5 pts

De las siguientes, ¿cuáles ecuaciones de recurrencia no pueden ser resueltas mediante el teorema maestro?

 
 
T(n) = 2T(n-1) + T(n-2)

 
T(n) = 2T(n-1) + n

 
T(n) = 3T(n/3) + 1

 
T(n) = 2 T(n/2) + n

 
T(n) = 100T(n/9) + 

 
T(n) = 2T(n/2) + n/log(n)

Pregunta 7 12.5
/ 12.5 pts

Conteste la pregunta a partir del grafo siguiente:

El costo del árbol de expansión de costo mínimo del grafo es:

 
60

 
50

 
54

 
52

 
63

Pregunta 8 12.5
/ 12.5 pts

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:

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

 
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 reduce su complejidad temporal ya que el caso base es alcanzado más rápidamente.

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

Pregunta 9 12.5
/ 12.5 pts

Conteste la pregunta a partir del grafo siguiente:

El costo del camino de menor costo que permite llegar al vértice k desde el vértice a es:

 
35

 
31

 
34

 
33

 
32

Pregunta 10 12.5
/ 12.5 pts

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

{Pre Q: ___________________}

program mistery

    input: a: , b:

    var: r:boolean

    if (a + b) mod 2 = 0 then

        r := true

    else

        r := false

    return r

{Pos R: r (a mod 2 b mod 2)}

 
false

 
a = A /\ b = B

 
a mod 2 = b mod 2

 
(a + b) mod 2 = 0

 
true

Puntaje del examen:


120.83 de 125

También podría gustarte