算法设计与分析 第五章ppt.pptx

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

;;3;4;5; 例如 0-1背包问题 设有n个物体和一个背包,物体i的重量为wi价值为vi背包的载荷为C, 若将物体i(1? i ?n,)装入背包,则有价值为vi .目标是找到一个方案,使得能放入背包的物体总价值最高。;7;8;9;10;11;12;13;14;15;16;假设现在有一列数a[0],a[1], ...a[n-1] ①如果一个问题的解的长度不是固定的,并且解和元素顺序无关,即可以从中选择0个或多个,那么解空间的个数将是为2n指数级,可以用子集树来表示所有的解 ②如果解空间是由n个元素的排列形成,也就是说n个元素的每一个排列都是解空间中的一个元素,那么最后解空间的组织形式是排列树;遍历子集树需O(2n)计算时间 void backtrack (int t) { if (tn) output(x); else for (int i=0;i=1;i++) { x[t]=i; if (constraint(t)bound(t)) backtrack(t+1); } };19;算法设计与分析 回溯法 装载问题;21;算法设计与分析 回溯法 ;算法设计与分析 回溯法 ;算法设计与分析 回溯法 ;25;26;27;算法设计与分析 回溯法 ;;30;31;;算法设计与分析 回溯法 ;34;算法设计与分析 回溯法 作业调度;36;37;38;39;40;41;42;43;44;45;46;47;48;算法设计与分析 回溯法 最大团问题;void clique::Backtrack(int i) { if (in) //找到更大团,更新 { for (int j=1; j=n;j++) bestx[j] = x[j]; bestn = cn; return; } //检查顶点i是否与当前团相连 int OK = 1; //满足加入团的条件 for(int j =1; j =i ; j++) if (x[j]a[i][j]==0) //i不与j相连,剪左枝 { OK = 0; break; } if (OK) //向左枝递归 { x[i] = 1; //把i加入团 cn ++; Backtrack(i+1); x[i]=0; cn -- ; } //回溯到i,为进入右子树做准备 if (cn+n- ibestn) //剪右枝条件,否则向右枝递归 { X[i]=0;Backtrack(i + 1);} };算法设计与分析 回溯法 着色问题;52;a).将G的结点按照度数递减的次序排列. b).用第一种颜色对第一个结点着色,并按照结点排列的次序对与前面着色点不邻接的每一点着以相同颜色. c).用第二种颜???对尚未着色的点重复步骤b).用第三种颜色继续这种作法, 直到所有点着色完为止. ;算法设计与分析 回溯法 着色问题;算法设计与分析回溯法 着色问题 ;56;57; voidColor backtrack(int t) { if (tn) { sum++; for(int i=1; i=n; i++) cout x[i] ‘’; cout endl ; } else for ( int i=1; i=m; i++) { x[t]=i; if (Ok(t)) Backtrack( t+1); } };5.9 旅行售货员问题;templateclass T T AdjacencyWDigraphT::TSP(int v[]) { /* 用回溯算法解决TSP,最优路径存入v [ 1 : n ]*/ //初始化 x = new int [n+1]; // x 是排列,定义解空间 for (int i = 1; i = n; i++) x[i]

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档