Problema continuo de la mochila
En informática teórica, el problema continuo de la mochila (también conocido como problema fraccional de la mochila) es un problema algorítmico de optimización combinatoria en el que el objetivo es llenar un contenedor (la "mochila") con cantidades fraccionarias de diferentes materiales elegidos para maximizar el valor de los materiales seleccionados. Se parece al problema clásico de la mochila, en el que los elementos que se colocan en el contenedor son indivisibles; sin embargo, el problema continuo de la mochila se puede resolver en tiempo polinómico, mientras que el problema clásico de la mochila es NP-hard. Es un ejemplo clásico de cómo un cambio aparentemente pequeño en la formulación de un problema puede tener un gran impacto en su complejidad computacional.
Definición de problemas
Una instancia de los problemas de knapsack continuos o clásicos puede ser especificada por la capacidad numérica W de la mochila, junto con una colección de materiales, cada uno de los cuales tiene dos números asociados con ella: el peso wi de material disponible para ser seleccionado y el valor total vi de ese material. El objetivo es elegir una cantidad xi ≤ wi de cada material, sujeto a la limitación de la capacidad y maximización del beneficio total En el problema de la mochila clásica, cada una de las cantidades xi debe ser cero o wi; el problema de knapsack continuo difiere permitiendo xi para variar continuamente de cero a wi.
Algunas formulaciones de este problema reescalan las variables xi a estar en el rango de 0 a 1. En este caso, la limitación de la capacidad se convierte en y el objetivo es maximizar el beneficio total
Técnica de solución
El problema de la mochila continua se puede resolver mediante un algoritmo voraz, publicado por primera vez en 1957 por George Dantzig, que considera los materiales en orden ordenado por sus valores por unidad de peso. Para cada material, se elige la cantidad xi lo más grande posible:
- Si la suma de las decisiones adoptadas hasta ahora es igual a la capacidad W, entonces el algoritmo establece xi = 0.
- Si la diferencia d entre la suma de las decisiones adoptadas hasta ahora W es más pequeño que wi, entonces el algoritmo establece xi = d.
- En el caso restante, el algoritmo elige xi = wi.
Debido a la necesidad de ordenar los materiales, este algoritmo requiere un tiempo O(n log n) en entradas con n materiales. Sin embargo, al adaptar un algoritmo para encontrar medianas ponderadas, es posible resolver el problema en un tiempo O(n).
Referencias
- ^ a b c d Goodrich, Michael T.; Tamassia, Roberto (2002), "5.1.1 El problema de la fractura", Algorithm Design: Fundaciones, Análisis y Ejemplos de Internet, John Wiley ' Sons, págs. 259 a 260.
- ^ a b c d Korte, Bernhard; Vygen, Jens (2012), "17.1 Fractional Knapsack and Weighted Median", Optimización Combinatorial: Theory and Algorithms, Algorithms and Combinatorics, vol. 21, Springer, págs. 459 a 461, ISBN 9783642244889.
- ^ Dantzig, George B. (1957), "Problemas extremum variables de decreto", Operaciones de investigación, 5: 266–277, doi:10.1287/opre.5.2.266, MR 0089098.