fbpx
Wikipedia

Problema de la mochila

En algoritmia, el problema de la mochila, comúnmente abreviado por KP (del inglés Knapsack problem) es un problema de optimización combinatoria, es decir, que busca la mejor solución entre un conjunto finito de posibles soluciones a un problema. Modela una situación análoga al llenar una mochila, incapaz de soportar más de un peso determinado, con todo o parte de un conjunto de objetos, cada uno con un peso y valor específicos. Los objetos colocados en la mochila deben maximizar el valor total sin exceder el peso máximo.

Ejemplo del problema de la mochila: dada una mochila con una capacidad de 15 kg que puedo llenar con cajas de distinto peso y valor, ¿qué cajas elijo de modo de maximizar mis ganancias y no exceder los 15 kg de peso permitidos?

Historia

El problema de la mochila es uno de los 21 problemas NP-completos de Richard Karp, establecidos por el informático teórico en un famoso artículo de 1972.[1]​ Ha sido intensamente estudiado desde mediados del siglo XX y se hace referencia a él en el año 1897, en un artículo de George Mathews Ballard.[2]

Si bien la formulación del problema es sencilla, su resolución es más compleja. Algunos algoritmos existentes pueden resolverlo en la práctica para casos de un gran tamaño. Sin embargo, la estructura única del problema, y el hecho de que se presente como un subproblema de otros problemas más generales, lo convierten en un problema frecuente en la investigación de operaciones.

Definición

A continuación se define formalmente el problema.[3]​ Supongamos que tenemos   distintos tipos de ítems, que van del 1 al  . De cada tipo de ítem se tienen   ítems disponibles, donde   es un entero positivo que cumple  .

Cada tipo de ítem i tiene un beneficio asociado dado por vi y un peso (o volumen) wi. Usualmente se asume que el beneficio y el peso no son negativos. Para simplificar la representación, se suele asumir que los ítems están listados en orden creciente según el peso (o volumen).

Por otro lado se tiene una mochila, donde se pueden introducir los ítems, que soporta un peso máximo (o volumen máximo) W.

El problema consiste en meter en la mochila ítems de tal forma que se maximice el valor de los ítems que contiene y siempre que no se supere el peso (o volumen) máximo que puede soportar la misma. La solución al problema vendrá dado por la secuencia de variables x1, x2, ..., xn donde el valor de xi indica cuantas copias se meterán en la mochila del tipo de ítem i.

El problema se puede expresar matemáticamente por medio del siguiente programa lineal:

 

Si   para   se dice que se trata del problema de la mochila 0-1. Si uno o más   es infinito entonces se dice que se trata del problema de la mochila no acotado también llamado a veces problema de la mochila entera. En otro caso se dice que se trata del problema de la mochila acotado

Simplificaciones y generalizaciones

Problema de la mochila simple

Observar que en un problema de la mochila 0-1, si para cada tipo de ítem el beneficio y los pesos son idénticos (vi=wi), entonces el problema quedaría formulado de la siguiente forma

 

Por tanto si existe un vector xi tal que  , entonces esa será una solución al problema. Si existe una solución xi de este tipo, resolver el problema de la mochila realmente es resolver el problema de la suma de subconjuntos. Además si el conjunto de los pesos de los elementos es una secuencia supercreciente, es decir, se verifica que:

 

Entonces se dice que se trata de un problema de la mochila simple o también problema de la mochila tramposa. Este tipo de problemas tiene importantes aplicaciones en el mundo de la criptografía.

Problema de la mochila de múltiple elección

Si en un problema de la mochila 0-1 los ítems están subdivididos en k clases, denotadas por Ni, y exactamente un ítem tienen que ser tomado de cada clase, entonces hablamos del problema de la mochila de múltiple elección.

 

Problema de la mochila múltiple

Si en un problema de la mochila 0-1 tenemos "n" ítems y m mochilas con capacidades Wi entonces tenemos el problema de la mochila múltiple.

Un caso especial del problema de la mochila múltiple es cuando los beneficios son iguales a los pesos y todas las mochilas tienen la misma capacidad. Entonces se le llama problema de la múltiple suma de subconjuntos.

Métodos de resolución

Este problema se ha resuelto tradicionalmente mediante programación lineal entera.

El hecho de que se trate de programación lineal hace referencia a que la función a optimizar y las inecuaciones que constituyen las restricciones han de ser lineales, es decir, han de ser funciones cuyas incógnitas estén elevadas exclusivamente a la unidad.

Existe otra forma de resolver este tipo de problema, a través de los denominados algoritmos voraces. Una aproximación voraz consiste en que cada elemento a considerar se evalúa una única vez, siendo descartado o seleccionado, de tal forma que si es seleccionado forma parte de la solución, y si es descartado, no forma parte de la solución ni volverá a ser considerado para la misma. Con este método no siempre es posible dar una solución a un problema.

Otro sistema para resolver el problema de la mochila es mediante algoritmos genéticos que son métodos de optimización que tratan de hallar   tales que sea máximo.

Algoritmos voraces

a) Aplicación del método:

Partimos de la formulación del problema de la mochila aportada anteriormente:

 

La utilización de un algoritmo voraz consiste en introducir en la mochila según orden decreciente de utilidad (beneficio) los diversos objetos. En una primera etapa, se adicionarán unidades enteras hasta que, por motivo de capacidad, no sea posible seguir introduciendo enteros y haya que añadir la porción que quepa del siguiente objeto.

b) Concepto de solución óptima:

Teorema: si se ordenan los objetos de forma decreciente en cuanto a su relación (utilidad/ponderación = bi/ci), y se introducen en la mochila enteros en este orden mientras quepan, y cuando no quede capacidad para uno entero se añade la porción que aún tenga cabida, el resultado al que se llega es una solución óptima.

Algoritmos genéticos

Consisten en métodos adaptativos de optimización que tratan de hallar (xi,...,xn) tales que [Sumatoria (bi*xi) desde i= 1 hasta n] sea máximo. Pueden usarse para resolver problemas de búsqueda y optimización. Se basan en el proceso genético de los organismos vivos, por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas. Para utilizar un algoritmo genético hacen falta tres elementos:

Descripción de la población de individuos: cada individuo representa una solución factible a un problema dado. A cada individuo se le asigna un valor o puntuación, relacionado con la bondad de dicha solución.
Función de evaluación (llamada función de ajuste): encontrar una expresión matemática que puntúe a cada individuo de forma que nuestro ideal sea un máximo o un mínimo.
Selección o Mecanismos de reproducción: la función de selección de padres más utilizada, es la denominada función de selección proporcional a la función objetivo, en la cual cada individuo tiene una probabilidad de ser seleccionado como padre que es proporcional al valor de su función objetivo, es decir, indica que cada objeto de la mochila tendrá una probabilidad de ser seleccionado que dependerá de la relación que exista entre beneficios y el peso que ocupa.

Referencias

  1. Richard M. Karp (1972). «Reducibility Among Combinatorial Problems». En R. E. Miller y J. W. Thatcher (editores), ed. Complexity of Computer Computations. Nueva York: Plenum. pp. 85-103. 
  2. G.B. Mathews, On the partition of numbers, Proceedings of the London Mathematical Society, 28:486-490, 1897.
  3. Eric Gossett,"Discrete Mathematics with Proof". Segunda edición. John Willey 2009.


  •   Datos: Q864457

problema, mochila, algoritmia, problema, mochila, comúnmente, abreviado, inglés, knapsack, problem, problema, optimización, combinatoria, decir, busca, mejor, solución, entre, conjunto, finito, posibles, soluciones, problema, modela, situación, análoga, llenar. En algoritmia el problema de la mochila comunmente abreviado por KP del ingles Knapsack problem es un problema de optimizacion combinatoria es decir que busca la mejor solucion entre un conjunto finito de posibles soluciones a un problema Modela una situacion analoga al llenar una mochila incapaz de soportar mas de un peso determinado con todo o parte de un conjunto de objetos cada uno con un peso y valor especificos Los objetos colocados en la mochila deben maximizar el valor total sin exceder el peso maximo Ejemplo del problema de la mochila dada una mochila con una capacidad de 15 kg que puedo llenar con cajas de distinto peso y valor que cajas elijo de modo de maximizar mis ganancias y no exceder los 15 kg de peso permitidos Indice 1 Historia 2 Definicion 3 Simplificaciones y generalizaciones 3 1 Problema de la mochila simple 3 2 Problema de la mochila de multiple eleccion 3 3 Problema de la mochila multiple 4 Metodos de resolucion 4 1 Algoritmos voraces 4 2 Algoritmos geneticos 5 ReferenciasHistoria EditarEl problema de la mochila es uno de los 21 problemas NP completos de Richard Karp establecidos por el informatico teorico en un famoso articulo de 1972 1 Ha sido intensamente estudiado desde mediados del siglo XX y se hace referencia a el en el ano 1897 en un articulo de George Mathews Ballard 2 Si bien la formulacion del problema es sencilla su resolucion es mas compleja Algunos algoritmos existentes pueden resolverlo en la practica para casos de un gran tamano Sin embargo la estructura unica del problema y el hecho de que se presente como un subproblema de otros problemas mas generales lo convierten en un problema frecuente en la investigacion de operaciones Definicion EditarA continuacion se define formalmente el problema 3 Supongamos que tenemos n displaystyle n distintos tipos de items que van del 1 al n displaystyle n De cada tipo de item se tienen q i displaystyle q i items disponibles donde q i displaystyle q i es un entero positivo que cumple 1 q i lt displaystyle 1 leq q i lt infty Cada tipo de item i tiene un beneficio asociado dado por vi y un peso o volumen wi Usualmente se asume que el beneficio y el peso no son negativos Para simplificar la representacion se suele asumir que los items estan listados en orden creciente segun el peso o volumen Por otro lado se tiene una mochila donde se pueden introducir los items que soporta un peso maximo o volumen maximo W El problema consiste en meter en la mochila items de tal forma que se maximice el valor de los items que contiene y siempre que no se supere el peso o volumen maximo que puede soportar la misma La solucion al problema vendra dado por la secuencia de variables x1 x2 xn donde el valor de xi indica cuantas copias se meteran en la mochila del tipo de item i El problema se puede expresar matematicamente por medio del siguiente programa lineal maximizar i 1 n v i x i tal que i 1 n w i x i W y 0 x i q i displaystyle begin array rl text maximizar amp sum i 1 n v i x i text tal que amp sum i 1 n w i x i leq W text y amp 0 leq x i leq q i end array Si q i 1 displaystyle q i 1 para i 1 2 n displaystyle i 1 2 n se dice que se trata del problema de la mochila 0 1 Si uno o mas q i displaystyle q i es infinito entonces se dice que se trata del problema de la mochila no acotado tambien llamado a veces problema de la mochila entera En otro caso se dice que se trata del problema de la mochila acotadoSimplificaciones y generalizaciones EditarProblema de la mochila simple Editar Articulo principal Problema de la mochila simple Observar que en un problema de la mochila 0 1 si para cada tipo de item el beneficio y los pesos son identicos vi wi entonces el problema quedaria formulado de la siguiente forma maximizar i 1 n v i x i tal que i 1 n w i x i W y x i 0 1 displaystyle begin array rl text maximizar amp sum i 1 n v i x i text tal que amp sum i 1 n w i x i leq W text y amp x i in 0 1 end array Por tanto si existe un vector xi tal que i 1 n w i x i W displaystyle sum i 1 n w i x i W entonces esa sera una solucion al problema Si existe una solucion xi de este tipo resolver el problema de la mochila realmente es resolver el problema de la suma de subconjuntos Ademas si el conjunto de los pesos de los elementos es una secuencia supercreciente es decir se verifica que w i gt j 1 i 1 w j i displaystyle w i gt sum j 1 i 1 w j quad forall i Entonces se dice que se trata de un problema de la mochila simple o tambien problema de la mochila tramposa Este tipo de problemas tiene importantes aplicaciones en el mundo de la criptografia Problema de la mochila de multiple eleccion Editar Si en un problema de la mochila 0 1 los items estan subdivididos en k clases denotadas por Ni y exactamente un item tienen que ser tomado de cada clase entonces hablamos del problema de la mochila de multiple eleccion maximizar i 1 k j N i v i j x i j tal que i 1 k j N i w i j x i j W j N i x i j 1 para todo 1 i k y x i j 0 1 para todo 1 i k y j N i displaystyle begin array rl text maximizar amp sum i 1 k sum j in N i v ij x ij text tal que amp sum i 1 k sum j in N i w ij x ij leq W amp sum j in N i x ij 1 text para todo 1 leq i leq k text y amp x ij in 0 1 text para todo 1 leq i leq k text y j in N i end array Problema de la mochila multiple Editar Si en un problema de la mochila 0 1 tenemos n items y m mochilas con capacidades Wi entonces tenemos el problema de la mochila multiple Un caso especial del problema de la mochila multiple es cuando los beneficios son iguales a los pesos y todas las mochilas tienen la misma capacidad Entonces se le llama problema de la multiple suma de subconjuntos Metodos de resolucion Editar Este articulo o seccion sobre matematicas necesita ser wikificado por favor editalo para que cumpla con las convenciones de estilo Este aviso fue puesto el 23 de enero de 2012 Este problema se ha resuelto tradicionalmente mediante programacion lineal entera El hecho de que se trate de programacion lineal hace referencia a que la funcion a optimizar y las inecuaciones que constituyen las restricciones han de ser lineales es decir han de ser funciones cuyas incognitas esten elevadas exclusivamente a la unidad Existe otra forma de resolver este tipo de problema a traves de los denominados algoritmos voraces Una aproximacion voraz consiste en que cada elemento a considerar se evalua una unica vez siendo descartado o seleccionado de tal forma que si es seleccionado forma parte de la solucion y si es descartado no forma parte de la solucion ni volvera a ser considerado para la misma Con este metodo no siempre es posible dar una solucion a un problema Otro sistema para resolver el problema de la mochila es mediante algoritmos geneticos que son metodos de optimizacion que tratan de hallar x i x n displaystyle x i ldots x n tales que sea maximo Algoritmos voraces Editar a Aplicacion del metodo Partimos de la formulacion del problema de la mochila aportada anteriormente Maximizar i 1 n b i x i sujeto a i 1 n c i x i P x i 0 1 con i 1 n displaystyle begin array rl text Maximizar amp sum i 1 n b i x i text sujeto a amp amp sum i 1 n c i x i leq P amp x i in 0 1 text con i 1 ldots n end array La utilizacion de un algoritmo voraz consiste en introducir en la mochila segun orden decreciente de utilidad beneficio los diversos objetos En una primera etapa se adicionaran unidades enteras hasta que por motivo de capacidad no sea posible seguir introduciendo enteros y haya que anadir la porcion que quepa del siguiente objeto b Concepto de solucion optima Teorema si se ordenan los objetos de forma decreciente en cuanto a su relacion utilidad ponderacion bi ci y se introducen en la mochila enteros en este orden mientras quepan y cuando no quede capacidad para uno entero se anade la porcion que aun tenga cabida el resultado al que se llega es una solucion optima Algoritmos geneticos Editar Consisten en metodos adaptativos de optimizacion que tratan de hallar xi xn tales que Sumatoria bi xi desde i 1 hasta n sea maximo Pueden usarse para resolver problemas de busqueda y optimizacion Se basan en el proceso genetico de los organismos vivos por imitacion de este proceso los Algoritmos Geneticos son capaces de ir creando soluciones para problemas del mundo real La evolucion de dichas soluciones hacia valores optimos del problema depende en buena medida de una adecuada codificacion de las mismas Para utilizar un algoritmo genetico hacen falta tres elementos Descripcion de la poblacion de individuos cada individuo representa una solucion factible a un problema dado A cada individuo se le asigna un valor o puntuacion relacionado con la bondad de dicha solucion Funcion de evaluacion llamada funcion de ajuste encontrar una expresion matematica que puntue a cada individuo de forma que nuestro ideal sea un maximo o un minimo Seleccion o Mecanismos de reproduccion la funcion de seleccion de padres mas utilizada es la denominada funcion de seleccion proporcional a la funcion objetivo en la cual cada individuo tiene una probabilidad de ser seleccionado como padre que es proporcional al valor de su funcion objetivo es decir indica que cada objeto de la mochila tendra una probabilidad de ser seleccionado que dependera de la relacion que exista entre beneficios y el peso que ocupa Referencias Editar Richard M Karp 1972 Reducibility Among Combinatorial Problems En R E Miller y J W Thatcher editores ed Complexity of Computer Computations Nueva York Plenum pp 85 103 G B Mathews On the partition of numbers Proceedings of the London Mathematical Society 28 486 490 1897 Eric Gossett Discrete Mathematics with Proof Segunda edicion John Willey 2009 Datos Q864457 Obtenido de https es wikipedia org w index php title Problema de la mochila amp oldid 132509884, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos