第五章 减治法剖析课件.ppt
《第五章 减治法剖析课件.ppt》由会员分享,可在线阅读,更多相关《第五章 减治法剖析课件.ppt(57页珍藏版)》请在三一办公上搜索。
1、12/22/2022,1,第5章 减治法,减治法的基本思想将规模为n的问题递减为规模为n-1、n/c或n-k的子问题,反复递减后对子问题分别求解,再建立子问题的解与原问题的解的关系。与分治法的区别于联系?Divide-and-Conquer VS Decrease-and-Conquer,12/22/2022,2,减常数(如1) :每此迭代规模减小nn-1,减治法-减常变量,12/22/2022,3,减因子(如1/2):每此迭代规模减半n n/2,减治法-减常因子,与分治法的区别?,12/22/2022,4,减治法-减可变规模,每此迭代减小的规模不同gcd(m,n)=gcd(m,m mod n
2、),12/22/2022,5,主要内容,减常量:5.1 插入排序 5.2 深度优先查找与广度优先查找5.3 拓扑排序5.4 生成组合对象的算法减常因子算法:5.5减可变规模算法:5.6,12/22/2022,6,如何用减一法对一个数组A0.n-1排序?也就是如何建立n规模与n-1规模之间的关系?假设n-1规模的数组A0.n-2已经解决,则需要考虑元素An-1,在这个有序数组中处于何处?根据在A0.n-2中寻找An-1插入使用方法的不同分为:直接插入排序、折半插入排序,5.1 插入排序,12/22/2022,7,5.1 插入排序-示例,待排序序列89,45,68,90,29,34,17插入过程:
3、 89 不需比较 45,89 45,68,89 45,68, 89,90 29,45,68, 89,90 29,34,45,68 89, 90 17,29,34,45,68, 89, 90 插入次数=n-1=6 比较次数=?,12/22/2022,8,ALGORITHM InsertionSort( A0.n-1 )/ 对给定序列进行直接插入排序/ 输入:大小为n的无序序列A/ 输出:按非递减排列的序列Afor i 1 to n-1 dotemp Aij i-1while j 0 and Aj temp doAj+1 Ajj j 1Aj+1 temp,5.1 插入排序-伪代码,12/22/20
4、22,9,基本操作:比较最坏的情形? 严格递减的数组,每次插入,需比较已插入的所有元素,此时,第i次插入比较i个元素,故最好的情形? 升序排列,每次插入只需比较一次,5.1 插入排序-效率分析,12/22/2022,10,平均效率的精确分析基于对无序元素的研究,对于随机序列的数组,,5.1 插入排序-效率分析,12/22/2022,11,排序算法-时间复杂度小节,插入排序最差(n2) 最优 (n) 平均 (n2)合并排序最差(nlog2n)快速排序最优(nlog2n) 最差(n2) 平均(1.38nlog2n)选择排序(n2)冒泡排序(n2),遇到基本有序数组表现优异性能,可结合快速排序,12
5、/22/2022,12,5.2.1 深度优先查找-基本思想,基本思想访问一个节点A若A有未访问相邻节点,访问一个与A相邻节点B以B为起点进行DFS否则回退右图DFS输出序列是?a-c-d-f-b-e-g-h-i-j,12/22/2022,13,5.2.1 深度优先查找-伪代码,DFS(G)count =0/记录这是第几个访问的节点mark each vertex with 0/标记为 unvisitedfor each vertex v V doif v is marked with 0 dfs(v)dfs(v)count = count + 1mark v with countfor eac
6、h vertex w adjacent to v doif w is marked with 0 dfs(w),12/22/2022,14,在深度优先遍历时需要使用到什么辅助结构?写出出栈和入栈的过程,5.2.1 深度优先查找-堆栈过程,12/22/2022,15,5.2.1 深度优先查找-效率,深度优先搜索的效率与图的表示有关吗?对邻接矩阵表示的图:遍历的效率为 ( V 2) 对邻接链表表示的图:遍历的效率为 ( V + E ),12/22/2022,16,5.2.2 广度优先查找-基本思想,基本思想访问一个节点A若A有未访问相邻节点,访问所有与A相邻节点以一个相邻起点进行DFS否则回退一个
7、BFS输出序列是?a-c-d-e-f-b-g-h-j-i,12/22/2022,17,5.2.2 广度优先查找-伪代码,BFS(G) count =0 mark each vertex with 0 for each vertex v V do bfs(v)bfs(v)count = count + 1mark v with countinitialize queue with vwhile queue is not empty doa = front of queuefor each vertex w adjacent to a doif w is marked with 0 count =
8、 count + 1mark w with countadd w to the end of the queueremove a from the front of the queue,12/22/2022,18,5.2.2 广度优先查找-效率,广度优先搜索的效率与图的表示有关吗?对邻接矩阵表示的图:遍历的效率为 ( V 2) 对邻接链表表示的图:遍历的效率为 ( V + E ),12/22/2022,19,( V + E ),( V + E ),( V 2),( V 2),5.2 小结,12/22/2022,20,5.3 拓扑排序,背景大学课程里面的学习顺序软件开发里面各个任务的先后顺序(G
9、antt图)拓扑排序问题: 对给定的无环有向图,要求按照某种顺序列出它的顶点序列,使图的每一条边的起点总在结束顶点之前。,12/22/2022,21,DFS序列: C1-C3-C4-C5- -C2出栈序列: C5-C4-C3-C1-C2拓扑排序: C2-C1-C3-C4-C5思考为什么这个算法是有效的?,5.3 拓扑排序-DFS堆栈的方法,12/22/2022,22,5.3 拓扑排序-减一法直接实现,N规模和n-1规模如何建立联系?每次去掉一个源(没有输入边的顶点),12/22/2022,23,5.3 拓扑排序-减一法直接实现,N规模和n-1规模如何建立联系?每次去掉一个源(没有输入边的顶点)
10、,C3,C2,C5,C4,C1,12/22/2022,24,5.3 拓扑排序-减一法直接实现,N规模和n-1规模如何建立联系?每次去掉一个源(没有输入边的顶点),C3,C5,C4,C1,C2,12/22/2022,25,5.3 拓扑排序-减一法直接实现,N规模和n-1规模如何建立联系?每次去掉一个源(没有输入边的顶点),C5,C4,C1,C2,C3,12/22/2022,26,5.3 拓扑排序-减一法直接实现,N规模和n-1规模如何建立联系?每次去掉一个源(没有输入边的顶点),C5,C1,C2,C3,C4,C5,12/22/2022,27,5.4.1 生成排列,排列问题指的是对于给定的多个元素
11、求其中各种可能的序列。为了简单起见,这里仅仅考虑1到n之间的整数的排列问题。三种生成方法:(1)插入法 (2)Johnson-Trotter 法(3)字典顺序法,12/22/2022,28,5.4.1 生成排列-插入法,如何用减一法构造n规模与n-1规模问题之间的关系?将第n个数插入到(n-1)!个排列的n个可能位置中去。举例:求n=3的排列在n=2的排列中插入3,在n=1的排列中插入2。构造过程(从底向上):在 1 中从右到左插入2得到 12,21在 12 中从右到左插入3得到 123,132,312在 21 中从右到左插入3得到 213,231,321于是得 123,132,312,213
12、,231,321,12/22/2022,29,5.4.1 生成排列-插入法,优点满足最小变化的要求缺点生成多少项了?1+2!+3! + n!,12/22/2022,30,5.4.1 生成排列-JT,是否可以不产生1,2,3n-1的这些中间结果?Johnson-Trotter算法就是其中一种。利用这一算法求得的排列序列还是相邻序列变化最小的一个序列集合,也就是说下一个序列与上一个序列仅仅交换了两个元素的位置 。,12/22/2022,31,在排列的每一分量上画一个箭头。移动元素:如果分量k 的箭头指向一个相邻的较小元素,则该分量在排列中是移动的。While 存在可移动元素求最大的移动整数k,不断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 减治法剖析课件 第五 减治法 剖析 课件

链接地址:https://www.31ppt.com/p-1855922.html