Sie sind auf Seite 1von 4

Universidad Católica del Maule.

Facultad de Ciencias de la Ingeniería.

“Algoritmo de la
mochila aplicado
a desarrollo web
con JSON”
Integrantes: Leonardo Bascuñán.

Tomas Ibáñez.

Curso: Análisis de algoritmos(ICI-522).

Profesor: Sergio Hernández.

Fecha entrega: 28/11/2018.


Marco Teórico:

El problema de la mochila es uno de los 21 problemas del informático teórico llamado


Richard Karp. Este problema tiene una formulación bastante sencilla, esta se basa en la
problemática de que una persona tiene una mochila con una determinada capacidad máxima.
Cada objeto o elemento que ingresa a la mochila la persona, tiene un determinado valor y
peso. La persona desea conseguir que la mochila consiga obtener el mayor valor posible con
los objetos dentro de esta, sin superar la capacidad máxima de peso.

A diferencia de su formulación, la solución a este problema es de naturaleza compleja,


por compleja nos referimos a la complejidad computacional. Es interesante recordar la
definición de complejidad computacional:” Un problema se cataloga como inherentemente
difícil si su complejidad requiere de una cantidad significativa de recursos computacionales”.

Por ejemplo, si contásemos con tan solo 4 elementos que ingresar a la mochila, para
conocer cual sería la mejor solución deberíamos tomar en cuenta de que el elemento puede o
no ingresarse a la mochila, por lo tanto, tenemos 2 posibilidades. Con lo que si hacemos 24
=16, por lo que contaríamos con 18 posibilidades, cosa que es entendible. Pero si esta vez
tenemos 18 elementos que podemos ingresar a la mochila, el problema toma una dimensión
de complejidad que comentamos anteriormente esto sería buscar la mejor solución
entre:262144 posibilidades.
Algoritmo de la mochila en Python:

def knapsack(W, wt, val, n):

K = [[0 for x in range(W+1)] for x in range(n+1)]

# Build table K[][] in bottom up manner

for i in range(n+1):

for w in range(W+1):

if i==0 or w==0:

K[i][w] = 0

elif wt[i-1] <= w:

K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w])

else:

K[i][w] = K[i-1][w]

return K

import numpy as np

w=[1,2,3]

v=[60,100,120]

w_max=5

p=np.array(v)/np.array(w)

C=knapsack(w_max,w,v,3)

print C
Explicación: En este código ejemplo del algoritmo de la mochila, se observa que la función
knapsack o mochila, recibirá un peso máximo que será lo que soporte la mochila, la lista que
contiene los pesos de la mochila, los valores o beneficios asociados a cada uno de estos pesos,

y el valor de n(no entiendo bien que es n).

La función de la mochila devolverá una matriz de el peso máximo más uno columnas, por n+1
filas.

Das könnte Ihnen auch gefallen