Algorithm 有界背包问题的建立。想要:所有可能包装的清单
我不想优化任何东西,而是想列出背包中所有可能的——包括“不完整的”——包装。当然,我可以循环遍历对象集的所有子集,并选择满足权重约束的子集(可以通过在要查看的子集的大小上设置一个上限来改进),但我真的希望有更高效的方法Algorithm 有界背包问题的建立。想要:所有可能包装的清单,algorithm,subset,knapsack-problem,Algorithm,Subset,Knapsack Problem,我不想优化任何东西,而是想列出背包中所有可能的——包括“不完整的”——包装。当然,我可以循环遍历对象集的所有子集,并选择满足权重约束的子集(可以通过在要查看的子集的大小上设置一个上限来改进),但我真的希望有更高效的方法 谢谢。首先按重量对物品进行排序。然后递归地打包背包。如果尚未考虑的最小重量物体不合适,或者我们没有剩余物体,则将当前背包添加到我们的列表中并返回,否则将当前背包添加到列表中适合放入的每个物体的列表中,并尝试用比我们上次打包的物体更重的物体打包背包的其余部分 如果我们可以包装一个给
谢谢。首先按重量对物品进行排序。然后递归地打包背包。如果尚未考虑的最小重量物体不合适,或者我们没有剩余物体,则将当前背包添加到我们的列表中并返回,否则将当前背包添加到列表中适合放入的每个物体的列表中,并尝试用比我们上次打包的物体更重的物体打包背包的其余部分 如果我们可以包装一个给定类型的多个项目,则将小于替换为小于或等于 如果我们有多个相同重量的对象,我们需要先按重量排序,然后按任意顺序排序,然后使用它
PackKnapsack(knapsack, objects)
add knapsack to list
if objects is empty return
if smallest object does not fit return
for each object in order from smallest to largest
if currentobject does not fit
break
PackKnapsack(knapsack + currentObject, objects heavier than current object)