Вы находитесь на странице: 1из 1

El problema de la mochila es uno de los21 problemas NPcompletos de Richard Karp, establecidos por el informtico Terico en un famoso artculo de 1972.

Ha sido intensamente estudiado desde mediados del siglo XX y se hace referencia al en el ao 1897, en un artculo de George Mathews Ballard. Algoritmos voraces a) Aplicacin del mtodo: Partimos de la formulacin del problema de la mochila aportada anteriormente: Maximizar [Sumatoria (bi*xi) desde i= 1 hasta n] sujeto a: xi {0,1} con i =1,..., n [Sumatoria (ci*xi) desde i=1 hasta n] < P La utilizacin de un algoritmo voraz consiste en introducir en la mochila segn orden decreciente de utilidad (beneficio) los diversos objetos. En una primera etapa, se adicionarn unidades enteras hasta que, por motivo de capacidad, no sea posible seguir introduciendo enteros y haya que aadir la porcin que quepa del siguiente objeto. b) Concepto de solucin ptima: Teorema: si se ordenan los objetos de forma de decreciente en cuanto a su relacin (utilidad/ponderacin = bi/ci) y se introducen en la mochila enteros en este orden mientras quepan y cuando no quede capacidad para uno entero se aade la porcin que an tenga cabida el resultado al que se llega es una solucin ptima. Algoritmos genticos Consisten en mtodos adaptativos de optimizacin que tratan de hallar (xi,...,xn) tales que [Sumatoria (bi*xi) desde i= 1 hasta n] sea mximo. Pueden usarse para resolver problemas de bsqueda y optimizacin. Se basan en el proceso gentico de los organismos vivos, por imitacin de este proceso, los Algoritmos Genticos son capaces de ir creando soluciones para problemas del mundo real. La evolucin de dichas soluciones hacia valores ptimos del problema depende en buena medida de una adecuada codificacin de las mismas. Para utilizar un algoritmo gentico hacen falta tres elementos: Descripcin de la poblacin de individuos : cada individuo representa una solucin factible a un problema dado. A cada individuo se le asigna un valor puntuacin, relacionado con la bondad de dicha solucin. Funcin de evaluacin (llamada funcin de ajuste): encontrar una expresin matemtica que punte a cada individuo de forma que nuestro ideal sea un mximo o un mnimo. Seleccin o Mecanismos de reproduccin: la funcin de seleccin de padres ms utilizada, es la denominada funcin de seleccin proporcional a la funcin objetivo, en la cual cada individuo tiene una probabilidad de ser seleccionado como padre que es proporcional al valor de su funcin objetivo, es decir, indica que cada objeto de la mochila tendr una probabilidad de ser seleccionado que depender de la relacin que exista entre beneficios y el peso que ocupa. Durante un robo, el ladrn encuentra un botn ms cuantioso de lo esperado y tiene que elegir qu llevarse. Su saco puede transportar como mximo W kilos. En el botn hay n objetos que pesan w1,, wn kilos y valen v1,, vn euros. Qu objetos debe elegir para llevarse el mximo valor sin que se rompa el saco?

Este podra ser un enunciado habitual del conocido problema de la mochila. Este problema surge con mucha frecuencia en el mbito de la informtica: simplemente sustituye peso por tiempo de CPU y mochila de capacidad mxima W por hay disponibles W unidades de tiempo de CPU; o de manera similar tiempo de CPU por ancho de banda. Este problema es NP-completo y, al igual que para el problema de la suma de subconjuntos mencionado en una entrada anterior, puede encontrarse un algoritmo pseudo-polinmico para resolverlo. Ms concretamente, vamos a disear un algoritmo que resuelve el problema en tiempo O(nW). Uno de los puntos clave para disear un algoritmo de programacin dinmica consiste en encontrar los subproblemas en que puede descomponerse el problema original. En este caso, podramos optar por dos posibilidades: a) considerar mochilas de menos capacidad que W; b) considerar menos objetos que n. Tomemos la primera opcin y definamos la funcin K(w) como: K(w) = mximo valor obtenible con una capacidad de w. Veamos cmo puede expresarse esta funcin en trminos de algunos subproblemas. Si la solucin ptima de K(w) incluye el objeto i, entonces la eliminacin del objeto i nos proporcionar la solucin ptima de K(w-wi). Dicho de otra manera, K(w) simplemente es K(w-wi)+vi para algn i. Como no sabemos para qu i, tenemos que probar todas las posibilidades, es decir: Y con esto ya casi lo tenemos, slo falta escribir las cinco lneas del algoritmo: K[0]=0; para w=1 hasta W hacer K[w]=max{K[w-wi]+vi | wi<=w } fpara; devuelve K[W] Este sencillo algoritmo rellena un vector de longitud W+1. Como rellenar cada posicin puede costar O(n) unidades de tiempo, el tiempo total de ejecucin esO(nW). Funcin a maximizar: Tal y como se expresa en la definicin, el objetivo de este problema es seleccionar aquellos objetos que introducidos en la mochila nos proporcionan una mayor utilidad. En otras palabras, lo que debemos hacer es maximizar la utilidad de nuestra mochila. Si redefinimos el problema introduciendo los elementos que mencionamos en las lneas precedentes llegaremos a la siguiente formulacin: El problema de la mochila consiste en llenar una mochila con n objetos. Cada objeto i tiene un peso determinado ci siempre positivo y una utilidad o valor asociado, tambin positivo, bi. Se ha de considerar adems que la mochila tiene una capacidad limitada P, por tanto, se han de escoger aquellos objetos xi que maximicen la utilidad de quien llena la mochila sin exceder su capacidad. Ahora procederemos a formular el problema de la mochila: Nota: pueden existir otras restricciones tcnicas que nada tengan que ver con las anteriormente citadas que seran comunes a cualquier problema de Programacin Matemtica.

Вам также может понравиться