欢迎来到天天文库
浏览记录
ID:37968737
大小:154.00 KB
页数:9页
时间:2019-06-04
《中南大学2014算法试卷和答案分析报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、word格式文档中南大学考试试卷2013--2014学年下学期时间100分钟2014年6月6日算法分析与设计课程48学时3学分考试形式:闭卷专业年级:12级计算机、信安、物联本科生,总分100分,占总评成绩70%注:此页不作答题纸,请将答案写在答题纸上一、简答题(本题30分,每小题5分)1、陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?1最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。意义:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,
2、这就保证了算法的运行时间不会比任何更长2平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。意义:在输入不同的情况下算法的运行时间复杂度可能会发生变化。平均时间复杂度给出了算法的期望运行时间,有助于算法好坏的评价以及在不同算法之间比较时有一个统一标准2、简单描述分治法的基本思想。分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。3、何谓最优子结构性质?如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有
3、最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。4、何谓P、NP、NPC问题P(Polynomial问题):也即是多项式复杂程度的问题。NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。NPC(NPComplete)问题,这种问题只有把解域里面的所有可能都穷举了之后才能得出答案,这样的问题是NP里面最难的问题,这种问题就是NPC问题。5、试比较回溯法与分支限界法。1、引言 1.1回溯法 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解
4、空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。这种以深度优先方式系统搜索问题解的算法称为回溯法。 专业整理word格式文档 1.2分支限界法 分支限界法是以广度优先或以最小耗费优先的方式搜索解空间树,在每一个活结点处,计算一个函数值,并根据函数值,从当前活结点表中选择一个最有利的结点作为扩展结点,使搜索朝着解空间上有最优解的分支推进,以便尽快地找出一个最优解,这种方法称为分支限界法。 2、回溯法的基本思想
5、 用回溯法解问题时,应明确定义问题的解空间。问题的解空间至少应包含问题的一个解。之后还应将解空间很好的组织起来,使得能用回溯法方便的搜索整个解空间。在组织解空间时常用到两种典型的解空间树,即子集树和排列树。确定了解空间的组织结构后,回溯法从开始结点出发,以深度优先方式搜索整个解空间。这个开始结点成为活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此时,应往回移动至最近的一个活结点处,并使这个活结
6、点成为当前的扩展结点。回溯法以这种工作方式递归的在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。 3、分支限界法的基本思想 用分支限界法解问题时,同样也应明确定义问题的解空间。之后还应将解空间很好的组织起来。分支限界法也有两种组织解空间的方法,即队列式分支限界法和优先队列式分支限界法。两者的区别在于:队列式分支限界法按照队列先进先出的原则选取下一个节点为扩展节点,而优先队列式分支限界法按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。分支限界法常以广度优先或以最小耗费优先的方式搜索问题的解空间树。在分支限界法中,每
7、一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。 4、回溯法的设计原理 在设计一个回溯算法时,通常按照以下步骤进行: (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 在一般情况下用
8、递归方法实现回溯法的基本框架如下: voidbacktrack(intt) { if(t>n)o
此文档下载收益归作者所有