- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《算法设计与分析》复习要点
算法的概念:
答:算法是求解一类问题的任意一种特殊的方法。一个算法是对特定问题求解步骤的一种描述,它是指令的有限序列。
注:算法三要素:1、操作2、控制结构3、数据结构
算法有5大特性:
答:输入、输出、确定性、能行性、有穷性。
注:输入:一个算法有0个或多个输入;
输出:一个算法将产生一个或多个输出。
确定性:一个算法中每一步运算的含义必须是确切的、无二义性的;
可行性:一个算法中要执行的运算都是相当基本的操作,能在有限的时间内完成;
有穷性:一个算法必须在执行了有穷步运算之后终止;
算法按计算时间可分为两类:
答:多项式时间算法的渐进时间复杂度:O(1)O(logn)O(n)O(nlogn)O(n^2)O(n^3),具有此特征的问题称为P为题。有效算法。
指数时间算法的渐进时间复杂度之间的关系为:O(2^n)O(n!) O(n^n),具有此特征的问题称为NP问题。
注:可以带1或2这些数字来判断它们之间的大小关系。
一个好算法的4大特性:
答:正确性、简明性、效率、最优性。
注:正确性:算法的执行结果应当满足预先规定的功能和性能要求。
简明性:算法应思路清晰、层次分明、容易理解。利于编码和调试。
效率:时间代价和空间代价应该尽可能的小。
最优性:算法的执行时间已经到求解该类问题所需要时间的下界。
影响程序运行时间的因素:
答:程序所以来的算法。
问题规模和输入数据。
计算机系统系能。
注:算法运行的时间代价的度量不应依赖于算法运行的软件平台,算法运行的软件包括 操作系统和采用的编程语言及其编译系统。时间代价用执行基本操作(即关键操作) 的次数来度量,这是进行算法分析的基础。
关键操作的概念
答:指算法运行中起主要作用且花费最多时间的操作。
简述分治法是怎样的一种算法设计策略:
答:将一个问题分解为若干个规模较小的子问题,且这些子问题互相独立且与原问题类型相同,递归地处理这些子问题,直到这些子问题的规模小到可以直接求解,然后将各个子问题的解合并得到原问题的解。
注:一个问题可以用分治法求解的三要素:问题能够按某种方式分解成若干个规模较小、相互独立且与原问题类型相同的子问题;问题足够小时可以直接求解;能够将子问题的解组合成原问题的解。
迭代法 也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。unction MULT(X,Y,n){X和Y为2个小于n的整数,返回结果为X和Y的乘积XYif(n = 1)
return(X * Y)
else{
A = X的左边n/2位B = X的右边n/2位C = Y的左边n/2位D = Y的右边n/2位l = MULT(A, C, n/2)
m2 = MULT(A-B, D-C, n/2)
m3 = MULT(B, D, n/2)
S = S * (m1左移2n位 + (m1 + m2 + m3)左移n位 + m3)
return(S)
}
} //MULT
9.2循环体育比赛日程表制订
设有n=2k个运动员要进行兵乓球循环赛。现在要设计一个满足以下要求的比赛日程表:
(1)每个选手必须与其他n-1个选手各赛一次;
(2)每个选手一天只能赛一次;
(3)循环赛一共进行n-1天。
按分治策略,将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。递归地用对选手进行分割,直到只剩下2个选手时,比赛日程表的制定就变得很简单。这时只要让这2个选手进行比赛就可以了。
依此思想容易将这个比赛日程表推广到具有任意多个选手的情形。下表是8个选手的日程安排表。
9.3距离最近的两个点问题
10.贪心法的基本思想
答:把求解的问题分成若干个子问题对每一子问题求解,得到子问题的局部最优解。把子问题的解局部最优解合成原来解问题的一个解。
它采用逐步构
文档评论(0)