算法设计与分析-08-复习-ff.pptx

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

算法设计与分析 Algorithms Design and Analysis;-考试时间和地点;各章分值分布;一、单选题(10题,10*2’=20分) 主要考察内容:细节知识点 二、简答题(4题,4*5’=20分) 主要考察内容:算法思想及算法思想对比 三、算法理解题(4题,4*12’=48分) 主要考察内容:算法应用问题理解 四、算法设计题(1题,1*12’=12分) 主要考察内容:利用算法思想求解问题(要求写出具体算法);第一章 绪论 时间复杂度分析 主定理法求解递归算法时间复杂度;算法设计方法;折半搜索 归并排序 快速排序 Huffman算法 Dijkstra算法 Kruskal算法 Prim算法 拓扑排序 Floyed算法;-示例:效率(Efficiency);-基本的效率类型;-递归算法的数学分析;-解递归方程;用代入法求解递归式 用递归树方法求解递归式 用主方法求解递归式 ——《算法导论》第4章;主方法为如下形式的递归提供了一种“菜谱”式的求??方法 其中a≥1和b1是常数,f(n)是渐近函数。 上述递归式描述的是这样一种算法的运行时间: 它将规模为n的问题分解为a个子问题,每个子问题规模为n/b,其中a和b都是正常数。 a个子问题递归地进行求解,每个花费时间T(n/b)。 函数f(n)包含了问题分解和子问题解合并的代价。 其中n/b指n/b的上取整或者是下取整,对结果不会造成影响。;-主定理(Master Theorem);确定主定理的哪种情况成立,即可得到解。;-使用主方法(2);-使用主方法(3);-Please have a try!;?;第二章 递归与分治 递归的概念及与分治的关系 分治算法的思想 重点实例: 全排列问题的递归算法(Perm) 大整数乘法及算法时间复杂度 矩阵乘法的Strassen算法及时间复杂度 棋盘覆盖 线性时间选择 循环赛日程表 ;-分治法的一般方法;-递归示例-排列问题;两个数的全排列:4,5;设一组数p = {r1, r2, r3, ... ,rn}, 全排列为perm(p) pn = p - {rn} perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), ... , rnperm(pn)。 当n = 1时,perm(p} = r1。 ;template class Type void Perm(Type list[], int k, int m ) { //产生[list[k:m]的所有排列 if(k==m) { //只剩下一个元素 for (int i=0;i=m;i++) coutlist[i]; coutendl; } else //还有多个元素待排列,递归产生排列 for (int i=k; i=m; i++) { Swap(list[k],list[i]); Perm(list,k+1,m); Swap(list[k],list[i]); } } ;-分治法的适用条件;2.3.1 大整数乘法 2.3.2 矩阵乘法的Strassen算法 2.3.3 棋盘覆盖 2.3.4 线性时间选择 2.3.5 最接近点对问题 2.3.6 循环赛日程表 ;2.3.1 大整数乘法;;2.3.2 矩阵乘法的Strassen算法; 将矩阵A,B和C中每一矩阵都分块成4个大小相等的子矩阵。由此可将方程C=AB重写为:;为了降低时间复杂度,必须减少乘法的次数。 ;【问题描述】 2k*2k个方格的一个棋盘,有一个方格残缺; 要求用三格板覆盖棋盘,三格板不重叠,不覆盖残缺方格,覆盖所有其它方格。 ;-k=2 的残缺棋盘和不同方向的三格板;-分而治之法求解残缺棋盘;实际应用:如网页排序等,只需要top k。;2.3.6 循环赛日程表 ;-分治算法小结;第三章 动态规划算法 动态规划VS.分而治之 动态规划算法的基本思想 什么是最优子结构性质 动态规划算法重点应用问题 矩阵链乘法 最长公共子序列 0-1背包 最大子段和;分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们组合起来,求出原问题的解; 动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分为更小的子子问题)。对每个子子问题只求解一次,将其解保存在一个表格中,从而无需每次求解一个子子问题时都重新计算。;-一个简单的例子:最大子段和;-简单算法;-动态规划算法;-动态规划算法代码;给定一个n个矩阵的序列(矩阵链)A1,A

文档评论(0)

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

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

1亿VIP精品文档

相关文档