算法分析与设计_复习提纲.ppt

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

算法分析与设计;第1章 绪论;三种渐近符号的含义;渐近符号表示算法时间复杂度;用扩展递归技术分析算法时间的复杂性;第2章 NP完全理论 ;[例] 对三个数进行排序的判定树 ;第3章 蛮力法 ;KMP算法;next数组的定义;next数组的求法:;next数组的求法:;算法3.4 KMP算法中求next数组;算法3.5 KMP算法;生成排列对象;生成子集;算法3.10 生成子集;0/1背包问题;TSP问题;TSP问题;第4/5章 分/ 减治法;分治法的求解过程 ; 子问题 的规模是n/2;递 归;一个递归和减治法混合应用例子----俄式乘法; if(n%2==0) { halfn = n1; bm = m1; product = rmul(halfn,bm); } if(n%2==1) { halfn = n1; bm = m1; product = rmul(halfn,bm)+m; } return product; };int rmul(int n, int m) /* 方法2:非递归法 */ { int result=0; while(n != 0) { if(n%2 == 0) m = m1; else { result=result+m; m=m1; } n=n1; } return result; };第6章 动态规划法;动态规划法的设计思想 ; 原问题的解;n=5时分治法计算斐波那契数的过程。 ;0 ;TSP问题 ;假设从顶点i出发,令d(i, V)表示从顶点i出发经过V中各个顶点一次且仅一次,最后回到出发点i的最短路径长度,开始时,V=V-{i},于是,TSP问题的动态规划函数为: d(i,V)=min{cik+d(k,V-{k})}(k∈V) (式6.5) d(k,{})=cki(k≠i) (式6.6);这是最后一个阶段的决策,而: d(1, {2, 3})=min{c12+d(2, {3}), c13+ d(3, {2})} d(2, {1, 3})=min{c21+d(1, {3}), c23+ d(3, {1})} d(3, {1, 2})=min{c31+d(1, {2}), c32+ d(2, {1})} 这一阶段的决策又依赖于下面的计算结果: d(1, {2})= c12+d(2, {}) d(2, {3})=c23+d(3, {}) d(3, {2})= c32+d(2, {}) d(1, {3})= c13+d(3, {}) d(2, {1})=c21+d(1, {}) d(3, {1})=c31+d(1, {}) ;再向前倒推,有: d(1, {2})= c12+d(2, {})=2+6=8(1→2) d(1, {3})= c13+d(3, {})=3+3=6(1→3) d(2, {3})= c23+d(3, {})=2+3=5(2→3) d(2, {1})= c21+d(1, {})=4+5=9(2→1) d(3, {1})= c31+d(1, {})=7+5=12(3→1) d(3, {2})= c32+d(2, {})=5+6=11(3→2) 再向前倒退,有: d(1, {2, 3})=min{c12+d(2, {3}), c13+ d(3, {2})}=min{2+5, 3+11}=7(1→2) d(2, {1, 3})=min{c21+d(1, {3}), c23+ d(3, {1})}=min{4+6, 2+12}=10(2→1);算法6.1——TSP问题 1.for (i=1; in; i++) //初始化第0列 d[i][0]=c[i][0]; 2.for (j=1; j2n-1-1; j++) for (i=1; in; i++) //依次进行第i次迭代 if (子集V[j]中不包含i) 对V[j]中的每个元素k,计算d[i][j]=min(c[i][k]+d[k][j-1]); 3.对V[2n-1-1]中的每一个元素k,计算d[0][2n-1-1]=min(c[0][k]+d[k][2n-1-2]); 4.输出最短路径长度d[0][2n-1-1];;0

文档评论(0)

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

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

1亿VIP精品文档

相关文档