• Domingo 22 de Diciembre de 2024, 22:21

Autor Tema:  Divide Y Venceras  (Leído 1766 veces)

darko

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Divide Y Venceras
« en: Martes 20 de Abril de 2004, 17:17 »
0
Hola.
A ver si está vez formulo bien la pregunta que la anterior vez creo que no lo hice.
Estoy tratando de implemetar el algoritmo de la mochila mediante la estrategia de divide y venceras. El problema es que no encuentro una manera eficaz de implementarlo.
No se si sabreis de lo que trata este algoritmo, en otro post que he estado leyendo lo explica claramente, pero por si acaso hago una breve descripcion del problema.
Tenemos en un principio una mochila capaz de almacenar elementos y que soporta un peso maximo, por otro parte los elementos que introduciremos en la mochila tienen dos características, por una parte tienen un valor y por otra un peso. Lo que hay que hacer es meter en la mochila objetos que sumen el mayor valor posible sin sobrepasar éstos el peso maximo de la mochila.
No he encontrado un manera eficiente de ir subdividiendo el problema , entiendo que hay dos casos base, los dos hacen referencia a que solo haya un elemento para meter en la mochila y dependiendo de si éste tiene un valor mayor o menor que el peso maximo pues hare una cosa u otra. Pero la manera de dividir y juntar el problema no acabo de llegar a captarla.
Si alguien me puede dar unas orientaciones o un algoritmo implementado con una explicación, en fin, algo que me pueda ayudar a entenderlo pues lo agradecería ya que estoy bastante atascado.
Muchas Gracias :comp:

Nagisa

  • Miembro MUY activo
  • ***
  • Mensajes: 119
  • Nacionalidad: es
    • Ver Perfil
Re: Divide Y Venceras
« Respuesta #1 en: Martes 20 de Abril de 2004, 19:06 »
0
Hola!! Yo creia que el problema de la mochila era uno de los tipicos problemas que se resolvian por backtracking, no por divide y venceras.

Pones un objeto en la mochila, si el peso se pasa del maximo, devuelves la combinacion sin haber puesto ese objeto y continuas hasta obtener todas las combinaciones. Despues pasas un maximizador en funcion del valor y ya lo tienes. Tienes que tener cuidado de no repetir combinaciones.

Quizas sea algo mejor tener como variable global el maximo valor obtenido hasta el momento, para que una vez obtenga una combinacion y no pueda obtener mas a partir de ella, si no supera dicho valor no la devuelvo.
   

darko

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Divide Y Venceras
« Respuesta #2 en: Miércoles 21 de Abril de 2004, 12:38 »
0
Gracias.
He resuelto el problema mediante programacion dinamica, pero en divide y venceras me quede un poco atascado, a pesar de resolverse de una manera muy parecida.
Luego tratare de implementarlo apoyandome en las ideas que me han venido a la cabeza tras leer tu email.
De nuevo gracias y si a alguien se le ocurre algo que no dude en mandarlo.
taluek.