- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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)