problema de la mochila
TRANSCRIPT
1
UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESTUDIANTES DE INGENIERIA INFORMATICA
MONOGRAFIA
PROBLEMA DE LA MOCHILA EN PROGRAMACION LOGICA
AUTORES:
QUISPE MORENOS JULISSA VANESSA
RODRIGUEZ RODRIGUEZ EVELIN LEYDY
RODRIGUEZ SANDOVAL LOURDES CAROLINA
SALDAÑA RAMOS EDINSON AUGUSTO
TRUJILLO-PERU
2014
2
INDICE
DEDICATORIA……………………………………………………………………. 3
INTRODUCCION ………………………………………………………………. 4
1. MARCO TEORICO
1.1. CAPITULO I : …………………………………………………………. 5
1.1.1. HISTORIA DEL PROBLEMA DE LA MOCHILA
1.1.2 DEFINICION PROBLEMA DE LA MOCHILA
1.2. CAPITULO II …………………………………………………………… 6
1.2.1 CASOS EN LOS QUE SE PRESENTA EL PROBLEMA DE LA MOCHILA
1.2.2 METODOS DE RESOLUCION
1.3. CAPITULO III …………………………………………………………… 9
1.3.1 PLANTEAMIENTO DEL PROBLEMA DE LA MOCHILA
1.3.2 PSEUDOCODIGO
1.4. CAPITULO IV ………………………………………………………….. 11
1.4.1 APLICACIONES A LA SOCIEDAD
1.4.2 CODIGO EN PROLOG
CONCLUSIONES……………………………………………………………….. 12
ANEXOS………………………………………………………………………….. 13
BIBLIOGRAFIAS……………………………………………………………….. 14
3
A todos los estudiantes de ciencia
y tecnología, ya que gracias a la
investigación y esfuerzo que
damos, lograremos el progreso y
desarrollo de la humanidad.
Además también a nuestro
profesor Arturo Díaz Pulido de
programación lógica por la guía y
la orientación prestado para así
lograr el objetivo de este trabajo.
4
INTRODUCCION
El presente trabajo está diseñado de forma práctica y sencilla para entender
el problema de la mochila en programación lógica, haciendo uso de los
conceptos, uso, el desarrollo a través de ejemplos y la importancia dando
una breve descripción de cada punto planteado.
El problema de la mochila recoge una situación que se presenta con cierta
frecuencia en los ambos económico e industrial, donde la mochila suele
representar la restricción presupuestaria (cantidad máxima de recursos
económicos de los que se dispone) y donde la utilidad de los objetos
seleccionados se equipara a un beneficio económico por adquirir o llevar a
cabo ciertas acciones.
Al mismo tiempo el tema específico sobre la mochila para esta monografía
permite conocer y saber la solución usando reglas y hechos además de sus
aplicaciones.
5
MARCO TEORICO
CAPITULO I
HISTORIA PROBLEMA DE LA MOCHILA :
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.
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.
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.
DEFINICION PROBLEMA DE LA MOCHILA:
El problema de la mochila, comúnmente abreviado por KP (del inglés Knapsack
problem) es un problema de optimización combinatoria.
Busca la mejor solución entre un conjunto 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.
6
CAPITULO II
CASOS EN LOS QUE SE PRESENTA EL PROBLEMA DE LA MOCHILA:
a) Problema de la mochila simple:
Llamado problema de la mochila supercreciente.
Es un tipo de problema de la mochila (problema NP-completo) al que le aplican
una serie de condiciones que hacen que pueda ser planteado como un problema de
la suma de subconjuntos (problema NP-completo) .
Si tiene solución, esta será única.
Observar que en un problema de la mochilla 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:
Se verifica:
Resolución:
La solución es muy fácil debido a que la secuencia S es una secuencia
supercreciente:
Se recorren los elementos de la mochila de mayor a menor comprobando si dicho
valor es menor que T.
Si es mayor, ese valor no estará en la suma y por tanto en la posición
correspondiente del vector solución xi habrá un 0.
7
En caso contrario tendrá un 1 y se continuará la resolución con los restantes
elementos de la mochila para el problema T-Sj.Para este tipo de problemas, en el
caso de que exista la solución, esta será única.
Aplicación:
A la criptografía
b) 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
c) Problema de la mochila múltiple:
Si en un problema de la mochila 0-1 tenemos n ítems y m mochilas con
capacidades Wi .
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.
Se le llama problema de la múltiple suma de subconjuntos.
8
Métodos de resolución
Algoritmos voraces:
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.
Concepto de solución óptima:
Teorema:
si se ordenan los objetos de forma de 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.
Algoritmo goloso:
Mientras no se haya excedido el peso de la mochila, seguir agregando a la mochila
i..
- ….mayor beneficio vi.
- ….tenga menor peso wi.
- ….tenga mayor rentabilidad vi/wi.
9
TIPO DE BUSQUEDA:
También realiza una búsqueda con retroceso (Backtracking)
Esta técnica es también llamada búsqueda con vuelta atrás, el termino se utiliza
para la búsqueda primero en profundidad que elige valores para ua variable a la
vez(solo genera un sucesor a la vez) y vueeve atrás cuando una variable no tiene
ningún valor legal para asignarse.
La idea es encontrar la mejor combinación en un momento determinado, por eso
se dice que este tipo de algoritmo es una búsqueda en profundidad. Durante la
búsqueda, si se encuentra una alternativa incorrecta, la búsqueda retrocede hasta
el paso anterior y toma la siguiente alternativa. Cuando se han terminado las
posibilidades, se vuelve a la elección anterior y se toma la siguiente opción. Si no
hay más alternativas la búsqueda falla. De esta manera, se crea un árbol implícito,
el en que cada nodo es un estado de la solución.
10
CAPITULO III
PLANTEAMIENTO DEL PROBLEMA DE LA MOCHILA:
En esta imagen se tiene una mochila con una capacidad de 15 kg que se puede
llenar con cajas de distinto peso y valor, el problema planteado seria que cajas
elegir de modo de maximizar las ganancias y no exceder a 15 kg del peso
permitido.
Matemáticamente aquí se muestra como se resuelve este problema de
la mochila:
n objetos: i= 1..n {
Problema: cargar una mochila de capacidad W, maximizando el valor de su carga.
Version I : los objetos se pueden fraccionar = fracción xi, 0≤ Xi ≤ 1
→ el objeto i contribuye
en ,al peso de la carga, limitado por w.
en , al valor de la carga , que se quiere maximizar.
→
Hipótesis ∑ , sino la solución es trivial.
→en optimo , ∑ .
¿Mejor objeto restante?
11
→ Ejemplar de problema:
n= 5, w =100
Selección:
1. ¿Objeto más valioso? ↔ Vi max
2. ¿Objeto más ligero? ↔ wi min
3. ¿Objeto más rentable? ↔ vi/wi max
1 2 3 4 5
vi 20 30 66 40 60
wi 10 20 33 40 50
Vi/wi 2.0 1.5 2.2 1.0 1.2 Objeto (∑ )
Xi(vi max) 0 0 1 0.5 1 146
Xi( wi min) 1 1 1 1 0 156
Xi(vi/wi max) 1 1 1 0 0.8 164
PSEUDOCODIGO:
función Mochila 1( w[ 1..n], v[1..n] ,w) : objetos[1..n]
para i :=1 hasta n hacer
x[i] := 0 ; { la solución se construye en x}
peso :=0;
{bucle voraz:}
mientras peso <= w hacer
i : =el mejor objeto restante; {1}
si peso+w[i] <= w entonces
x[i] := 1;
peso : = peso+w[i]
sino
x[i] := (w-peso)/w[i];
peso := w;
devolver x
fin función
1 2 3 4 5
Vi 20 30 66 40 60
wi 10 20 30 40 50 ∑
12
CAPITULO IV APLICACIONES A LA SOCIEDAD:
En la vida real, se utiliza para modelar diferentes situaciones:
en los sistemas de apoyo a las fianzas: para encontrar el mejor equilibrio
entre el capital y rendimiento financiero.
en la carga del barco o avión: todo el equipaje debe ser llevado, sin ser
sobrecargado.
en el corte de materiales: para minimizar las caídas.
El problema de la mochila siempre se explica mejor por medio de un ejemplo.
Supongan que son un ladrón que acaba de entrar a una bóveda, para esto ustedes
solo llevan consigo una mochila que tiene una capacidad limitada, en este caso
de c cantidad de kilos. Ahora ante sus ojos se encuentran con n objetos cada uno
con un valor v y un peso p.Lamentablemente usted no puede llevar todos los
objetos así que debe de escoger aquella combinación de objetos tal que la suma de
sus valores sea máxima y la suma de sus pesos no rebase la capacidad de la
mochila.
En robótica, permite resolver problemas de fabricación para minimizar el número
de desplazamientos para conseguir realizar un número determinado de
perforaciones en una plancha o en un circuito impreso.
13
CONCLUSIONES
El problema de la mochila se puede dar solución mediantes algoritmos
voraces y algoritmos.
La implementación se puede desarrollar en distintos lenguajes de
programación como en este caso hemos usado para hallar la solución
programación lógica mediante hechos y reglas.
Para lograr la optimización, aunque este problema suele representar
restricciones presupuestarias, los objetos que son seleccionados deben
equiparse a un beneficio económico para llevar a cabo ciertas acciones
14
ANEXOS
15
Apéndice A
Fuente página de google:
http://es.wikibooks.org/wiki/Programaci%C3%B3n_din%C3%A1mica/Problema
_de_la_mochila
Apéndice B
http://www.forosdelweb.com/f130/aporte-problema-mochila-963496/
http://www.todoexpertos.com/categorias/ciencias-
eingenieria/matematicas/respuestas/418995/el-problema-de-la-mochila
16
BIBLIOGRAFIA
Richard M. Karp (1972). «Reducibility Among Combinatorial Problems». En R. E.
Miller y J. W. Thatcher (editores). Complexity of Computer Computations. Nueva
York: Plenum. pp. 85–103.
Volver arriba ↑ G.B. Mathews, On the partition of numbers, Proceedings of the
London Mathematical Society, 28:486-490, 1897.
Volver arriba ↑ Eric Gossett,"Discrete Mathematics with Proof". Segunda edición.
John Willey 2009.
http://es.wikipedia.org/wiki/Problema_de_la_mochila
Jorge Ramió Aguirre,"Aplicaciones criptográficas: libro guía de la asignatura
seguridad informática". Universidad Politécnica, Escuela Universitaria de
Informática. Enero 1998.