算法设计与分析第09周_回溯法3ppt培训课件

上传人:aa****6 文档编号:52442223 上传时间:2018-08-21 格式:PPT 页数:27 大小:192KB
返回 下载 相关 举报
算法设计与分析第09周_回溯法3ppt培训课件_第1页
第1页 / 共27页
算法设计与分析第09周_回溯法3ppt培训课件_第2页
第2页 / 共27页
算法设计与分析第09周_回溯法3ppt培训课件_第3页
第3页 / 共27页
算法设计与分析第09周_回溯法3ppt培训课件_第4页
第4页 / 共27页
算法设计与分析第09周_回溯法3ppt培训课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《算法设计与分析第09周_回溯法3ppt培训课件》由会员分享,可在线阅读,更多相关《算法设计与分析第09周_回溯法3ppt培训课件(27页珍藏版)》请在金锄头文库上搜索。

1、北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除第5章 回溯法(3)北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方

2、案大豆玉米田杂草难治杂草防除5.10 圆排列问题v1问题描述v给定n个大小不等的圆c0,c1,cn-1,半径分别为r0,r1,rn-1 。现要将这n个圆排进一个矩形框中,且要求各圆与矩形 框的底边相切。圆排列问题要求从n个圆的所有排列中找 出有最小长度的圆排列。例如,当n=3,且所给的3个圆的 半径分别为1,1,2时,这3个圆的最小长度的圆排列如图 所示。其最小长度为 。北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物

3、在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v2算法设计v要从n个圆的所有排列中找到有最小长度的圆排列,解空 间显然是一个排序树。设开始时a=r0,r1,rn-1是所给的 n个圆的半径,则相应的排序树由于a0n-1排列构成。 算法约定在第一个圆的圆心横坐标为0。vclass Circlevv friend double CirclePerm(int, double *);vprivate:v double Center(int t); /计算当前所选择的圆在当前圆排 列中心的横坐标北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重

4、病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v void Compute(); /计算当前圆排列的长度v void Backtrack(int t); /回溯函数v double min; /当前最优值v double *x; /xt表示排在第t个位置的圆的圆心横坐标v double *r; /当前圆排列v int n; /待排列圆的个数v;vdouble Circle:Center(int t) /计算当前所选择圆

5、的圆心横 坐标vv double temp, valuex; int j;北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v temp = 0.0;v /*圆t可能和前面任意一个圆相切,需要把各种情况的取 值都取出来,并记录最大值*/v for (j=0; jtemp) temp = valuex;v v return temp;vvvoid

6、 Circle:Compute() /计算当前圆排列的长度v北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v double low, high; int i;v low = high = 0;v /*考虑到前面横坐标是以第一个圆心为0起点的,所以 长度就分成两部分,0左侧的长度为low,0右侧的长度为 high*/v for (i=0; i

7、 high) high = xi+ri;v v if (high-low =n) Compute();v elsev v for (j = t; j 0且nowjtotalj时,Nj在插槽i和i+1之间有连线 。插槽i和i+1间的线密度可利用该测试方法计算出来。在 插槽k和k+1(0ki)间的线密度的最大值给出了局部排列的 密度。 北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣

8、传片创意方案大豆玉米田杂草难治杂草防除vclass Boardvv friend ArrangeBoards(int*, int, int, int );vprivate:v void Backtrack(int i, int cd);v int *x; /到达当前节点的路径v int *bestx; /目前的最优排列v int *total; /totalj为连接块j的电路板的数目v int *now; /nowj为在含插槽j的部分排列中的板的数目v int bestd; /bestx的密度v int n, /板的数目北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物

9、在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v int m, /连接块的数目v int *B; /板的二维数组v;vvoid Board: Backtrack (int i, int cd) / 按回溯算法搜索排 列树vv int j,k; int ld;v if (i = n-1)v v for (j = 0; j 0 v 北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童

10、应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v /更新ld为局部排列的总密度v if (cd ld) ld = cd;v /仅当子树中包含一个更优的排列时,搜索该子树v if (ld = n) /如果搜索的子集树到达叶子结点v v /*若求出的最大连续邮资区间的上界r大于已找到的最 优解,则更新最优值和最优解*/v if(r maxvalue)v v maxvalue = r;v for(j=0; jn; j+) best

11、xj = xj;v v return;v v z = new int maxl+1; 北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除v /若搜索的子集树还没到达叶结点,将y的值暂存入zv for(k=1; k=maxl; k+) zk = yk;v /*下标为i的邮票的面值xi的取值范围是xi-1+1,r+1, 对每一种可能的值j循环*/v

12、 for(j=xi-1+1; j=r+1; j+)v v xi = j; /尝试下标为i的邮票的面值xi为j的情况v Backtrack(i+1, r+1); /递归回溯解空间树v for(k=1; k=maxl; k+) yk = zk; /恢复原先y的值v v delete z;v北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除北京地铁矿山法区间隧道结构设计方法研究-石家庄铁道大学常用血管活性药物药物在危重病儿童应用的护理进展春光集团企业宣传片创意方案大豆玉米田杂草难治杂草防除vint

13、MaxStamp(int n, int m, int bestx)vv Stamp X; int maxint = 32767; int maxl=1500; int i;v X.n = n; X.m = m; X.maxvalue = 0;v X.maxint = maxint; X.maxl = maxl; X.bestx = bestx;v X.x = new int n; X.y = new int maxl+1;v for(i=0; in; i+) X.xi = 0;v for(i=1; i=maxl; i+) X.yi=maxint;v X.x0 = 1; X.y0 = 0;v X.Backtrack(1,1);v delete X.x; delete X.y; return X.maxvalue;v

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号