数据结构与算法分析教学ppt课件第十章算法设计与分析导论.ppt
《数据结构与算法分析教学ppt课件第十章算法设计与分析导论.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法分析教学ppt课件第十章算法设计与分析导论.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C/C+&Java北京工业大学北京工业大学 计算机学院计算机学院软件学科部软件学科部 陈文博陈文博 2004数据结构与算法1第十章第十章第十章第十章算法设计与分析导论算法设计与分析导论算法设计与分析导论算法设计与分析导论数据结构与算法2 主要内容主要内容 算法设计与分析内容介绍算法设计与分析内容介绍 算法分析的方法算法分析的方法 递归与分治算法递归与分治算法 回溯算法回溯算法 贪心算法贪心算法 数据结构与算法3算法设计与分析内容介绍算法设计与分析内容介绍 从引例看算法设计从引例看算法设计 表达算法的抽象机制表达算法的抽象机制 数学算法与数据结构算法数学算法与数据结构算法 算法与数据结构的关系算
2、法与数据结构的关系 算法分析的方法算法分析的方法 常用算法模式常用算法模式数据结构与算法4010203040506071234四染色地理结论的实现四染色地理结论的实现123456712345670111111100011010011001010100111101111001011000110从引例看算法设计从引例看算法设计11数据结构与算法5Backtracking Algorithm Idea数据结构与算法6public boolean backtrack()Stack S=new ArrayStack();/Initialize system;i=1;/the i is number of
3、 a task j=1;/the j is item number of choice do (!whole project has completed)/accomplish backtrack数据结构与算法7do while(!The choice exceeds the scope)&(!whole project has completed)if(!matchConstraint(i,j)j+;else break;if(!The choice exceeds the scope)S.push(i,j);i+;j=1;/new task in beginning else if(!S.
4、empty()(i,j)=S.pop();j+;/test new choice else return false;if(whole project has completed)return true;(!whole project has completed)数据结构与算法8 ADT Stack 数据对象数据对象:D ai|ai ElemSet,i=1,2,.,n,n0 数据关系数据关系:R|ai-1,ai D,i=2,.,n 约定约定an 端为端为栈顶栈顶,a1 端为端为栈底栈底。ADT Stack 基本操作:基本操作:Stack()empty()push(e)pop()数据结构与算法9
5、表达算法的抽象机制表达算法的抽象机制数数 据据 模模 型型初始状态初始状态结果状态结果状态算算 法法顶层算法顶层算法底层算法底层算法宏观步骤宏观步骤 算法骨干算法骨干变量抽象变量抽象 运算粗化运算粗化微观步骤微观步骤 算法细节算法细节变量具体变量具体 运算细化运算细化ADT(抽象抽象)运算步骤运算步骤数据结构与算法10数学层面的算法与数据结构层面的算法数学层面的算法与数据结构层面的算法 数据结构层面的算法数据结构层面的算法public Object pop()if(empty()throw new EmptyStackException();Object topElement=stacktop
6、;return topElement;涉及对具体数据结构的操作涉及对具体数据结构的操作数据结构与算法11 数学层面的算法数学层面的算法不涉及对具体数据结构的操作不涉及对具体数据结构的操作只使用数据结构只使用数据结构ADT的接口的接口数据结构与算法12算法与数据结构的关系算法与数据结构的关系算法算法 vsvs 抽象的逻辑的数据结构抽象的逻辑的数据结构 四染色算法四染色算法 vsvs 具体的数据结构具体的数据结构 四染色算法四染色算法 vsvs 逻辑的数据结构逻辑的数据结构 (往往由(往往由控制结构控制结构得到体现)得到体现)whileif else if do 数据结构与算法13算法分析的方法算
7、法分析的方法 渐进时间复杂度渐进时间复杂度 平均时间复杂度平均时间复杂度v 一般的分析方法一般的分析方法v 递归方程的求解递归方程的求解数据结构与算法14四染色算法的分析四染色算法的分析例例 四染色回溯算法四染色回溯算法4*4*44n=4nT(n)=O(4n)数据结构与算法15void hanoi(int n,char x,char y,char z)/将塔座将塔座x x上按直径由小到大且至上而下编号为上按直径由小到大且至上而下编号为1 1至至n n/的的n n个圆盘按规则搬到塔座个圆盘按规则搬到塔座z z上,上,y y可用作辅助塔座。可用作辅助塔座。if(n=1)move(x,1,z);/将
8、编号为的圆盘从将编号为的圆盘从x移到移到z else hanoi(n-1,x,z,y);/将将x上编号为至上编号为至n-1的圆盘移到的圆盘移到y,z作辅助塔作辅助塔 move(x,n,z);/将编号为将编号为n的圆盘从的圆盘从x移到移到z hanoi(n-1,y,x,z);/将将y上编号为至上编号为至n-1的圆盘移到的圆盘移到z,x作辅助塔作辅助塔 Hanoi塔塔算法的分析算法的分析数据结构与算法16T(n)T(n-1)T(n-1)O(1)T(n)=T(n-1)+O(1)+T(n-1)=2 T(n-1)+O(1)递归方程的求解递归方程的求解数据结构与算法17T(n)=2 T(n-1)+O(1)
9、=2(2T(n-2)+O(1)+O(1)=4T(n-2)+3O(1)=4(2T(n-3)+O(1)+3O(1)=8T(n-3)+7O(1)=8(2T(n-4)+O(1)+7O(1)=16T(n-4)+15O(1)T(n)=2kT(n-k)+(2k-1)O(1)数据结构与算法18T(n)=2kT(n-k)+(2k-1)O(1)n-k=1 k=n-1 T(n)=2n-1 T(1)+(2 n-1-1)O(1)=2n-1 O(1)+(2 n-1-1)O(1)=22n-1 O(1)-O(1)=(2n 1)O(1)T(n)=O(2n)数据结构与算法19常用算法模式常用算法模式 递归与分治算法递归与分治算法
10、 动态规划动态规划 贪心算法贪心算法 回溯算法回溯算法 分支限界算法分支限界算法 概率算法概率算法 遗传算法遗传算法数据结构与算法20递归算法递归算法数据结构与算法21 后置递归后置递归法法(Postponing the work)的设计思想为的设计思想为:假假如如某某个个问问题题的的求求解解过过程程可可以以分分成成若若干干步步进进行行,并并且且当当前前这这一一步步的的解解可可以以直直接接求求得得,则则先先求求出出当当前前这这一一步步的的解解,对对于于余余下下的的问问题题,若若问问题题的的性性质质和和原原问问题类似,则又可题类似,则又可递归求解递归求解。数据结构与算法22 递归的递归的终结状态
11、终结状态是,当前的问题可是,当前的问题可以以直接求解直接求解,对原问题而言,则是已走,对原问题而言,则是已走到了求解的到了求解的最后一步最后一步。链表是可以如此求解的一个典型例子。链表是可以如此求解的一个典型例子。例如例如:编写编写“删除单链表中所有值为删除单链表中所有值为x 的数的数据元素据元素”的算法。的算法。数据结构与算法23 1)单链表是一种顺序结构,必须从第一个单链表是一种顺序结构,必须从第一个结点起,逐个检查每个结点的数据元素结点起,逐个检查每个结点的数据元素;分析分析:2)从另一角度看,链表又是一个递归结构,从另一角度看,链表又是一个递归结构,若若 L 是线性链表是线性链表(a1
12、,a2,an)的头指针,的头指针,则则 L-next是线性链表是线性链表(a2,an)的头指针。的头指针。数据结构与算法24 a1 a2 a3 an L例如例如:a1 a2 a3 an L a1 a2 a3 an L已知下列链表已知下列链表1)“a1=x”,则则 L 仍为删除仍为删除 x 后的链表头指针后的链表头指针2)“a1x”,则余下问题是考虑以则余下问题是考虑以 L-next 为头指针的为头指针的链表链表 a1 L-nextL-next=p-nextp=L-next数据结构与算法25void delete_L(LinkList&L,ElemType x)/删除以删除以L L为头指针的带头
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 分析 教学 ppt 课件 第十 设计 导论
限制150内