El problema de la mochila en Java con backtracking

Hola a todos, hoy os voy a explicar como resolver el problema de la mochila con backtracking.

El problema de la mochila es un problema muy común de backtracking.

Básicamente, consiste en lo siguiente: tenemos una mochila con un tamaño máximo que nosotros le indicamos, también tenemos varios elementos que tienen un peso y un valor o beneficio.

El objetivo del programa es sacar la mejor combinación con mayor beneficio siempre y cuando no supere el peso de la mochila.

Se puede hacer de varias formas, pero en este caso, lo haremos con backtracking para encontrar la mejor combinación de beneficio.

¿Por donde empezamos? Lo primero que debemos pensar es que vamos a necesitar para hacer esa función recursiva y que clases podríamos crear.

En este caso, lo mejor es hacer una clase mochila para almacenar los elementos y poder mostrarlos después. Tambien necesitaremos hacer una clase simple llamada Elemento.

— Elemento

— Mochila

Ya tenemos la mochila y los elementos.

Para llamar a la función recursiva, necesitaremos una mochila donde vayamos metiendo elementos y otra donde almacenaremos la mejor combinación.

También necesitaremos los elementos sueltos (en un array).

Otra cosa que también necesitaremos es saber cuando debemos comprobar si nuestra mochila es mejor que la que ya tenemos, podemos usar un booleano para ello.

Este seria la definición de la función:

Este seria la función completa.

Os dejo tambien como llamamos a la función:

Por ultimo un vídeo donde lo explico todo, en la descripción esta el ejercicio completo para descargar:

Espero que os sea de ayuda.Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

2 comentarios

  1. cristian nolasco

    buenas me gustaria contactarte para que me podes ayudar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539