- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Knapsack Problem (背包问题)
Knapsack Problem (背包问题);The Knapsack Problem;Fractional Knapsack Problem:
物品可以被任意分割
一般采用贪婪算法(Greedy Approach)
0/1 Knapsack Problem:
物品不可分割
一般采用动态规划法(Dynamic Programming)
参考:《算法设计与分析》王红梅 P150;其他类型背包问题;;;授课内容;贪心法求解 最佳装载 背包问题;;解题思路;核心代码;;;;2-动态规划法求解0/1背包问题;;证明0/1背包问题满足最优性原理。
设(x1, x2, …, xn)是所给0/1背包问题的一个最优解,则( x2, …, xn)是下面一个子问题的最优解:; 0/1背包问题可以看作是决策一个序列(x1, x2, …, xn),对任一变量xi的决策是决定xi=1还是xi=0。在对xi-1决策后,已确定了(x1, …, xi-1),在决策xi时,问题处于下列两种状态之一:
(1)背包容量不足以装入物品i,则xi=0,背包不增加价值;
(2)背包容量可以装入物品i,则xi=1,背包的价值增加了vi。
这两种情况下背包价值的最大者应该是对xi决策后的背包价值。令V(i, j)表示在前i(1≤i≤n)个物品中能够装入容量为j(1≤j≤C)的背包中的物品的最大值,则可以得到如下动态规划函数:
;; 式2.3表明:把前面i个物品装入容量为0的背包和把0个物品装入容量为j的背包,得到的价值均为0。
式2.4的第一个式子表明:如果第i个物品的重量大于背包的容量,则装入前i个物品得到的最大价值和装入前i-1个物品得到的最大价值是相同的,即物品i不能装入背包;第二个式子表明:如果第i个物品的重量小于背包的容量,则会有以下两种情况:
(1)如果把第i个物品装入背包,则背包中物品的价值等于把前i-1个物品装入容量为j-wi的背包中的价值加上第i个物品的价值vi;
(2)如果第i个物品没有装入背包,则背包中物品的价值就等于把前i-1个物品装入容量为j的背包中所取得的价值。显然,取二者中价值较大者作为把前i个物品装入容量为j的背包中的最优解。 ; 根据动态规划函数,用一个(n+1)×(C+1)的二维表V,V[i][j]表示把前i个物品装入容量为j的背包中获得的最大价值。 ;?
;如何确定装入背包的具体物品?
从V(n,C)的值向前推,如果V(n,C)V(n-1,C),表明第n个物品被装入背包,前n-1个物品被装入容量为C-wn??背包中;否则,第n个物品没有被装入背包,前n-1个物品被装入容量为C的背包中。依此类推,直到确定第1个物品是否被装入背包中为止。由此,得到如下函数: ;;核心算法实现:
设n个物品的重量存储在数组w[n]中,价值存储在数组v[n]中,背包容量为C,数组V[n+1][C+1]存放迭代结果,其中V[i][j]表示前i个物品装入容量为j的背包中获得的最大价值,数组x[n]存储装入背包的物品,动态规划法求解0/1背包问题的算法如下: ;遗传算法求解 0/1 背包问题(仅做了解);⑴ 选择算子
⑵ 交叉算子
⑶ 变异算子;●选择算子
——从旧的种群中选择适应度高的染色体,放入匹配集(缓冲
区),为以后染色体交换、变异,产生新的染色体作准备。;具体步骤;染色体的 适应度和所占的比例;染色体编号;●交叉算子;模拟生物在自然界环境变化,引起基因的突变.产生新的染色体,表现出新的性状。
在染色体二进制编码中,1变成0;或0变成1.突变产生染色体的多样性,避免进化中早期成熟,陷入局部极值点,突变的概率很低.;
遗传策法的运算过程
选择(复制):
根据各个个体的适应度,按照一
定的规则或方法,从第t代群体P(t)
中选择出一些优良的个体遗传到下
一代群体P(t+1)中;
交叉:
将群体P(t)内的各个个体随机搭配
成对,对每一对个体,以某个概率
(称为交叉概率)交换它们之间的
部分染色体;
变异:
对群体P(t)中的每一个个体,以某一概率(称为变异概率)改变某
一个或某一些基因座上的基因值为其他基因值。;注意约束条件;;实验讲解——碰撞机器人;输入;锯茏裣冱阱静苕嵊韩康乾孛题估糊茏弼品狐甍珐驶臣袍挈碡莘鼎钞埭晕唯曝巨睚敬;;输出;解题思路;输入样例;输出样例;;;实验安排;
文档评论(0)