elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)  (Leído 5,528 veces)
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
[Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
« 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!


En línea

LET'S DO STUFF!!
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
« Respuesta #1 en: 6 Noviembre 2016, 12:44 pm »

No hay mucho código que mostrar porque eso es técnicas de diseño.


En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
« Respuesta #2 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.

Código
  1. int comb(int n, int k) {
  2.  static int table[MAXN][MAXK] = { 0 };
  3.  
  4.  if (k == 0 || n == k)
  5.    return 1;
  6.  
  7.  if (table[n][k] != 0)
  8.    return table[n][k];
  9.  
  10.  table[n][k] = comb(n - 1, k) + comb(n - 1, k - 1);
  11.  
  12.  return table[n][k];
  13. }
  14.  

Código
  1. int comb_(int n, int k) {
  2.  int table[n+1][k+1];
  3.  int i, j;
  4.  
  5.  for (i = 0; i <= n; i++)
  6.    table[i][0] = 1;
  7.  
  8.  for (i = 0; i <= n; i++)
  9.    table[i][i] = 1;
  10.  
  11.  for (i = 0; i <= n; i++)
  12.    for (j = 1; j <= k && j < i; j++){
  13. printf ("Valor de i: %d, valor de j: %d\n",i,j);
  14.      table[i][j] = table[i - 1][j - 1] + table[i - 1][j];
  15.  
  16. }
  17.  
  18.  return table[n][k];
  19. }
  20.  
« Última modificación: 6 Noviembre 2016, 20:00 pm por GGZ » En línea

LET'S DO STUFF!!
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
« Respuesta #3 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
En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA)
« Respuesta #4 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!
En línea

LET'S DO STUFF!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[duda]Estrategias contra los motivos que impulsan los delitos informaticos
Foro Libre
rolly21102 2 5,457 Último mensaje 19 Febrero 2011, 01:27 am
por anonimo12121
1 muestra del poder de la programacion dinamica « 1 2 3 »
.NET (C#, VB.NET, ASP)
spiritdead 23 13,167 Último mensaje 19 Enero 2015, 23:01 pm
por Eleкtro
Programación Dinámica
Java
erikcdlm 0 1,888 Último mensaje 7 Noviembre 2014, 20:32 pm
por erikcdlm
Problema Programación Dinamica
Programación C/C++
maxisolis 3 2,549 Último mensaje 29 Junio 2015, 02:19 am
por maxisolis
problema de backtracking y programacion dinamica
Programación C/C++
aprendiz de programador 6 6,805 Último mensaje 12 Diciembre 2015, 16:08 pm
por SnzCeb
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines