¿Qué significa el problema de la mochila?
El problema de la mochila es un problema de optimización que se utiliza para ilustrar tanto el problema como la solución. Debe su nombre a una situación en la que se limita el número de objetos que pueden colocarse dentro de una mochila de tamaño fijo.
Dado un conjunto de objetos con pesos y valores específicos, el objetivo es meter en la mochila la mayor cantidad posible de objetos dada la restricción de peso de la mochila.
Definición del problema de la mochila
El problema de la mochila es un ejemplo de problema de optimización combinatoria, un tema de matemáticas e informática que consiste en encontrar el objeto óptimo entre un conjunto de objetos.
Se trata de un problema estudiado desde hace más de un siglo y es un problema de ejemplo muy utilizado en la optimización combinatoria, en la que se necesita un objeto óptimo o una solución finita cuando no es posible realizar una búsqueda exhaustiva.
El problema puede encontrarse en escenarios del mundo real, como la asignación de recursos en restricciones financieras o incluso en la selección de inversiones y carteras.
También puede encontrarse en campos como las matemáticas aplicadas, la teoría de la complejidad, la criptografía, la combinatoria y la informática. Es fácilmente el problema más importante de la logística.
En el problema de la mochila, los elementos dados tienen como mínimo dos atributos: el valor de un elemento, que afecta a su importancia, y el peso o volumen de un elemento, que es su aspecto limitador.
Como no es posible una búsqueda exhaustiva, se puede dividir el problema en subproblemas más pequeños y ejecutarlo recursivamente. Esto se denomina subestructura óptima. Se trata de tratar sólo un elemento cada vez y el peso actual aún disponible en la mochila.
El solucionador del problema sólo tiene que decidir si coge o no el elemento basándose en el peso que aún puede aceptar. Sin embargo, si se trata de un programa, el recálculo no es independiente y causaría problemas. Aquí es donde se pueden aplicar técnicas de programación dinámica. Las soluciones a cada subproblema se almacenan para que el cálculo sólo tenga que hacerse una vez.