第5章 回溯法1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 回溯法1

第5章 回溯法;回溯法;问题的解空间;生成问题状态的基本方法;广度优先的问题状态生成法:在一个扩展结点变成死结点之前,它一直是扩展结点 回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函数的深度优先生成法称为回溯法 ;回溯法的基本思想;子集树与排列树;装载问题;(1)首先将第一艘轮船尽可能装满; (2)将剩余的集装箱装上第二艘轮船。;装载问题;void backtrack (int i) {// 搜索第i层结点 if (i n) // 到达叶结点 { if(cwbestw) {for (j=1;j=n;j++)bestx[j]=x[j];bestw=cw;} return ; } r -= w[i]; if (cw + w[i] = c) // 搜索左子树 { x[i] = 1; cw += w[i]; backtrack(i + 1); cw -= w[i]; } if (cw + r bestw) // 搜索右子树 { x[i] = 0; backtrack(i + 1);} r += w[i]; };0-1背包问题;void knap (int i) {// 搜索第i层结点 if (i n) // 到达叶结点 {if(cpbestp){for (j=1;j=n;j++)bestx[j]=x[j];bestp=cp;} return ;} if (cw + w[i] = c) // 搜索左子树 { x[i] = 1; cw += w[i];cp+=p[i]; backtrack(i + 1); cw -= w[i]; cp-=p[i];} if (Bound(i+1) bestp) // 搜索右子树 { x[i] = 0; backtrack(i + 1); } };批处理作业调度;批处理作业调度; 设G=( V, E )是一个有向图,图中各边的耗费Cij定义为Cij 0。只要当边( i,j )E时,定义为Cij =0,设‖V‖=n 1,图G中的一条周游路线是包括V中的每个结点在内的一条有向回路。一条周游路线的耗费是这条周游路线上的所有边的耗费之和,所谓旅行商问题就是要在图G中找出一条最小耗费的周游路线。 ;void backtrack(int i) { if (i == n) { if (a[x[n - 1]][x[n]] MAX_VALUE a[x[n]][1] MAX_VALUE (bestc == MAX_VALUE || cc+a[x[n - 1]][x[n]]+a[x[n]][1]bestc)) { for (int j = 1; j = n; j++) bestx[j] = x[j]; bestc = cc+a[x[n - 1]][x[n]]+a[x[n]][1]; } } else { for (int j = i; j = n; j++) // 是否可进入x[j]子树? if (a[x[i - 1]][x[j]] MAX_VALUE (bestc == MAX_VALUE || cc+a[x[i - 1]][x[j]]bestc)) {// 搜索子树 swap(x, i, j); cc+=a[x[i - 1]][x[i]]; backtrack(i + 1); cc-=a[x[i - 1]][x[i]]; swap(x, i, j); } };n后问题;解向量:(x1, x2, … , xn) 显约束:xi=1,2, … ,n 隐约束: 1)不同列:xi?xj 2)不处于同一正 反对角线:|i-j|?|xi-xj|;回

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档