Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: GGZ en 6 Noviembre 2016, 10:04 AM

Título: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
Publicado por: GGZ en 6 Noviembre 2016, 10:04 AM
Hola a todos, la pregunta es bien directa.

No entiendo bien la diferencia entre Programación Dinámica(botton up y top-down)
¿Alguien me podría dar ejemplos de códigos explicando la lógica de cada uno?


¡Saludos!
Título: Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
Publicado por: MAFUS en 6 Noviembre 2016, 12:44 PM
No hay mucho código que mostrar porque eso es técnicas de diseño.
Título: Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
Publicado por: GGZ en 6 Noviembre 2016, 14:04 PM
Si que los hay, y los encontré ya los voy entendiendo de todos modos ...

Top-Down y Botton-Up para calcular un número combinatorio.


int comb(int n, int k) {
 static int table[MAXN][MAXK] = { 0 };

 if (k == 0 || n == k)
   return 1;

 if (table[n][k] != 0)
   return table[n][k];

 table[n][k] = comb(n - 1, k) + comb(n - 1, k - 1);

 return table[n][k];
}



int comb_(int n, int k) {
 int table[n+1][k+1];
 int i, j;

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

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

 for (i = 0; i <= n; i++)
   for (j = 1; j <= k && j < i; j++){
printf ("Valor de i: %d, valor de j: %d\n",i,j);
     table[i][j] = table[i - 1][j - 1] + table[i - 1][j];

}

 return table[n][k];
}

Título: Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
Publicado por: MAFUS en 6 Noviembre 2016, 22:43 PM
Eso muestra una solución recursiva y su contraparte iterativa.

Top-down y bottom-up son como te explica, por ejemplo, wikipedia: https://es.wikipedia.org/wiki/Top-down_y_bottom-up
Título: Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
Publicado por: GGZ en 7 Noviembre 2016, 08:20 AM
A eso era que me refería pero ya fue, a mi me lo dieron así.

Wikipedia es lo primero que leí antes de escribir este post.

Fue, ya está.
¡Saludos!