算法分析TheAnalysisofAlgorithmsppt课件_第1页
算法分析TheAnalysisofAlgorithmsppt课件_第2页
算法分析TheAnalysisofAlgorithmsppt课件_第3页
算法分析TheAnalysisofAlgorithmsppt课件_第4页
算法分析TheAnalysisofAlgorithmsppt课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算法分析与设计 Analysis and Design of Computer Algorithms第五章 减治法Decrease and Conquer杨春明西南科学技大学计算机学院./2教学内容减治法的普通方法及变种插入排序深度优先查找和广度优先查找生成组合对象的算法减常因子算法减可变规模算法要求掌握减治法的根本思想及在常见问题问题中的运用。./3减治法减治技术利用了一种关系:一个问题给定实例的解和同样的问题较小实例的解之间的关系。一旦建立了这种关系,就可以从顶至下递归,也可以从底至上非递归的来运用。减治法有三种变种:1)减去一个常量2)减去一个常数

2、因子3)减去的规模是可变的./4减一治技术规模为n的问题规模为n-1的子问题子问题的解原始问题的解f(n)=anf(n)=f(n-1)*a n1f(n)=a n=1./5减半治技术规模为n的问题规模为n/2的子问题子问题的解原始问题的解an=(an/2)2 n是偶数an=(a(n-1)/2)2 *a n是奇数an =a n=1./6插入排序For j2 to n do 将A(j)放到已分类集合A(0.j-1)的正确位置上Repeat算法 InsertionSort(A0.n-1)/用插入排序对给定数组排序/输入:一个可排序数组/输出:

3、非降序列数组Afor i1 to n-1 do vAi; ji-1; while (j0 and Ajv) Aj+1Aj; jj-1; Aj+1v;89 | 45 68 90 29 34 1745 89 | 68 90 29 34 1745 68 89 | 90 29 34 1745 68 89 90 | 29 34 1729 45 68 89 90 | 34 1729 34 45 68 89 90 | 1717 29 34 45 68 89 90 ./7深度优先查找邻接矩阵表示,该遍历算法的时间效率属于(|V|2)邻接链表表示,该遍历算法的时间效率属于(|V|+|E|).

4、/8./9广度优先查找邻接矩阵表示,该遍历算法的时间效率属于(|V|2)邻接链表表示,该遍历算法的时间效率属于(|V|+|E|)./10./11广度优先查找./12DFS与BFS的主要性质./13拓扑排序(Topological sorting)有向图./14拓扑排序(Topological sorting)./15拓扑排序(Topological sorting)./16生成陈列(Permutations)生成由n

5、个元素 a1,a2,.,an的陈列算法 JohnsonTrotter(n)/生成n个数的陈列/输入:一个正整数n/输出:1,.,n的一切的陈列数将第一个陈列初始化为12.nwhile 存在一个挪动整数k do 求最大的挪动整数k 把k和它箭头指向的相邻整数互换 调转一切大于k的整数的方向课后思索:如何按照字典序生成a1a2.an后面的陈列呢?./17生成子集Subset背包问题中如何穷举出给定物品集合的一切子集?A=a1,a2,.,an=a1,a2,.,an-1 /18假币问题(Fake-Coin)当n1时,W(n)=W(n/2)+1 , W(1)

6、=0./19俄式乘法(Multiplication la russe)两个大整数m和n乘法n * m=n2* 2 * mn为偶数n * m=n -12* 2 * m + mn为奇数./20约瑟夫斯问题(Josephus)在约瑟夫斯环中最后的幸存者是谁?偶数情况:J(2k)=2J(k)-1奇数情况:J(2k+1)=2J(k)+1二进制表示:J(6)=J(1102)=1012=5,J(7)=J(1112)=1112=7./21约瑟夫斯问题(Josephus)?J(n,m)=(J(n-1,m)+m) mod nJ(1,m)=0.mryang

7、.org/22选择问题(Selection Problem)问题描画给定一个含有n个元素的(或叫关键字)的集合,确定集合中第k小的元素。A(0)A(1)A(j-1)A(j)A(j+1)A(n-2)A(n-1)V划分元素kj时,第k小元素所在的集合K=j时,第k小元素就是划分元素./23选择问题(Selection Problem)Procedure SELECT(A,n,k) integer n,k,m,r,j; m1;rn+1;A(n+1)+; loop jr call PARTITION(m,j) case :k=j:return :kj:rj :else:mj+1 e

8、ndcase repeatEnd SELECT调用划分函数两个新的子问题T(n)=T(n/2)+(n+1)./24插值查找(Interpolation search)有序数组查找的另一种方法由直线方程可得:键值比较次数小于log2log2n+1./25二叉树的查找与插入最差效率(n),平均效率(logn)./26拈游戏(Nim Game)有13根火柴棍,每次最少拿走1根,最多能拿走4根,拿走最后一根火柴的就是赢家。该如何拿走火柴?n=m+1实例是败局m+2n 2m+1是胜局2m+2=2(m+1)另一个败局获胜战略每次拿走n mod (

9、m+1)根火柴棍./27拈游戏(Nim Game)多堆拈游戏每堆火柴棍的数量不一致,每次拿走火柴棍时可以从恣意一堆中拿走恣意允许数量的火柴棍,甚至可以把一堆都拿光。拿走最后一根火柴的是赢家。1901年,哈佛大学数学教授C.L. Bouton发现了一个精巧解法:解是基于堆中数量的二进制表示的。b1,b2,.,bi分别是各堆数量的二进制表示;计算它们的二进制数位和忽略进位。当且仅当二进制数位和中包含至少一个1时,为胜局;只包含0时,为败局。./28减治法小结减治技术利用了一种关系:一个问题给定实例的解和同样的问题较小实例的解之间的关系。一旦建立了这种关系,就

10、可以从顶至下递归,也可以从底至上非递归的来运用。减治法有三种变种:1)减去一个常量2)减去一个常数因子3)减去的规模是可变的用减治法处理的问题有:插入排序,DFS,BFS,俄式乘法,选择问题./29referenceJosephus /deensley/mathdl/Joseph.htmllibrary.wolfram/examples/josephusproblem//deensley/DiscreteMath/flash/ch1/sec1_1/josephus.htmlmathworld.wolfram/JosephusProblem.htmlanswers/topic/josephus-problem?cat=technologyNim Gamearchimedes-l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论