2006-2007学年第二学期《算法设计与分析》 A卷

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、对于下列各组函数,确定f(n) = O(g(n)),或者f(n) =Ω(g(n)),或f(n)=

(g(n))。(15分)

1. f(n)=logn2, g(n)=logn+5

2. f(n)=logn2, g(n) = n

3. f(n) = n, g(n)=log2n

4. f(n)=nlogn+n, g(n)=logn

三、给定如下矩阵连乘问题,用动态规划算法计算最优计算次序及最优值(15

分)。

A1 A2 A3 A4 A5 A6

20×10 10×35 35×15 15×40 40×25 25×30

四、对于数组a[0 : n-1],给定n段合并排序算法如下,建立其计算复杂性递归

表达式并求解(15分)。

Public static void mergesort(int [] a, int left, int right)

{

if(left < right)

{

int j = (int)Math.sqrt(right – left + 1);

if(j > 1)

{

for(int i = 0; i < j; i++)

mergesort(a, left + i*j, left + (i + 1) *j – 1);

mergesort(a, left+j*j, right);

}

mergeall(a, left, right);

}

}

其中,算法mergeall合并n个排好序的数组段。

五、给定图如下,求出最小生成树以及以顶点1为源的单源最短路径。(15分)

六、证明求最大公约数的欧几里得算法的正确性,并分析其算法复杂性。(15分)

int gcd(int a, int b)

{

if(b = = 0)

return a;

return gcd(b, a % b);

}

其中%为求模运算。

七、给定分别有n个元素的两个集合S和T,试设计一个判定S和T是否相等的

蒙特卡罗算法,并分别就相等和不相等(有一个元素不同)两种情形分析算法正确的概率。(15分)

相关文档
最新文档