算法总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
填空题
1.算法描述方法:自然语言,流程图,程序设计语言,伪代码
2.算法的5个特性:输入,输出,确定性,有穷性,可行性
3.对程序设计的研究可以分为4个层次:算法、方法学、语言和工具。
4.算法研究的核心问题:时间问题
5.电商中,信息安全是最关键的问题,保证信息安全的一个方法:对需要保密的数据进行加密。
6.算法的有穷性意味着不是所有的计算机程序都是算法。
7.影响算法时间代价的最主要因素是问题规模;运行算法所需要的时间T是问题规模n的函数,记作T(n)。
8.反映算法的运行时间:用算法中基本语句的执行次数来度量算法的工作量。
9.基本语句:是执行次数与整个算法的执行次数成正比的语句,基本语句对算法运行时间的贡献最大,是算法中最重要的操作。
10渐进符号:大O、大八爪鱼、本田
大O:用来描述增长率的上限。当输入规模为n时,算法消耗时间的最大值,这个上限的阶越低,结果就越有价值。T(n)<=c*f(n);O(n2)以n2为上限
大八爪鱼:用来描述增长率的下限,这个下限的阶越高,结果就越有价值。T(n)>=c*g(n);大爪鱼(n2)以n2为下限。
本田:以为着T(n)与f(n)同阶,用来表示算法的精确阶;C1*f(n)>=T(n)>=C2*f(n),则T (n)=本田(f(n));
11.最好最坏和平均情况:当最好情况出现的概率较大的时候,应分析最好情况;分析最差情况的一个好处:在实时系统尤其重要。
12.非递归算法时间复杂性的分析:关键是建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。
找算法中的基本语句:算法中执行次数最多的语句就是基本语句,通常是最内层循环的循环体;用大O
13.递归算法的分析:是一种分而治之的方法;3种技术:猜测技术、拓展递归技术、通用分治递推式。
14.下界:能找到一个尽可能大的函数g(n),使得求解该问题的所有算法都可以在八爪鱼(g(n))的时间内完成,则函数g(n)称为该问题计算复杂性的下界。如果已知一个和下界的效率类型相同的算法,则称该下界是紧密的。
平凡下界:对算法读取所有要处理的元素并对所有的输出进行计数,这种计数方法所产生的是平凡下界;往往过小而失去意义,如TSP问题,因为它还没有找到一个多项式时间算法。
判定树模型:是以棵二叉树;成立,控制转移到该节点的左子树,否则右子树,每一个叶子节点表示问题的一个结果;通常忽略算数运算,只考虑分支执行时的转移次数,最坏情况下的时间复杂性不超树高。
最优算法:优于该问题的所有算法;两个算法最优则比较高阶项系数,系数较小的算法,时间性能优
15.易解问题:存在多项式时间算法的问题(排序问题、查找问题、欧拉回路),
16.难解问题:需要指数时间算法解决的问题
17.把多项式时间复杂性作为易解问题和难解问题的分界线的原因:1)多项式函数与指数函数的增长率有本质的差别,具有多项式时间复杂性的算法是可使用的算法,而具有指数时间复杂性的算法,只有当问题规模足够小时才是可使用的算法。2)计算机性能的提高对多项式时间算法和指数时间算法的影响不同;3)多项式时间复杂性忽略系数,但不影响易和难的问题划分;4)多项式时间复杂性的闭包性、独立性
18.不可解问题:停机问题、计算机病毒检测
19.判定问题:仅仅要求回答yes或no的问题。例如停机问题就是一个判定问题,但是不能用任何计算机算法求解,所以,并不是所有的判定问题都可以在计算机上得到求解;还有个重要特性:虽然在计算上对问题求解是困难的,但在计算上判定一个待定解是否解决了该问题却是简单的,如哈密顿回路,是个难解问题,但是验证却很容易。
简答题
最长公共子序列递推关系式
要找出序列X={x 1, x 2,…, x m }和Y={y 1, y 2,…, y n }的最长公共子序列,可按下述递推方式计算:当x m =y n 时,找出X m -1和Y n -1的最长公共子序列,然后在其尾部加上x m 即可得到X 和Y 的最长公共子序列;当x m ≠y n 时,必须求解两个子问题:找出X m -1和Y 的最长公共子序列以及X m 和Y n -1的最长公共子序列,这两个公共子序列中的较长者即为X 和Y 的最长公共子序列。用L[i][j]表示子序列X i 和Y j 的最长公共子序列的长度,可得如下动态规划函数:
L*0+*0+=L*i+*0+=L*0+*j+=0(1≤i≤m,1≤j≤n) (式6.14)
(式6.15)
N 皇后问题:
由于两个皇后不能位于同一列上,所以,解向量X 必须满足约束条件:X i ≠ X j
由于两个皇后不能位于同一斜线上,所以,解向量X 必须满足约束条件: | i-j | ≠|X i - X j |
蛮力法:即穷举法,时间性能往往最低,典型的指数时间算法一般都是通过蛮力发得到。力是指计算机的计算能力,常常直接基于问题的描述。所依赖的基本技术是扫描技术,采用一定策略将待求解的问题所有元素依次处理一次(遍历[集合、线性表、树、图]),从而找出问题的解。
解决的问题:1)可计算领域的各种问题2)一些较小规模的问题3)一些重要的问题(顺序查找、串匹配、选择排序、气泡排序等,且不受问题规模的限制)4)可作为某类问题时间性能的底限。 TSP 问题:
贪心法实现的主要步骤: 计算题
一、问答题(30分)。
1.什么是最坏情况时间复杂性?什么是平均情况时间复杂性? 答:最坏情况时间复杂性:
平均情况时间复杂性:
I*是DN 中使T(N, I*)达到Tmax(N)的合法输入;P(I)是在算法的应用中出现输入I 的概率 2.什么是递归算法?什么是递归函数? 答:(1)递归算法:直接或间接地调用自身的算法; (2)递归函数:用函数自身给出定义的函数。 3.递归函数的二要素是什么? 答:(1)边界条件(2)递归方程 4.分治法的设计思想是什么?
答:将一个规模为n 的问题分解为k 个规模较小的子问题,这些子问题相互独立且与原问题
),(max max I N T (N)T N D I ∈=),(max 1
I N e t k i i i D I N
∑=∈=),(*1
I N e t k
i i i ∑==)
,(*I N T =∑∈=
N
D I I N T I P (N)T ),()(avg ∑∑∈==N
D I k
i i
i I N e t I P )
,()(1
⎪⎩⎪⎨
⎧>>≠-->>=+--=
1,1,
}
1][j]L[i 1],L[i][j max{1,1,11]1][j L[i L[i][j]j i y x j i y x j i j i