一、简答题
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
1.1什么是算法?什么是程序?他们有什么区别?
算法是指解决问题的一种方法或者一个过程。
程序是算法用某种程序设计语言的具体实现。
程序可以不满足算法的有限性。
1.2算法的特点
确定性:算法的每一种运算必须有确切的定义,无二义性。
有限性:算法中每条指令的执行次数、每条指令的执行时间都是有限的。
输入:有0个或者多个输入。
输出:有1个或者多个输出。
1.3给出算法渐近复杂性的定义
对于T(n),如果存在t(n),当n→∞时,(T(n)-t(n))/T(n)→0,称t(n)是T(n)的渐近形态,或为算法的渐近复杂性。
1.4写出算法的三种时间复杂度并写出数学表述
(1)最坏情况下的时间复杂性
Tmax(n) = max{ T(i) | size(i)=n }
可操作性最好,最有实际价值,本书重点。
(2)最好情况下的时间复杂性
Tmin(n) = min{ T(i) | size(i)=n }
(3)平均情况下的时间复杂
Tavg(n) = ∑ s i z e ( I ) = n P ( I ) T ( I ) \displaystyle\sum_{size(I) = n} P(I)T(I) size(I)=n∑P(I)T(I)
其中 i 是问题规模为 n 的实例,P(I)是实例 I 出现的概率。
2.1 分治法的基本思想
分治法的基本思想:
将一个规模为 n 的问题分解为 k 个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解
2.2分治法的一般算法计算模式(伪代码)
divide-and-conquer(P){
if ( | P | <= n0)
adhoc(P);
divide P into smaller subinstances P1, P2, ..., Pk;
for (i=1, i<=k, i++)
yi=divide-and-conquer (Pi);
return merge(y1, ..., yk);
}