Skip to content

Instantly share code, notes, and snippets.

@lol97
Last active April 17, 2018 19:35
Show Gist options
  • Save lol97/896784b8fd9159b69e86652f2c34b8e6 to your computer and use it in GitHub Desktop.
Save lol97/896784b8fd9159b69e86652f2c34b8e6 to your computer and use it in GitHub Desktop.
Greedy Algorithm Knapsack Problem
from operator import itemgetter, attrgetter
w = [3,4,1,7,6,8,9]
p = [4,5,2,5,5,8,11]
item = [[3,4],[4,5],[1,2],[7,5],[6,5],[8,8],[9,11]]
i=0
while i<len(item):
hasil = item[i][1]/item[i][0]
item[i].append(hasil)
i += 1
data = sorted(item,key=itemgetter(2), reverse = True)
def knapsack(data,cap,flag):
total=0
tres = ""
if(flag==0):
dataS = sorted(data,key=itemgetter(flag), reverse = True)
tres="bobot prioritas : "
elif(flag==1):
dataS = sorted(data,key=itemgetter(flag), reverse = True)
tres="keuntungan prioritas : "
elif(flag ==2):
dataS = sorted(data,key=itemgetter(flag), reverse = True)
tres="p prioritas : "
else:
return "Error"
j=0
hasil=0
#print("sini")
cek=0
weight=0
while(j<len(dataS)):
if(cek+dataS[j][0]<=cap):
hasil=hasil+dataS[j][1]
weight=weight+dataS[j][0]
print(dataS[j][0])
cek=weight
j+=1;
#print("here")
return("Optimal dalam "+str(tres)+str(hasil))
print(knapsack(item,20,0))
print(knapsack(item,20,1))
print(knapsack(item,20,2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment