- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
第 PAGE 8 页 共 NUMPAGES 8 页
算法设计与分析
什么是算法?算法有哪些基本特征?请指出算法同程序的相同点与不同点。
答:算法是解决问题的方法或过程,是满足以下四个性质的指令序列
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)
分治算法和动态规划算法都是通过对问题进行分解,通过对子问题的求解然后进行解重构,从而实现对原问题的求解。请指出这两种算法在对问题进行分解时各自所遵循的原则。
答:分治算法对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互独立且与原问题相同的子问题(不包含公共的子问题)。
动态规划对问题进行分解时所遵循的原则是将待求解问题分解为若干个规模较小、相互关联的与原问题类似的子问题(包含公共的子问题),采用记录表的方法来保存所有已解决问题的答案,而在需要的时候再找出已求得的答案,避免大量的重复计算。
动态规划算法的本质是什么,请简要阐述。
答:动态规划的实质是分治思想和解决冗余,动态规划算法是将问题分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。
如果一个问题可以利用动态规划算法求解,那么该问题应满足什么条件?
答:该问题具有最优子结构性质(一个问题的最优解包含其子问题的最优解)和子问题重叠性质(每次递归产生的子问题不总是新问题,有些子问题被反复计算多次)
10、动态规划算法的基本思想是什么?请简述动态规划算法主要设计步骤。
答:动态规划算法的基本思想是将待求解问题分解成若干个相互关联的与原问题类似的子问题,求解这些子问题,并保存子问题的答案,避免重复计算,然后从这些子问题的解得到原问题的解。
动态规划算法主要设计步骤:
1)找出最优解的性质,并刻画其结构特征;
2)递归地定义最优值;
3)以自底向上的方式计算出最优值;
4)根据计算最优值时得到的信息,构造最优解;
11、什么是备忘录方法?它同动态规划法相比主要不同点是什么?请指出动态规划法和备忘录方法各自的适用范围。(注:平常说的“动态规划”是自底向上的动态规划,“备忘录方法”是自顶向下的动态规划。)
答:备忘录方法是动态规划算法的变形,它通过分治思想对原问题进行分解,以存储子问题的解的方式解决冗余计算,并采用自顶向下的递归方式获取问题的最终解。
与动态规划算法的不同之处是动态规划算法的递归方式是自底向上递归求解,而备忘录方法的递归方式是自顶向下递归求解。
当一个问题的所有子问题都至少要解一次时,使用动态规划算法。
当子问题空间中的部分子问题不需要求解时,使用备忘录方法。
12、贪心算法的设计思想是什么,有什么特点?如果一个问题用贪心算法可以获得全局最优解,那么该问题的求解应满足哪些条件?
答:贪心算法的设计思想是在对问题求解时,总是做出在当前看来是最好的选择。
它的特点是1)不是从整体考虑——得到的解可能不是全局最优 2)简单,直接,易理解,效率高。
如使用贪心算法求解问题获得全局最优解,则问题应满足
1)贪心选择性质(与动态规划的主要区别)
所求问题的整体最优解可以通过一系列局部最优的选择(即贪心选择)来达到
2)最优子结构性质(动态规划算法和
文档评论(0)