经典的背包问题有两种:
1. 01背包问题-->01背包-动态规划_KING素清风的博客-CSDN博客
【01背包问题这里就不详细介绍了,感兴趣的可以看我的另一篇博客】
2.部分背包问题-->有一个背包,容量是C,有若干个物品,价值各不相同,
重量也各不相同。接下来请你选择一部分物品装入背包,
要保证不超过背包的容量的前提下,使背包中物体的总价值最大。
允许选择一件物品的一部分。【与01背包的不同之处】
2.1 贪心算法:每次都做出对于目前情况最好的选择,注意这里说的使对于目前情况。
也就是说寻求问题对于决策时刻的局部最有解。而不是对于整个问题。
所以贪心算法往往只能得到最优解的近似解,对于有些问题使用贪心算 法就不太合适了。
贪心:哈哈,喜欢占小便宜。笑死
贪心详解:贪心法通常一自顶而下的方式进行,分阶段工作,以迭代的作出相继的贪心选择。每做一次贪心选择就将所求问题简化为规模更小的子问题。在每一个阶段总是选择认为当前最好的方案,然后从小的方案推广到大的方案解决问题。
解题步骤:
循环求解--->求出可行解的一个解元素-->由所有解元素组合成问题的一个可行解
问题模拟:
物品1-->价值:9 重量:4
物品2-->价值:3 重量:6
物品3-->价值:1 重量:3
物品4-->价值:6 重量:2
物品5-->价值:5 重量:5
假设背包的容量为:10
一:计算性价比
物品1:2.55
物品2:0.5
物品3:0.33
物品4:3
物品5:1
二:将性价比最高的 物品 4 放入背包
C = 10 - 2 = 8
v = 0 + 6 = 6
三:将物品1放入背包
C = 8 - 4 = 4
V = 6 + 9 = 15
四:将物品5的部分放入背包中
4 = 5x -- > x = 0.8
C = 4 - 5*0.8 = 0
V = 15+5*0.8 = 19