算法设计与分析总复习..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析 什么是算法?算法有哪些基本特征?请指出算法同程序的相同点与不同点。 答:算法是解决问题的方法或过程,是满足以下四个性质的指令序列 1)输入:有个以上的输入 2)输出:至少有1个输出 3)确定性:指令清晰、无歧义 4)有限性:指令执行次数有限,时间有限 算法和程序的相同点:两者都具有输入、输出和确定性的特征 不同点:程序是算法用某种程序语言的具体实现,程序不满足算法具有的有限性性质 请描述算法设计的一般过程。 答:算法设计的一般过程是 1)提出问题 2)确定数学模型 3)明确目的、条件和约束关系 4)设计求解步骤 5)结果评估与分析 如果在第5步的分析中对算法时间、空间复杂度或结果不满意,可以返回第1步或第4步进一步迭代,直至找到满意的算法。 什么是算法复杂性?它主要有哪两个方面构成? 答:算法复杂性是算法运行时所需要的计算机资源的量,它包括两个方面:时间复杂性(需要时间资源的量)和空间复杂性(需要空间资源的量)。 时间复杂性分析主要分哪三种情况,哪种情况的可操作性最好,最具有实际价值? 答:时间复杂性分为3种情况,最好情况、平均情况、最坏情况,可操作性最好,最具有实际价值的是最坏情况下的时间复杂性 如果算法A由三个步骤组成,其中第一步的时间复杂性为O(n2),第二步的时间复杂性为O(nlogn),第三步的时间复杂性为O(n),请问算法A的时间复杂性是多少? 答:O(n2) 请问二分搜索算法、快速排序算法、线性时间选择算法和最近点对问题的时间复杂性各为多少? 答:二分搜索算法:最坏情况O(logn)、 快速排序算法:最坏情况O(n2),最好情况和平均情况均为O(nlogn) 线性时间选择算法:最坏情况O(n) 最近点对问题:时间复杂性O(nlogn) 分治算法和动态规划算法都是通过对问题进行分解,通过对子问题的求解然后进行解重构,从而实现对原问题的求解。请指出这两种算法在对问题进行分解时各自所遵循的原则。 答:分治算法对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互独立且与原问题相同的子问题(不包含公共的子问题)。 动态规划对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互关联的与原问题类似的子问题(包含公共的子问题),采用记录表的方法来保存所有已解决问题的答案,而在需要的时候再找出已求得的答案,避免大量的重复计算。 动态规划算法的本质是什么,请简要阐述。 答:动态规划的实质是分治思想和解决冗余,动态规划算法是将问题分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略 (即在解空间树上产生一条随机路径,然后沿该路径估算解空间中满足约束条件的节点数m,由于使用静态约束函数,在某些情况下产生的估计较为保守。因此还可以多选取几条不同的路径,分别计算m,然后平均,这样的估算结果会更准确些。) 15、请简述分支限界法的算法思想以及两种主要的实现方法。 答:分支限界法的算法思想是在问题的解空间树上以广度优先或最小耗费(最大效益)优先方式搜索问题的满足约束条件的一个解或最优解。(搜索策略:每一个活结点只有一次机会成为扩展结点。扩展结点一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中按一定的策略取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。) 分支限界法根据从活结点表中选择下一个扩展结点的方式有两种实现方法 1)队列式FIFO分支限界法:按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。最大优先队列:使用最大堆,体现最大效益优先 最小优先队列:使用最小堆,体现最小费用优先 1)两者在进行问题求解前,都需要完成解空间的定义和组织; 2)都是通过在解空间树上搜索来寻找问题的解; 不同点: 1)搜索方式 回溯法:深度优先; 分支限界法:广度优先; 2)搜索策略 回溯法:根据剪枝函数,选择下一个扩展接点并按深度优先方式进行搜索; 分支限界法:在扩展结点处,先产生其所有的子结点(分支),然后根据限界函数,确定哪些子结点将导致不可行解或非最优解,将这些子结点剔除,用剩下的子结点构造当前的活结点表,然后从该表中取一个结点作为当前扩展结点,并重复上述过程; 17、对于NP完全问题,我们一般采取的求解策略主要有哪些? 答:NP完全问题可行的解题策略 1)只对问题的特殊实例求解 2)用动态规划法或分支限界法求解 3)用概率算法求解 4)只求近似解 5)用启发式方法求解

文档评论(0)

sfkl + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档