
El problema de la mochila es el siguiente problema en optimización combinatoria :
- Dado un conjunto de artículos, cada uno con un peso y un valor, determine qué artículos incluir en la colección de manera que el peso total sea menor o igual a un límite dado y el valor total sea lo más grande posible.
Su nombre deriva del problema al que se enfrenta quien, con una mochila de tamaño fijo , debe llenarla con los objetos más valiosos. Este problema suele presentarse en la asignación de recursos, donde quienes toman las decisiones deben elegir entre un conjunto de proyectos o tareas indivisibles, sujetos a un presupuesto o un plazo fijos, respectivamente.
El problema de la mochila se ha estudiado durante más de un siglo, con trabajos iniciales que datan de 1897. [ 1 ]
El problema de la suma de subconjuntos es un caso especial de los problemas de decisión y 0-1 donde, para cada tipo de elemento, el peso es igual al valor:En el campo de la criptografía , el término problema de la mochila se usa a menudo para referirse específicamente al problema de la suma de subconjuntos. El problema de la suma de subconjuntos es uno de los 21 problemas NP-completos de Karp . [ 2 ]
Aplicaciones
Los problemas de la mochila aparecen en procesos de toma de decisiones del mundo real en una amplia variedad de campos, como encontrar la forma menos derrochadora de cortar materias primas, [ 3 ] la selección de inversiones y carteras , [ 4 ] la selección de activos para la titulización respaldada por activos , [ 5 ] y la generación de claves para el criptosistema de mochila Merkle-Hellman [ 6 ] y otros .
Una de las primeras aplicaciones de los algoritmos de la mochila fue en la construcción y calificación de exámenes en los que los examinados podían elegir qué preguntas responder. Para ejemplos pequeños, es un proceso bastante sencillo proporcionarles esta opción. Por ejemplo, si un examen contiene 12 preguntas, cada una con un valor de 10 puntos, el examinado solo necesita responder 10 preguntas para obtener una puntuación máxima posible de 100 puntos. Sin embargo, en exámenes con una distribución heterogénea de puntuaciones, es más difícil ofrecer opciones. Feuerman y Weiss propusieron un sistema en el que los estudiantes reciben un examen heterogéneo con un total de 125 puntos posibles. Se les pide a los estudiantes que respondan todas las preguntas lo mejor que puedan. De los posibles subconjuntos de problemas cuya suma total de puntos sea 100, un algoritmo de la mochila determinaría qué subconjunto le da a cada estudiante la puntuación más alta posible. [ 7 ]
Un estudio de 1999 del repositorio de algoritmos de la Universidad de Stony Brook mostró que, de 75 problemas algorítmicos relacionados con el campo de los algoritmos combinatorios y la ingeniería de algoritmos , el problema de la mochila era el 19.º más popular y el tercero más necesario después de los árboles de sufijos y el problema de empaquetamiento de contenedores . [ 8 ]
Definición
El problema más común que se resuelve es el problema de la mochila 0-1 , que restringe el númerode copias de cada tipo de artículo a cero o uno. Dado un conjunto deartículos numerados del 1 al, cada uno con un pesoy un valorjunto con una capacidad de peso máxima,
- maximizar
- sujeto ay.
Aquírepresenta el número de instancias del elementopara incluir en la mochila. De manera informal, el problema consiste en maximizar la suma de los valores de los artículos en la mochila de modo que la suma de los pesos sea menor o igual a la capacidad de la mochila.
El problema de la mochila acotada ( BKP ) elimina la restricción de que solo hay uno de cada artículo, pero restringe el númerode copias de cada tipo de artículo hasta un valor entero no negativo máximo:
- maximizar
- sujeto ay
El problema de la mochila sin límite ( UKP ) no impone un límite superior al número de copias de cada tipo de artículo y puede formularse como se indicó anteriormente, excepto que la única restricción eses que es un número entero no negativo.
- maximizar
- sujeto ay
Un ejemplo del problema de la mochila ilimitada se muestra en la figura que aparece al principio de este artículo y en el texto "si hay disponible cualquier cantidad de cada libro" que figura en el pie de foto de dicha figura.
Complejidad computacional
El problema de la mochila es interesante desde la perspectiva de la informática por muchas razones:
- La formulación del problema de la mochila como un problema de decisión (¿Se puede alcanzar un valor de al menos V sin exceder el peso W ? ) es NP-completa , por lo que no existe ningún algoritmo conocido que sea correcto y rápido (en tiempo polinomial) en todos los casos.
- No se conoce ningún algoritmo polinomial que pueda determinar, dada una solución, si es óptima (lo que significaría que no existe ninguna solución con un V mayor ). Este problema es co-NP-completo .
- Existe un algoritmo de tiempo pseudopolinomial que utiliza programación dinámica .
- Existe un esquema de aproximación totalmente polinomial que utiliza el algoritmo de tiempo pseudopolinomial como subrutina, descrito a continuación.
- Muchos casos que surgen en la práctica, y "casos aleatorios" de algunas distribuciones, pueden, sin embargo, resolverse con exactitud.
Existe una relación entre los problemas de "decisión" y "optimización": si existe un algoritmo polinomial que resuelve el problema de "decisión", entonces se puede encontrar el valor máximo para el problema de optimización en tiempo polinomial aplicando este algoritmo iterativamente mientras se incrementa el valor de k. Por otro lado, si un algoritmo encuentra el valor óptimo del problema de optimización en tiempo polinomial, entonces el problema de decisión se puede resolver en tiempo polinomial comparando el valor de la solución obtenida por este algoritmo con el valor de k. Por lo tanto, ambas versiones del problema tienen una dificultad similar.
Un tema recurrente en la literatura de investigación es identificar las instancias "difíciles" del problema de la mochila, [ 9 ] [ 10 ] o, dicho de otro modo, identificar qué propiedades de las instancias en la práctica podrían hacerlas más manejables de lo que sugiere su comportamiento NP-completo en el peor de los casos. [ 11 ] El objetivo de encontrar estas instancias "difíciles" es su uso en sistemas de criptografía de clave pública , como el criptosistema de la mochila de Merkle-Hellman . En términos más generales, una mejor comprensión de la estructura del espacio de instancias de un problema de optimización ayuda a avanzar en el estudio del problema en particular y puede mejorar la selección de algoritmos.
Además, es notable el hecho de que la dificultad del problema de la mochila depende de la forma de la entrada. Si los pesos y las ganancias se dan como enteros, es débilmente NP-completo , mientras que es fuertemente NP-completo si los pesos y las ganancias se dan como números racionales. [ 12 ] Sin embargo, en el caso de pesos y ganancias racionales, aún admite un esquema de aproximación totalmente polinomial .
Modelos de costo unitario
La NP-dificultad del problema de la mochila se relaciona con modelos computacionales en los que el tamaño de los enteros importa (como la máquina de Turing ). En contraste, los árboles de decisión cuentan cada decisión como un solo paso. Dobkin y Lipton [ 13 ] muestran unacota inferior en árboles de decisión lineales para el problema de la mochila, es decir, árboles donde los nodos de decisión prueban el signo de funciones afines . [ 14 ] Esto fue generalizado a árboles de decisión algebraicos por Steele y Yao. [ 15 ] Si los elementos en el problema son números reales o racionales , la cota inferior del árbol de decisión se extiende al modelo de máquina de acceso aleatorio real con un conjunto de instrucciones que incluye suma, resta y multiplicación de números reales, así como comparación y división o resto ("piso"). [ 16 ] Este modelo cubre más algoritmos que el modelo de árbol de decisión algebraico, ya que abarca algoritmos que usan indexación en tablas. Sin embargo, en este modelo se cuentan todos los pasos del programa, no solo las decisiones. Meyer auf der Heide [ 17 ] dio una cota superior para un modelo de árbol de decisión , quien demostró que para cada n existe un árbol de decisión lineal de O ( n 4 ) de profundidad que resuelve el problema de suma de subconjuntos con n elementos. Tenga en cuenta que esto no implica ningún límite superior para un algoritmo que deba resolver el problema para cualquier n dado .
Resolviendo
Existen varios algoritmos para resolver problemas de la mochila, basados en el enfoque de programación dinámica, [ 18 ] el enfoque de ramificación y acotación [ 19 ] o hibridaciones de ambos enfoques. [ 11 ] [ 20 ] [ 21 ] [ 22 ]
Algoritmo de programación dinámica por adelantado
El problema de la mochila ilimitada ( UKP ) no impone ninguna restricción en el número de copias de cada tipo de artículo. Además, aquí asumimos que
- sujeto ay
Observa quetiene las siguientes propiedades:
1.(la suma de elementos cero, es decir, la suma del conjunto vacío ).
2. ,, dóndees el valor de la-tipo de artículo.
La segunda propiedad necesita ser explicada en detalle. Durante el proceso de ejecución de este método, ¿cómo obtenemos el peso?¿Solo hay unos pocos?formas y los pesos anteriores sondonde hay totalestipos de artículos diferentes (al decir diferentes, queremos decir que el peso y el valor no son completamente iguales). Si conocemos el valor de cada uno de estosLos elementos y el valor máximo relacionado previamente, simplemente los comparamos entre sí y obtenemos el valor máximo final y hemos terminado.
Aquí se toma como cero el máximo del conjunto vacío. Tabulando los resultados dehasta el finalda la solución. Dado que el cálculo de cadaimplica examinar como máximoartículos, y hay como máximovalores dePara calcular el tiempo de ejecución de la solución de programación dinámica es. DividiendoReducir el tiempo de ejecución mediante su máximo común divisor es una forma de mejorarlo.
Incluso si P≠NP , elLa complejidad no contradice el hecho de que el problema de la mochila sea NP-completo , ya que, a diferencia de, no es polinomial en la longitud de la entrada al problema. La longitud de laLa entrada al problema es proporcional al número de bits en,, no aen sí mismo. Sin embargo, dado que este tiempo de ejecución es pseudopolinomial , esto convierte al problema de la mochila (versión de decisión) en un problema débilmente NP-completo .
Problema de la mochila 0-1

Una solución de programación dinámica similar para el problema de la mochila 0-1 también se ejecuta en tiempo pseudopolinomial. Supongamos queson enteros estrictamente positivos. Definirser el valor máximo que se puede alcanzar con un peso menor o igual autilizando artículos hasta(primeroelementos).
Podemos definirrecursivamente de la siguiente manera: (Definición A)
- si(el nuevo artículo supera el límite de peso actual)
- si.
La solución se puede encontrar entonces calculandoPara hacerlo de manera eficiente, podemos usar una tabla para almacenar cálculos anteriores.
El siguiente es un pseudocódigo para el programa dinámico:
// Aporte:// Valores (almacenados en el array v)// Pesos (almacenados en el array w)// Número de elementos distintos (n)// Capacidad de la mochila (W)// NOTA: Se supone que los arrays "v" y "w" almacenan todos los valores relevantes a partir del índice 1.matriz m [ 0. . n , 0. . W ];para j desde 0 hasta W hacer :m [ 0 , j ] := 0para i desde 1 hasta n hacer :m [ i , 0 ] := 0para i desde 1 hasta n hacer :para j desde 1 hasta W hacer :Si w [ i ] > j entonces :m [ i , j ] := m [ i -1 , j ]demás :m [ i , j ] := max ( m [ i -1 , j ], m [ i -1 , j - w [ i ]] + v [ i ])Por lo tanto, esta solución se ejecutará entiempo yespacio. (Si solo necesitamos el valor m[n,W], podemos modificar el código para que la cantidad de memoria requerida sea O(W), que almacena las dos últimas líneas del array "m".)
Sin embargo, si vamos un paso o dos más allá, deberíamos saber que el método se ejecutará en el tiempo entreySegún la Definición A , sabemos que no es necesario calcular todos los pesos cuando el número de elementos y los elementos seleccionados son fijos. Es decir, el programa anterior calcula más de lo necesario porque el peso varía frecuentemente entre 0 y W. Desde esta perspectiva, podemos programar este método para que se ejecute de forma recursiva.
// Aporte:// Valores (almacenados en el array v)// Pesos (almacenados en el array w)// Número de elementos distintos (n)// Capacidad de la mochila (W)// NOTA: Se supone que los arrays "v" y "w" almacenan todos los valores relevantes a partir del índice 1.Definir valor [ n , W ]Inicializar todos los valores [ i , j ] = -1Define m := ( i , j ) // Define la función m de modo que represente el valor máximo que podemos obtener bajo la condición: usar los primeros i elementos, el límite de peso total es j{Si i == 0 o j <= 0 entonces :valor [ i , j ] = 0devolverSi ( valor [ i -1 , j ] == -1 ) entonces : // m[i-1, j] no se ha calculado, tenemos que llamar a la función mm ( i -1 , j )Si w [ i ] > j entonces : // el artículo no cabe en la bolsavalor [ i , j ] = valor [ i -1 , j ]demás :Si ( valor [ i -1 , j - w [ i ]] == -1 ) entonces : // m[i-1,jw[i]] no se ha calculado, tenemos que llamar a la función mm ( i -1 , j - w [ i ])valor [ i , j ] = max ( valor [ i -1 , j ], valor [ i -1 , j - w [ i ]] + v [ i ])}Ejecutar m ( n , W )Por ejemplo, hay 10 artículos diferentes y el límite de peso es 67. Entonces, Si utiliza el método anterior para calcular, obtendrás esto, excluyendo las llamadas que producen:
Además, podemos romper la recursión y convertirla en un árbol. Luego podemos eliminar algunas hojas y usar computación paralela para acelerar la ejecución de este método.
Para encontrar el subconjunto real de elementos, en lugar de solo su valor total, podemos ejecutar esto después de ejecutar la función anterior:
/*** Devuelve los índices de los elementos de la mochila óptima.* i: Podemos incluir los artículos del 1 al i en la mochila.* j: peso máximo de la mochila*/función mochila ( i : int , j : int ) : Set < int > {Si i == 0 entonces :devolver {}Si m [ i , j ] > m [ i -1 , j ] entonces :devolver { i } ∪ mochila ( i -1 , j - w [ i ])demás :devolver mochila ( i -1 , j )}mochila ( n , W )Punto de encuentro intermedio
Otro algoritmo para la mochila 0-1, descubierto en 1974 [ 23 ] y a veces llamado "encuentro en el medio" debido a paralelismos con un algoritmo de nombre similar en criptografía , es exponencial en el número de elementos diferentes, pero puede ser preferible al algoritmo DP cuandoes grande en comparación con n . En particular, si elson no negativos pero no enteros, aún podríamos usar el algoritmo de programación dinámica mediante escalado y redondeo (es decir, usando aritmética de punto fijo ), pero si el problema requieredígitos fraccionarios de precisión para llegar a la respuesta correcta,será necesario escalarlo pory el algoritmo DP requeriráespacio ytiempo.
El algoritmo Meet-in-the-middle tiene como entrada: un conjunto de elementos con pesos y valores. Salida: el mayor valor combinado de un subconjunto. Dividir el conjunto {1... n } en dos conjuntos A y B de tamaño aproximadamente igual. calcular los pesos y valores de todos los subconjuntos de cada conjunto Para cada subconjunto de A, encuentre el subconjunto de B de mayor valor tal que el peso combinado sea menor que W. Mantener un registro del mayor valor combinado visto hasta ahora.El algoritmo tomaespacio, y las implementaciones eficientes del paso 3 (por ejemplo, ordenar los subconjuntos de B por peso, descartar los subconjuntos de B que pesan más que otros subconjuntos de B de mayor o igual valor, y usar la búsqueda binaria para encontrar la mejor coincidencia) dan como resultado un tiempo de ejecución de. Al igual que con el ataque de encuentro en el medio en criptografía, esto mejora eltiempo de ejecución de un enfoque ingenuo de fuerza bruta (examinando todos los subconjuntos de), a costa de utilizar espacio exponencial en lugar de constante (véase también paso a paso, paso a paso ). La mejora actual del algoritmo de encuentro en el medio, utilizando ideas del algoritmo de Schroeppel y Shamir para la suma de subconjuntos, proporciona como corolario un algoritmo aleatorio para la mochila que conserva el(hasta factores polinomiales) tiempo de ejecución y reduce los requisitos de espacio a(véase [ 24 ] Corolario 1.4). En contraste, el algoritmo determinista más conocido se ejecuta entiempo con una complejidad espacial ligeramente peor de. [ 25 ]
Algoritmos de aproximación
Como ocurre con la mayoría de los problemas NP-completos, puede ser suficiente encontrar soluciones viables, aunque no sean óptimas. Sin embargo, lo ideal es que la aproximación incluya una garantía de la diferencia entre el valor de la solución encontrada y el valor de la solución óptima.
Como ocurre con muchos algoritmos útiles pero computacionalmente complejos, se ha investigado ampliamente la creación y el análisis de algoritmos que aproximan una solución. El problema de la mochila, aunque NP-difícil, pertenece a un conjunto de algoritmos que pueden aproximarse a cualquier grado especificado. Esto significa que el problema tiene un esquema de aproximación en tiempo polinomial. Para ser exactos, el problema de la mochila tiene un esquema de aproximación en tiempo totalmente polinomial (FPTAS). [ 26 ]
Algoritmo de aproximación voraz
George Dantzig propuso un algoritmo de aproximación voraz para resolver el problema de la mochila sin límite. [ 27 ] Su versión ordena los artículos en orden decreciente de valor por unidad de peso,Luego procede a insertarlos en el saco, comenzando con tantas copias como sea posible del primer tipo de artículo hasta que ya no haya espacio en el saco para más. Siempre que haya un suministro ilimitado de cada tipo de artículo, sies el valor máximo de los artículos que caben en el saco, entonces el algoritmo voraz tiene garantizado alcanzar al menos un valor de.
Para el problema acotado, donde el suministro de cada tipo de artículo es limitado, el algoritmo anterior puede estar lejos de ser óptimo. Sin embargo, una simple modificación nos permite resolver este caso: Supongamos, por simplicidad, que todos los artículos caben individualmente en el saco (a pesar de). Construir una soluciónempacando artículos de forma voraz durante el mayor tiempo posible, es decirdóndeAdemás, construya una segunda solución.que contiene el primer artículo que no encajaba. Dado queproporciona una cota superior para la relajación LP del problema, uno de los conjuntos debe tener un valor al menos; de esta manera devolvemos cualquiera deytiene mejor valor para obtener un-aproximación.
Se puede demostrar que el rendimiento promedio converge a la solución óptima en distribución a la tasa de error.[ 28 ]
Esquema de aproximación en tiempo totalmente polinomial
El esquema de aproximación en tiempo totalmente polinomial (FPTAS) para el problema de la mochila aprovecha el hecho de que la razón por la que el problema no tiene soluciones conocidas en tiempo polinomial es que las ganancias asociadas a los artículos no están restringidas. Si se redondean algunos de los dígitos menos significativos de los valores de las ganancias, estos quedarán acotados por un polinomio y 1/ε, donde ε es un límite para la corrección de la solución. Esta restricción implica que un algoritmo puede encontrar una solución en tiempo polinomial que es correcta dentro de un factor de (1-ε) de la solución óptima. [ 26 ]
Se ingresa el algoritmo FPTAS : ε ∈ (0,1] una lista A de n elementos, especificados por sus valores,y pesos de salida: S' la solución FPTAS P := máximo // el valor más alto del artículo K := εpara i de 1 a n hacer:=fin paradevolver la solución, S', utilizando elvalores en el programa dinámico descrito anteriormente
Teorema: El conjuntocalculado por el algoritmo anterior satisface, dóndees una solución óptima.
Optimización cuántica aproximada
El algoritmo de optimización aproximada cuántica (QAOA) puede emplearse para resolver el problema de la mochila mediante computación cuántica , minimizando el hamiltoniano del problema. El hamiltoniano de la mochila se construye incorporando la condición de restricción a la función de coste del problema con un término de penalización. [ 29 ]dóndees la constante de penalización que se determina mediante un ajuste fino específico para cada caso.
Relaciones de dominancia
Resolver el problema de la mochila ilimitada puede hacerse más fácil descartando los objetos que nunca se necesitarán. Para un objeto dadoSupongamos que pudiéramos encontrar un conjunto de elementosde tal manera que su peso total sea menor que el peso dey su valor total es mayor que el valor de. Entoncesno puede aparecer en la solución óptima, porque siempre podríamos mejorar cualquier solución potencial que contengareemplazandocon el conjuntoPor lo tanto, podemos ignorar el-ésimo elemento en total. En tales casos,Se dice que domina. (Tenga en cuenta que esto no se aplica a los problemas de la mochila acotada, ya que es posible que ya hayamos utilizado los elementos en.)
Encontrar relaciones de dominancia nos permite reducir significativamente el tamaño del espacio de búsqueda. Existen varios tipos diferentes de relaciones de dominancia , [ 11 ] que satisfacen una desigualdad de la forma:
, ypara algunos
dónde y. El vectordenota el número de copias de cada miembro de.
- Dominio colectivo
- ElEl elemento -ésimo está dominado colectivamente por, escrito como, si el peso total de alguna combinación de elementos enes menor que w i y su valor total es mayor que v i . Formalmente,ypara algunos, es decirVerificar este dominio es computacionalmente difícil, por lo que solo se puede utilizar con un enfoque de programación dinámica. De hecho, esto es equivalente a resolver un problema de decisión de mochila más pequeño donde,y los artículos están restringidos a.
- Dominancia del umbral
- ElEl elemento -ésimo está dominado por el umbral, escrito como, si algún número de copias deestán dominados porFormalmente,, ypara algunosy. Esta es una generalización de la dominancia colectiva, introducida por primera vez en [ 18 ] y utilizada en el algoritmo EDUK. El más pequeño de estosdefine el umbral del elemento, escrito En este caso, la solución óptima podría contener como máximocopias de.
- Dominancia múltiple
- ElEl elemento -ésimo está dominado múltiplemente por un solo elemento., escrito como, siestá dominado por un cierto número de copias deFormalmente,, ypara algunoses decirEste predominio podría utilizarse eficazmente durante el preprocesamiento, ya que puede detectarse con relativa facilidad.
- Dominio modular
- Dejarser el mejor artículo , es decira pesar deEste es el elemento con la mayor densidad de valor. ElEl elemento -ésimo está dominado modularmente por un solo elemento., escrito como, siestá dominado pormás varias copias deFormalmente,, y es decir.
Variaciones
Existen numerosas variantes del problema de la mochila, surgidas de la gran cantidad de aplicaciones del problema básico. Las principales variaciones se producen al modificar algún parámetro del problema, como el número de objetos, el número de objetivos o incluso el número de mochilas.
Objetivo multidimensional
Aquí, en lugar de un único objetivo (por ejemplo, maximizar el beneficio monetario de los artículos en la mochila), puede haber varios objetivos. Por ejemplo, podrían existir preocupaciones ambientales o sociales, además de objetivos económicos. Entre los problemas que se abordan con frecuencia se incluyen la optimización de la cartera y la logística del transporte. [ 30 ] [ 31 ]
Por ejemplo, supongamos que usted dirige un crucero. Debe decidir cuántos comediantes famosos contratar. El barco tiene una capacidad máxima de una tonelada de pasajeros y los artistas deben pesar menos de 450 kg. Cada comediante tiene un peso, genera ingresos según su popularidad y solicita un salario específico. En este ejemplo, usted tiene varios objetivos. Por supuesto, desea maximizar la popularidad de sus artistas y minimizar sus salarios. Además, desea contar con la mayor cantidad de artistas posible.
Peso multidimensional
Aquí, el peso del artículo de la mochilaestá dado por un vector D-dimensionaly la mochila tiene un vector de capacidad D-dimensionalEl objetivo es maximizar la suma de los valores de los artículos en la mochila de modo que la suma de los pesos en cada dimensiónno excede.
El problema de la mochila multidimensional es computacionalmente más difícil que el problema de la mochila; incluso para, el problema no tiene EPTAS a menos que PNP. [ 32 ] Sin embargo, se demuestra que el algoritmo en [ 33 ] resuelve instancias dispersas de manera eficiente. Una instancia de mochila multidimensional es dispersa si hay un conjuntoparade tal manera que por cada artículo de la mochila,de tal manera quey. Tales casos ocurren, por ejemplo, al programar paquetes en una red inalámbrica con nodos de retransmisión. [ 33 ] El algoritmo de [ 33 ] también resuelve instancias dispersas de la variante de opción múltiple, la mochila multidimensional de opción múltiple.
El algoritmo IHS (Increasing Height Shelf) es óptimo para el problema de la mochila 2D (empaquetar cuadrados en un cuadrado bidimensional de tamaño unitario): cuando hay como máximo cinco cuadrados en un empaquetamiento óptimo. [ 34 ]
Varias mochilas
Aquí, hay varias mochilas. Esto puede parecer un cambio trivial, pero no es equivalente a aumentar la capacidad de la mochila inicial, ya que cada mochila tiene su propia restricción de capacidad. Esta variación se utiliza en muchos problemas de carga y programación en Investigación Operativa y tiene un esquema de aproximación de tiempo polinomial . [ 35 ] Esta variación es similar al Problema de Empaquetado de Contenedores . Se diferencia del Problema de Empaquetado de Contenedores en que se puede seleccionar un subconjunto de artículos, mientras que, en el Problema de Empaquetado de Contenedores, todos los artículos deben empaquetarse en ciertos contenedores.
Cuadrático
El problema de la mochila cuadrática maximiza una función objetivo cuadrática sujeta a restricciones de capacidad binarias y lineales. [ 36 ] El problema fue introducido por Gallo, Hammer y Simeone en 1980, [ 37 ] sin embargo, el primer tratamiento del problema data de Witzgall en 1975. [ 38 ]
Geométrico
En el problema de la mochila geométrica , hay un conjunto de rectángulos con diferentes valores y una mochila rectangular. El objetivo es meter en la mochila el mayor valor posible. [ 39 ]
En línea
En el problema de la mochila en línea , los objetos llegan uno a uno. Cada vez que llega un objeto, debemos decidir inmediatamente si lo colocamos en la mochila o lo descartamos. Hay dos variantes: (a) no extraíble: un objeto insertado permanece en la mochila para siempre; (b) extraíble: un objeto insertado puede retirarse posteriormente para dejar espacio para uno nuevo.
Han, Kawase y Makino [ 40 ] presentan un algoritmo aleatorio para el caso no ponderado y no removible. Es 2-competitivo, lo cual es lo mejor posible. Para el caso ponderado y removible, presentan un algoritmo 2-competitivo, demuestran una cota inferior de ~1,368 para algoritmos aleatorios y prueban que ningún algoritmo determinista puede tener una razón competitiva constante. Para el caso no ponderado y removible, presentan un algoritmo con una razón competitiva de 10/7 y demuestran una cota inferior de 1,25.
Hay varios otros artículos sobre el problema de la mochila en línea. [ 41 ] [ 42 ] [ 43 ]
Véase también
- Problema de empaquetamiento de contenedores : un problema matemático y computacional.
- Problema de cambio : elegir la menor cantidad de monedas para obtener una cantidad determinada de dinero.
- Subasta combinatoria
- Optimización combinatoria : subcampo de la optimización matemática.
- Problema de la mochila continua : un problema algorítmico en informática.
- Problema de corte de material : un problema matemático en la investigación operativa.
- Subasta de mochilas
- Lista de problemas de mochila
- Problema de empaquetado : problemas que intentan encontrar la forma más eficiente de empaquetar objetos en contenedores. Páginas que muestran descripciones breves de destinos de redirección.
Notas
- ↑ Mathews, GB (25 de junio de 1897). "Sobre la partición de números" (PDF) . Actas de la Sociedad Matemática de Londres . 28 : 486–490 . doi : 10.1112/plms/s1-28.1.486 .
- ↑ Richard M. Karp (1972). " Reducibilidad entre problemas combinatorios ". En RE Miller y JW Thatcher (editores). Complejidad de los cálculos computacionales. Nueva York: Plenum. págs. 85–103
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Problemas con la mochila . Berlín: Springer. pag. 449.ISBN 978-3-540-40286-2Consultado el 5 de mayo de 2022 .
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Problemas con la mochila . Berlín: Springer. pag. 461.ISBN 978-3-540-40286-2Consultado el 5 de mayo de 2022 .
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Problemas con la mochila . Berlín: Springer. pag. 465.ISBN 978-3-540-40286-2Consultado el 5 de mayo de 2022 .
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Problemas con la mochila . Berlín: Springer. pag. 472.ISBN 978-3-540-40286-2Consultado el 5 de mayo de 2022 .
- ↑ Feuerman, Martin; Weiss, Harvey (abril de 1973). "Un modelo de programación matemática para la construcción y calificación de pruebas". Management Science . 19 (8): 961– 966. doi : 10.1287/mnsc.19.8.961 . JSTOR 2629127 .
- ↑ Skiena, SS (septiembre de 1999). "¿Quién está interesado en los algoritmos y por qué? Lecciones del repositorio de algoritmos de Stony Brook". ACM SIGACT News . 30 (3): 65– 74. CiteSeerX 10.1.1.41.8357 . doi : 10.1145/333623.333627 . ISSN 0163-5700 . S2CID 15619060 .
- ↑ Pisinger, D. 2003. ¿Dónde están los problemas difíciles de la mochila? Informe técnico 2003/08, Departamento de Ciencias de la Computación, Universidad de Copenhague, Copenhague, Dinamarca.
- ↑ Caccetta, L.; Kulanoot, A. (2001). "Aspectos computacionales de los problemas difíciles de la mochila". Nonlinear Analysis . 47 (8): 5547– 5558. doi : 10.1016/s0362-546x(01)00658-7 .
- 1 2 3 Poirriez, Vincent; Yanev, Nicola; Andonov, Rumen (2009). "Un algoritmo híbrido para el problema de la mochila sin límites" . Optimización discreta . 6 (1): 110– 124. doi : 10.1016/j.disopt.2008.09.004 . ISSN 1572-5286 . S2CID 8820628 .
- ↑ Wojtczak, Dominik (2018). "Sobre la NP-completitud fuerte de los problemas racionales". Ciencias de la Computación: Teoría y Aplicaciones . Notas de clase en Ciencias de la Computación. Vol. 10846. pp. 308–320 . arXiv : 1802.09465 . doi : 10.1007/978-3-319-90530-3_26 . ISBN 978-3-319-90529-7. S2CID 3637366 .
- ↑ Dobkin, David; Lipton, Richard J. (1978). "Una cota inferior de ½ n 2 en programas de búsqueda lineal para el problema de la mochila" . Journal of Computer and System Sciences . 16 (3): 413– 417. doi : 10.1016/0022-0000(78)90026-0 .
- ↑ De hecho, el límite inferior se aplica al problema de la suma de subconjuntos, que es un caso especial del problema de la mochila.
- ↑ Michael Steele, J; Yao, Andrew C (1 de marzo de 1982). "Límites inferiores para árboles de decisión algebraicos" . Journal of Algorithms . 3 (1): 1– 8. doi : 10.1016/0196-6774(82)90002-5 . ISSN 0196-6774 .
- ↑ Ben-Amram, Amir M.; Galil, Zvi (2001), "Topological Lower Bounds on Algebraic Random Access Machines", SIAM Journal on Computing , 31 (3): 722– 761, doi : 10.1137/S0097539797329397.
- ↑ auf der Heide, Meyer (1984), "A Polynomial Linear Search Algorithm for the n -Dimensional Knapsack Problem", Journal of the ACM , 31 (3): 668– 676, doi : 10.1145/828.322450
- 1 2 Andonov, Rumen; Poirriez, Vincent; Rajopadhye, Sanjay (2000). "Problema de la mochila sin límites : programación dinámica revisitada". European Journal of Operational Research . 123 (2): 168– 181. CiteSeerX 10.1.1.41.2135 . doi : 10.1016/S0377-2217(99)00265-9 .
- ↑ S. Martello, P. Toth, Problemas de la mochila: algoritmos e implementaciones informáticas, John Wiley and Sons, 1990
- ↑ S. Martello, D. Pisinger, P. Toth, Programación dinámica y límites fuertes para el problema de la mochila 0-1 , Manag. Sci. , 45:414–424, 1999.
- ↑ Plateau, G.; Elkihel, M. (1985). "Un algoritmo híbrido para el problema de la mochila 0-1". Methods of Oper. Res . 49 : 277–293 .
- ↑ Martello, S.; Toth, P. (1984). "Una mezcla de programación dinámica y ramificación y acotación para el problema de la suma de subconjuntos". Manag. Sci . 30 (6): 765– 771. doi : 10.1287/mnsc.30.6.765 .
- ↑ Horowitz, Ellis; Sahni, Sartaj (1974), "Computing partitions with applications to the knapsack problem", Journal of the Association for Computing Machinery , 21 (2): 277– 292, doi : 10.1145/321812.321823 , hdl : 1813/5989 , MR 0354006 , S2CID 16866858
- ↑ Nederlof, Jesper; Węgrzycki, Karol (12 de abril de 2021). "Mejora del algoritmo de Schroeppel y Shamir para la suma de subconjuntos mediante vectores ortogonales". arXiv : 2010.08576 [ cs.DS ].
- ↑ Schroeppel, Richard; Shamir, Adi (agosto de 1981). "Un algoritmo $T = O(2^{n/2} )$, $S = O(2^{n/4} )$ para ciertos problemas NP-completos" . SIAM Journal on Computing . 10 (3): 456– 464. doi : 10.1137/0210033 . ISSN 0097-5397 .
- ^ Vazirani , Vijay. Algoritmos de aproximación. Springer-Verlag Berlín Heidelberg, 2003.
- ↑ Dantzig, George B. (1957). "Problemas de extremos con variables discretas". Operations Research . 5 (2): 266– 288. doi : 10.1287/opre.5.2.266 .
- ↑ Calvin, James M.; Leung, Joseph Y. -T. (1 de mayo de 2003). "Análisis del caso promedio de un algoritmo voraz para el problema de la mochila 0/1". Operations Research Letters . 31 (3): 202– 210. doi : 10.1016/S0167-6377(02)00222-5 .
- ↑ Lucas, Andrew (2014). "Formulaciones de Ising de muchos problemas NP" . Frontiers in Physics . 2 : 5. arXiv : 1302.5843 . Bibcode : 2014FrP.....2....5L . doi : 10.3389/fphy.2014.00005 . ISSN 2296-424X .
- ↑ Chang, TJ, et al. Heurísticas para la optimización de carteras con restricciones de cardinalidad . Informe técnico, Londres SW7 2AZ, Inglaterra: The Management School, Imperial College, mayo de 1998.
- ↑ Chang, CS, et al. " Optimización bicriterio basada en algoritmo genético para subestaciones de tracción en sistemas ferroviarios de CC ." En Fogel [102], 11-16.
- ↑ Kulik, A.; Shachnai, H. (2010). "No existe un EPTAS para el problema de la mochila bidimensional" (PDF) . Inf. Process. Lett . 110 (16): 707– 712. CiteSeerX 10.1.1.161.5838 . doi : 10.1016/j.ipl.2010.05.031 .
- 1 2 3 Cohen, R. y Grebla, G. 2014. "Planificación OFDMA multidimensional en una red inalámbrica con nodos repetidores" . En Proc. IEEE INFOCOM'14 , 2427–2435.
- ↑ Yan Lan, György Dósa, Xin Han, Chenyang Zhou, Attila Benkő: Mochila 2D: Empaquetamiento de cuadrados , Theoretical Computer Science Vol. 508, pp. 35–40.
- ↑ Chandra Chekuri y Sanjeev Khanna (2005). "Un PTAS para el problema de la mochila múltiple". SIAM Journal on Computing . 35 (3): 713– 728. CiteSeerX 10.1.1.226.3387 . doi : 10.1137/s0097539700382820 .
- ↑ Wu, ZY; Yang, YJ; Bai, FS; Mammadov, M. (2011). "Condiciones de optimalidad global y métodos de optimización para problemas de mochila cuadráticos". J Optim Theory Appl . 151 (2): 241– 259. doi : 10.1007/s10957-011-9885-4 . S2CID 31208118 .
- ↑ Gallo, G.; Hammer, PL; Simeone, B. (1980). "Problemas de la mochila cuadrática". Optimización combinatoria . Estudios de programación matemática. Vol. 12. pp. 132–149 . doi : 10.1007/BFb0120892 . ISBN 978-3-642-00801-6.
- ↑ Witzgall, C. (1975). "Métodos matemáticos de selección de emplazamientos para sistemas de mensajes electrónicos (EMS)". Informe técnico Sti/Recon de la NASA N.º 76. Informe interno del NBS: 18321. Bibcode : 1975STIN...7618321W .
- ↑ Galvez, Waldo; Grandoni, Fabrizio; Ingala, Salvatore; Heydrich, Sandy; Khan, Arindam; Wiese, Andreas (2021). "Aproximación del problema de la mochila geométrica mediante empaquetamientos L" . ACM Trans. Algorithms . 17 (4): 33:1–33:67. arXiv : 1711.07710 . doi : 10.1145/3473713 .
- ↑ Han, Xin; Kawase, Yasushi; Makino, Kazuhisa (11 de enero de 2015). "Algoritmos aleatorios para problemas de mochila en línea" . Theoretical Computer Science . 562 : 395–405 . doi : 10.1016/j.tcs.2014.10.017 . ISSN 0304-3975 .
- ↑ Han, Xin; Kawase, Yasushi; Makino, Kazuhisa (1 de septiembre de 2014). "Problema de la mochila no ponderada en línea con costo de remoción" . Algorithmica . 70 (1): 76–91 . doi : 10.1007/s00453-013-9822-z . ISSN 1432-0541 .
- ↑ Han, Xin; Kawase, Yasushi; Makino, Kazuhisa; Guo, He (26 de junio de 2014). "Problema de la mochila removible en línea bajo una función convexa" . Theoretical Computer Science . Combinatorial Optimization: Theory of algorithms and Complexity. 540–541 : 62–69 . doi : 10.1016/j.tcs.2013.09.013 . ISSN 0304-3975 .
- ↑ Han, Xin; Kawase, Yasushi; Makino, Kazuhisa; Yokomaku, Haruki (22 de septiembre de 2019), Problemas de mochila en línea con un búfer de recursos , arXiv : 1909.10016
Referencias
- Garey, Michael R.; David S. Johnson (1979). Computadoras e intratabilidad: una guía a la teoría de la NP-completitud . WH Freeman. ISBN 978-0-7167-1045-5.A6: MP9, pág. 247.
- Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Problemas con la mochila . Saltador. doi : 10.1007/978-3-540-24777-7 . ISBN 978-3-540-40286-2. MR 2161720 . S2CID 28836720 .
- Martello, Silvano; Toth, Paolo (1990). Problemas de la mochila: algoritmos e implementaciones informáticas . Wiley-Interscience. ISBN 978-0-471-92420-3. MR 1086874 .
Enlaces externos
- Diapositivas de la clase sobre el problema de la mochila
- PYAsUKP: Otro solucionador más para el problema de la mochila ilimitada , con código que aprovecha las relaciones de dominancia en un algoritmo híbrido, pruebas de rendimiento y copias descargables de algunos artículos.
- Página principal de David Pisinger con copias descargables de algunos artículos de la lista de publicaciones (incluido "¿Dónde están los problemas difíciles de la mochila?").
- Soluciones al problema de la mochila en muchos idiomas en Rosetta Code
- Algoritmo de programación dinámica para el problema de la mochila 0/1
- Solucionador del problema de la mochila (en línea)
- Resolviendo 0-1-KNAPSACK con algoritmos genéticos en Ruby. Archivado el 23 de mayo de 2011 en Wayback Machine.
- Códigos para el problema de la mochila cuadrática. Archivado el 14 de febrero de 2015 en Wayback Machine.
- Optimización del empaquetado tridimensional de contenedores
- Solución de programación entera del problema de la mochila en Python con Gekko (software de optimización)
- Criptografía
- Problemas de embalaje
- problemas NP-completos
- Programación dinámica
- Optimización combinatoria
- Problemas débilmente NP-completos
- Algoritmos de tiempo pseudopolinomial