Edición de «Práctica 3: Técnicas Algorítmicas (Algoritmos III)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 76: Línea 76:
</pre>
</pre>
<br>b)
<br>b)
<br>c) usando Teorema Maestro tenemos:  T(n) = 2 * T(n/2) + n^2, que entra en el tercer caso, quedándonos: O(n^2)
<br>c) O(n log n)


==Ejercicio 03.04==
==Ejercicio 03.04==
Línea 253: Línea 253:
Nota: costo=int, pred: <int,int>
Nota: costo=int, pred: <int,int>
camMinimo(int M[m][n])
camMinimo(int M[m][n])
  Tupla<costo, pred> R[m][n];
Tupla<costo, pred> R[m][n];
  Lista<int, int> camino;
Lista<int, int> camino;


  R(1,1)=< M[1,1], <0,0> >;
R(1,1)=< M[1,1], <0,0> >;
  R(f,1)=< Σ{i=1..f} M[i,1], <f-1,1> >;
R(f,1)=< Σ{i=1..f} M[i,1], <f-1,1> >;
  R(1,c)=< Σ{i=1..c} M[1,i], <1,c-1> >;
R(1,c)=< Σ{i=1..c} M[1,i], <1,c-1> >;


  para f=2..m
para f=2..m
    para c=2..n
para c=2..n
      si (R[f,c-1].costo < R[f-1,c].costo)
si (R[f,c-1].costo < R[f-1,c].costo)
        R[f,c].costo = R[f,c-1].costo+M[f,c];
R[f,c].costo = R[f,c-1].costo+M[f,c];
        R[f,c].pred = <f,c-1>;
R[f,c].pred = <f,c-1>;
      sino
sino
        R[f,c].costo = R[f-1,c].costo+M[f,c];
R[f,c].costo = R[f-1,c].costo+M[f,c];
        R[f,c].pred = <f-1,c>;
R[f,c].pred = <f-1,c>;


res = R[m,n].costo;
res = R[m,n].costo;
Línea 287: Línea 287:


==Ejercicio 03.09==
==Ejercicio 03.09==
<br>a) Primero pensemos en la funcion recursiva. TIP: veamos la version booleana y luego si sale, se puede hacer la version con los operandos.
<br>a)
 
<br>b)
i es el indice del vector v de valores a los cuales se les van a aplicar los operandos.
           
f(i,w) = {  true si i=1 y W=v1
            false si i = 1 y W !=v1
            f(i-1,w-vi) || f(i-1, w/ri) || f(i-1, nroot(w)) //hacemos un or
 
<br>b) Se puede ahcer pseudo-polinomial en O(nW)
 
==Ejercicio 03.10==
==Ejercicio 03.10==


Línea 586: Línea 578:
==Ejercicio 03.12==
==Ejercicio 03.12==
==Ejercicio 03.13==
==Ejercicio 03.13==
<br>a) no es optimo ya que se puede realizar con solo 2 operaciones. Insertando una 'c' entre las 'b' y borrando la ultima 'a'.
<br>a)
<br>b)
<br>b)
<pre>
<pre>
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: