item:
value
weight
// O(2^n) time
knapsack(items, maxweight):
maxway = new way()
maxcombine(items, maxweight, maxway, new way(), start: 0)
return maxway
maxcombine(items, maxweight, maxway, way, start):
if start > 0:
if way.weight > maxweight:
return
if way.value > maxway.value:
maxway.clear()
maxway.add(item for item in way)
if start == items.length():
return
for i = start, i < items.length(), i++:
way.add(items[i])
combine(items, maxweight, maxway, way, i+1)
way.removelast()
way:
weight = 0
value = 0
list items = new
value:
return value
weight:
return weight
add(item):
items.add(item)
weight += item.weight
value += item.value
removelast():
item = items.removelast()
weight -= item.weight
value -= item.value
Friday, July 29, 2016
knapsack problem
Item has value and weight. Maximize value for given items and max weight.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment