算法导论复习资料.doc
《算法导论复习资料.doc》由会员分享,可在线阅读,更多相关《算法导论复习资料.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法导论复习资料一、选择题:第一章的概念、术语。二、考点分析:1、复杂度的渐进表示,复杂度分析。2、正确性证明。考点:1正确性分析冒泡,归并,选择;2复杂度分析渐进表示O,替换法证明,先猜测,然后给出递归方程。循环不变性的三个性质:1初始化:它在循环的第一轮迭代开场之前,应该是正确的;2保持:如果在循环的某一次迭代开场之前它是正确的,那么,在下一次迭代开场之前,它也应该保持正确;3当循环完毕时,不变式给了我们一个有用的性质,它有助于说明算法是正确的。插入排序算法:INSERTION-SORT(A)1 for j 2 to lengthA2 do key Aj3 Insert Aj into t
2、he sorted sequence A1,j - 1.4 i j - 15 while i 0 and Ai key6 do Ai + 1 Ai7 i i - 18 Ai + 1 key插入排序的正确性证明:课本11页。归并排序算法:课本17页及19页。归并排序的正确性分析:课本20页。3、分治法根本步骤,复杂度分析。许多问题都可以递归求解考点:快速排序,归并排序,渐进排序,例如:12球里面有一个坏球,怎样用最少的次数找出来。解:共有24种状态,至少称重3次可以找出不同的球不是考点:线性时间选择,最接近点对,斯特拉算法求解。解:根本步骤:一、分解:将原问题分解成一系列的子问题;二、解决:递归
3、地解各子问题。假设子问题足够小,那么直接求解;三、合并:将子问题的结果合并成原问题的解。复杂度分析:分分治算法中的递归式是基于根本模式中的三个步骤的,T(n)为一个规模为n的运行时间,得到递归式T(n)=Q(1) nc附加习题:请给出一个运行时间为Q(nlgn)的算法,使之能在给定的一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。4、动态规划最优子构造性质,自底向上填表计算最优解值即最长公共子序列,导出最优解。考点:最优子构造性质,自底向上填表计算最优解值,导出最优解。a动态规划算法设计的4个步骤:1描述最优解的构造;2递归定义最优解的值;3按自底向上的方
4、式计算最优解的值;4由计算出的结果构造一个最优解。b最优子构造遵循的共同模式:1问题的一个解可以是做一个选择,做这种选择可能会得到一个或多个有待解决的子问题;2假设对一个给定的问题,的是一个可以导致最优解的选择,不必关心如何确定这个选择,尽管假定它是的;3在这个选择后,要确定哪些子问题会随之发生,以及如何最好地描述所得到的子问题的空间;4利用一种“剪切粘贴法,来证明在问题的一个最优解中,使用的子问题的解本身也必须是最优的。备注:A problem exhibits optimal substructure if an optimal solution to the problem contai
5、ns within it optimal solutions to subproblems. Whenever a problem exhibits optimal substucture it is a good clue that dynamic programming might apply. c最长公共子序列的算法:这里以两个序列X=x1,x2,xm和Y=y1,y2,yn为输入,注意课本211页的自底向上填表方法。LCS-LENGTH(X, Y) 注:此程序运行时间为Omn,每个表项的计算时间为O11 m lengthX 2 n lengthY 3 for i 1 to m 4 do
6、ci, 0 0 5 for j 0 to n 6 do c0, j 0 7 for i 1 to m 8 do for j 1 to n 9 do if xi = yj 10 then ci, j ci - 1, j - 1 + 1 11 bi, j “= 12 else if ci - 1, j ci, j - 1 13then ci, j ci - 1, j 14 bi, j 15 else ci, j ci, j - 1 16 bi, j 17 return c and b PRINT-LCS(b, X, i, j) 注:此程序运行时间为Om+n1 if i = 0 or j = 0 2
7、 then return 3 if bi, j = = 4 then PRINT-LCS(b, X, i - 1, j - 1) 5 print xi 6 elseif bi, j = 7 then PRINT-LCS(b, X, i - 1, j) 8 else PRINT-LCS(b, X, i, j - 1) d矩阵链乘法的算法:参照课本上的矩阵链表得出矩阵相乘的最小算法。MATRIX-CHAIN-ORDER(p) 每个表项的复杂度是On,共有On2表项,那么为On31 n lengthp - 1 2 for i 1 to n 3 do mi, i 0 4 for l 2 to n l
8、is the chain length. 5 do for i 1 to n - l + 1 6 do j i + l - 1 7 mi, j 8 for k i to j - 1 9 do q mi, k + mk + 1, j + pi-1 pkpj 10 if q mi, j 11 then mi, j q 12 si, j k 13 return m and s PRINT-OPTIMAL-PARENS(s, i, j)1 if i = j 2 then print Ai 3 else print ( 4 PRINT-OPTIMAL-PARENS(s, i, si, j) 5 PRIN
9、T-OPTIMAL-PARENS(s, si, j + 1, j) 6 print ) e备忘录算法:1程序构造采用自顶向上;2保存了递归构造,开销较大;3当所有的子问题都需要求解时,自底向上的方法效率较高,否那么可以采用备忘录方法。备忘录算法的代码可以参照课本207页。f最优二叉查找树:1一棵最优二叉查找树不一定是一棵整体高度最小的树,也不一定总是把有最大概率的关键字放在根部来构造一棵最优二叉查找树。5、贪心法最优子构造性质+贪心选择性质。考点:学会证明最优子构造性质和贪心选择性质的问题。a活动选择问题:注意课本上224页地贪婪法定理证明,这就是贪婪法的合理性证明。RECURSIVE-ACT
10、IVITY-SELECTOR(s, f, i, j)1 m i + 1 2 while m j and sm fi Find the first activity in Sij.3 do m m + 1 4 if m j 5 then return am RECURSIVE-ACTIVITY-SELECTOR(s, f, m, j) 6 else return GREEDY-ACTIVITY-SELECTOR(s, f)1 n lengths 2 A a1 3 i 1 24 for m 2 to n 5 do if sm fi 6 then A A am 7 i m 8 return A b贪
11、心算法遵循的步骤:1决定问题的最优子构造;2设计出一个递归解;3证明在递归的任一阶段,最优选择之一总是贪心选择,那么,做贪心选择总是平安的;4证明通过做贪心选择,所有的子问题出一个以外都为空;5设计出一个实现贪心策略的递归算法;6将递归算法转换成迭代算法。c根据贪心选择来构造最优子构造:1将优化问题转化成这样一个问题,即先做出选择,再解决剩下的一个子问题;2证明原问题总是有一个最优解是做贪心选择得到的,从而说明贪心选择的平安;3说明在做贪心选择后,剩余的子问题具有这样的一个性质,即如果将子问题的最优解和我们所作的贪心选择联合起来,可以得出原问题的一个最优解。d贪心选择性质:证明定理e最优子构造
12、性质:课本229页。6、搜索回溯法、剪枝函数、最小本钱优先。考点:回溯,剪枝函数,最小本钱优先的问题;分支界限法,剪枝函数所具备的性质。a回溯法:1定义:回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以到达目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点。2回溯法解题的步骤:a、针对所给的问题,定义问题的解空间;b、确定易于搜索的解空间构造;c、以深度优先方式搜索解空间,并在搜索过程中用剪枝函数防止无效搜索。2回溯法解决的n后问题:在一个n * n的棋盘上放置n个王后,使得n
13、后彼此不受攻击。3回溯法解决0-1背包问题:附:证明局部背包问题具有贪心选择性质。课本练习题:c 剪枝函数:约束函数:剪去不满足约束函数的子树; 限界函数:剪去由限界函数说明不能得到最优解的子树。剪枝函数的必要条件:典型例题:1求不等式的整数解 5x1+4x2-x3=10, 1=xj=3, i =1,2,3 2装载问题:c最小本钱优先算法:注:分支限界的根本思想:1 回溯法的深度优先比拟盲目2 广度优先代价太高4 能优先搜索那些最有希望得到解的路径6 深入分析问题,得到有用的启发信息7 利用启发信息构造本钱函数8 最小本钱优先的搜索策略9 结合剪枝函数典型题型:重拍九宫问题。7、最大流概念,最
14、大流-最小割定理,Edmonds-Karp算法。考点:最大流的相关概念,最大流最小割定理,Edmonds-Karp算法,要求掌握Ford-Fulkerson算法的相关内容。1流网络定义:有向图G = (V, E),如果图G满足: 存在源结点(source) ss的入度为0 存在汇结点(sink) tt的出度为0 任意结点vV,有s v t 容量函数C: E R+称G为流网络。流的定义:流网络G,假设函数 p:V XV R+满足下述条件: 容量限制:对任意(u,v) E,有0=p(u,v)=c(u,v) 守恒条件:对任意u (V-s,t),有 那么称p为G上的流。注意课本399页的引理。2对源点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 导论 复习资料
限制150内