《算法设计及分析》复习题.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
填空 1. 。 2. 3.以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法 。 4.回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为 o(h(n)) 。 5.人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题结论的,叫做算法方案方案;另一类是不能通过若干个步骤直截了当地得出结论,而是需要反复验证才能解决的,叫做启发式方案方案。..3个基本计算模型是 随机存取机、 随机存取存储机.快速排序算法的性能取决于 。.. 11.2个重要的性质: 最优子结构的选择的 12.常见的两种分支限界法为。.解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是不需要排序的是分支限界法。.f ( n ) = 6 × 2n + n2,f(n)的渐进性态f ( n ) = O ( ? 2^n ??)。.对于含有n个元素的排列树问题,最情况下计算时间复杂性为最坏情况下计算时间复杂性为n! 。 16.在忽略常数因子的情况下,O、和三个符号中, 提供了算法运行时间的一个上界。.回溯法的求解过程,即在问题的解空间树中,按策略从根结点出发搜索解空间树。.分支限界法的求解过程,即在问题的解空间树中,按策略从根结点出发搜索解空间树。.的上界为 2^n 。 20.表为空 21.使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是,只使用约束条件进行裁剪的是。算法分析的目的是什么? 的效率算法的渐进时间复杂性的含义? 问题的规模n无穷大时影响算法效率的重要因素是),而其他因素仅实用时间复杂度相差的常熟因此可以用 T)数量级()算法。时间)数量级()渐进时间复杂性最坏情况下的时间复杂性和平均时间复杂性有什么不同? 简述分治法的基本思想。 将一个规模为n的问题k个规模较小的问题,这些子独立且与原题相同 简述动态规划方法所运用的最优化原理。 简述最优子结构性质。 一道动态规划问题其实就是一个递推问题,假设当前决策结果是f[n],则最优子结构就是要让f[n-k]最优,最优子结构性质就是能让转移到n的状态是最优的,并且与后面的决策没有关系,即让后面的决策安心地使用前面的局部最优解的一种性质 简述回溯法基本思想。 用回溯法求解的问题,其解如何表示?有什么规定? 回溯法的搜索特点是什么? 贪心算法的基本思想? 什么是直接递归和间接递归?消除递归一般要用到什么数据结构? 算法填空 1.n后问题回溯算法 (1)用二维数组A[N][N]存储皇后位置,若第i行第j列放有皇后,则A[i][j]为非0值,否则值为0。 (2)分别用一维数组M[N]、L[2*N-1]、R[2*N-1]表示竖列、左斜线、右斜线是否放有棋子,有则值为1,否则值为0。 for ( j=0; jN; j++ ) if (!M[j]!L[i+j]!R[i-j+N]? ) { //安全检查 A[i][j]=i+1; //放皇后 M[j]=L[i+j]=R[i-j+N]=1;? ; if ( i==N-1 ) 输出结果; else try(i+1,M,L,R,A) ; //试探下一行 A[i][j]=0??? ; //去皇后 M[j]=L[i+j]=R[i-j+N]=0?? ; } 2.数塔问题。有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。 for ( r=n-2; r=0; r-- ) //自底向上递归计算 for ( c=0; ; c++ ) if ( t[r+1][c] t[r+1][c+1] ) ; else ; 3.用回溯法解0/1背包问题时,计算结点的上界的函数如下所示,请在空格中填入合适的内容: private static double bound ( int i ){ double cleft = c - cw; // 剩余容量 double bound = cp; // 结点的上界 while (i =

文档评论(0)

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

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

1亿VIP精品文档

相关文档