您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 中科院计算机算法_陈玉福_历年试题
中国科学院研究生院课程编号:711008Z-1试题专用纸课程名称:计算机算法设计与分析任课教师:陈玉福———————————————————————————————————————————————姓名学号成绩1.回答下列问题:(每小题5分)1.陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。2.阐述动态规划算法与贪心算法的区别,它们都有那些优势和劣势?动态规划算法与贪心算法都要求问题具有最优子结构性质,这是二者的一个共同点。但是对于具有最优子结构的问题应该选择前者还后者来解决?下面通过两个经典的组合优化问题谈谈动态规划算法与贪心算法的主要差异3.动态规划法与分治法和贪心法类似,它也是将原问题分解为若干个更小的、相似的子问题,并通过求解子问题产生一个全局最优解。与分治法和贪心法不同之处在于:①使用贪心法时,当前的选择可能要依赖于已经作出的所有选择,但不依赖于有待于做出的选择和子问题。因此贪心法是自顶向下(即从起点到终点),一步一步地作出贪心选择。当然,如果当前的选择可能要依赖于子问题的解时,则难以通过局部的贪心策略达到全局最优解。②使用分治法时,由原问题分解出的各子问题通常是相互独立的,即不包含公共的子问题,因此一旦递归地求出各子问题的解后,便可自下而上地将各子问题的解合并成问题的解。如果各子问题不是相互独立的,则分治法要做许多不必要的工作,重复地求解公共的子问题。③动态规划允许由原问题分解出的子问题之间相互依赖。每一个子问题只求解一次,并将结果保存起来,避免每次碰到此子问题时都要重复计算4.阐述回溯算法与分枝限界算法的共同点和不同点,提高算法效率的关键是什么?5.6.在对算法进行复杂性分析时,强调渐进复杂性的意义是什么?7.算法的复杂性算法的复杂性算法的复杂性算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低8.简化算法复杂性分析的方法和步骤,即只要考察当问题的规模充分大时,算法复杂性在渐近意义下的阶。与此简化的复杂性分析方法相配套,9.问题复杂程度和规模的线性增长导致的时耗的增长和空间需求的增长,对低效算法来说,都是超线性的,决非计算机速度和容量的线性增长带来的时耗减少和存储空间的扩大所能抵销。二.(20分)试用Prim算法求解下面无向赋权图的最小生成树,指出最小生成树及该树中各边被选中的先后次序;写出算法的基本步骤。三.(20分)用LC-分枝限界算法求解0/1背包问题:5,12nM,物品重量和价值分别是:(2,3,4,6,9)W和(8,9,10,12,18)P1.画出由算法生成的状态空间树,并标明各节点的优先级的值;2.给出各节点被选作当前扩展节点的先后次序;3.给出最优解。2631547820161112713131514111018825四.(20分)已知一组数12345{,,,,}Sxxxxx满足12345xxxxx,且被搜索的对象的概率分布是:012345123450.1,0.01,0.02,0.04,0.03,0.20.15,0.05,0.075,0.25,0.075aaaaaabbbbb其中ia表示被搜索对象在区间1(,)iixx内的概率,ib表示被搜索对象为ix的概率,06,xx使用动态规划算法求该搜索问题的最优二叉搜索树。五.(20分)假定已知“无向图的Hamilton回路”问题是NPC问题,证明“旅行商判定问题”也是NPC问题。共2页第2页1.贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势?共通点:动态规划和贪心算法都是一种递推算法,均有局部最优解来推导全局最优解区别:贪心算法中,作出的每步贪心决策都无法改变,每一步的最优解一定包含上一步的最优解,而上一部之前的最优解则不作保留。动态优化算法,全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率。但它需要计算之前所有情况花费,更加耗费空间。贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编码和执行过程中都有一定的速度优势。贪心算法是只是找局部最优解,不一定是全局最优解。2.试比较回溯法与分枝限界算法,分别谈谈这两个算法比较适合的问题?二者都是在解空间树里搜索问题的可靠解或最优解,但是搜索的方式不同,回溯法采用深度优先的方式,直到达到问题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优解时,停止向前搜索,并沿原路返回到该路径上最后一个还可扩展的节点,然后,从该节点出发朝新的方向纵深搜索。分枝限界法采用的是宽度优先的方式,它将活节点存放在一个特殊的表中,其策略是,在扩展节点处,首先生成其所有的儿子节点,将那些导致不可行解或导致非最优解的儿子节点舍弃,其余儿子节点加入活节点表中,然后,从活节点中取出一个节点作为当前扩展节点,重复上述节点中扩展过程。可以看出,回溯法一般用于求问题的一个可行解,而分枝限界可以用于求出问题的所有可行解。3.何谓最优化原理?采用动态规划算法必须满足的条件是什么?动态规划算法是通过什么问题的什么特性提高效率的?一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。最优子结构性质,子问题重叠性质是计算模型采用动态规划算法求解的两个基本要素。动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率4.什么是多项式时间算法?若存在一个常数C,使得对于所有n=0,都有|f(n)|=C*|g(n)|,则称函数f(n)是O(g(n))。时间复杂度是O(p(n))的算法称为多项式时间算法,这里p(n)是关于n的多项式。时间复杂度为O(nlog(n))、O(n^3)的算法都是多项式时间算法,时间复杂度为O(n^log(n))、O(n!)、O(2^n)的算法是指数时间算法。一个优化问题如果已经找到了多项式时间算法,则称该问题为多项式时间可解问题,并将这类问题的集合记为P,因此多项式时间可解问题就称为P类问题。。5.多项式时间确定性算法与多项式时间非确定性算法的主要区别是什么?在算法计算复杂性的研究中,一个算法如果存在图灵机可计算的多项式时间计算复杂性算法,就将这个算法归入P类,如果存在非确定性图灵机可计算的多项式时间计算复杂性算法,就将其归入NP类6.陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?最坏时间复杂度式算法在最差情况下的时间复杂度,也就是花费时间最多的情况。平均时间复杂度是因为它是期望的运行时间。它更有意义,现实中,平均运行时间很难通过分析得到,一般都是通过运行一定数量的实验数据后估算而来的。而最坏运行时间是一种保证,那就是运行时间不会再坏了。在应用中,这是最重要的需求,通常我们提到的运行时间都是最坏情况下的运行时间,时间复杂度是最坏情况下的时间复杂度。7.在对算法进行复杂性分析时,强调渐进复杂性的意义是什么?当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍。使用渐进表达式可以略去低阶项所留下的主项,更加简单。P118.在对算法进行复杂性分析时,时间复杂度用什么量反映的?其间做了什么假定?复杂性函数的渐进上界反映了复杂性函数的什么性质?通常我们提到的运行时间都是最坏情况下的运行时间,时间复杂度是最坏情况下的时间复杂度我们假定N充分大,渐近上界也反映了复杂性函数在N充分大的情况下复杂性的上界9.什么是NPC问题?证明一个问题是NPC问题一般采用哪几个步骤?第一,证明该问题是NP问题第二,选取一个已知的NPC问题第三,构造一个从二中的问题到题目中问题的变换第四,证明这个变换是多项式变换10.已知求解问题的两个算法的时间复杂性函数分别为和。现在有两台计算机,它们的速度比为64。如果采用算法,计算机求解问题的一个实例所用的时间为,那么,采用算法时,计算机能够在时间内求解问题的多大输入规模的实例?解决这类问题,只要列出式子即可11.在连通图无向图的宽度优先搜索树和深度优先搜索树中,哪棵树的最长路径可能会更长些?试说明你的理由。宽度优先搜索树可能会长些12.确定性图灵机模型与非确定性图灵机模型的主要区别在那里?确定性图灵机模型下算法的时间复杂度和空间复杂度指的是什么?二者的区别就在于,确定性的每一步只有一种选择,而非有多种选择,由些可见,非的计算能力比确定性强得多。时间复杂性即从开妈直至进入停机状态所运行的步数,同理空间复杂度13.归并排序算法和快速排序算法各自强调了那个方面?各自提高效率的策略是什么?归并由分解与合并两部分组成。提高的话一个是当元素比较少时,可以直接进行排序,比如插入排序。这比分解合并要快得多。二是尽量采用链表结构,因链表结构的移动要快于数组快排也是利用分治法排序。主要过程为划分。一些改进的方法在确定第K小元素时,就是将r个元素分为一段这种方法复杂性可达到O(n)
本文标题:中科院计算机算法_陈玉福_历年试题
链接地址:https://www.777doc.com/doc-2794956 .html