算法设计与分析 期末试卷 A卷 完整含答案

  • 格式:pdf
  • 大小:317.51 KB
  • 文档页数:10

下载文档原格式

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

装订线

华南农业大学期末考试试卷(A卷) 2012学年第1学期 考试科目:算法设计与分析

考试类型:(闭卷)考试 考试时间:120 分钟

学号姓名年级专业

题号一(20) 二(25) 三(16) 四(24) 五(15) 总分

得分

评阅人

说明:

(1)请勿漏填学号姓名等信息。本试卷仅一份,请将答案直接填于试卷上,莫将试卷当草稿,想好了再写,若空白的位置不够,标注清楚后可以写反面;

(2)答题时,对算法的描述可以采用文字、公式、图、伪代码、实例说明等混合形式。请注意表达应条理清晰,思想简洁,勿长篇累述不得要领。

得分

一、填空题(1~3题每空1分,第4题每空2分,共20分,结果直接填于划线处)

1、化简下面f(n)函数的渐进上界表达式。(5分)

n

n

n

f3

2/

)

(2

1

,则____)

(_________

))

(

(

1

O

n

f

O

3

2

2

)

(

n

n

f,则____)

(_________

))

(

(

2

O

n

f

O

3

3

log

)

(n

n

f ,则____)

(_________

))

(

(

3

O

n

f

O

2

log

4

2

)

(n

n

f ,则____)

(_________

))

(

(

4

O

n

f

O

n

n

f3

log

)

(

5

,则____)

(_________

))

(

(

5

O

n

f

O

参考解答:)

3(

))

(

(

1

n

O

n

f

O ;)

2(

))

(

(

2

n

O

n

f

O ;)

(log

))

(

(

3

n

O

n

f

O ;

)

(

))

(

(2

4

n

O

n

f

O ;)

(

))

(

(

5

n

O

n

f

O 。

2、用大O符号和关于n的渐进函数来表征如下算法Loop1至Loop3的运行时间。(3分)

算法1:O( );

算法2:O( );

1

2

算法3:O( )

参考解答:算法1:)(2n O ;算法2:)(3n O ;算法3:)(4n O 。

3、假设算法A 的计算时间为n n T 2)( ,现在一慢一快的两台计算机上测试算法A ,为解决规模n 的问题慢机运行算法A 花费t 秒,而另一台快机速度是慢机的256倍,则在快机上算法A 同样运行t 秒能解决n1规模,则n1和n 的关系为:n1= ;若算法B 的计算时间为2)(n n T ,其余条件不变,则n1= 。(2分)

参考解答:对算法A ,81

n n ;对算法B ,n n 161 。

4、求最大的i 个数问题:给定n 个不同数的集合S 和正整数i (i<=n ),S 中元素无序,求S 中最大的i 个数且有序输出(按照升序或降序皆可)。有下述多种算法:(10分)

(1)算法A :调用i 次顺序比较查找最大元素的算法findmax ,每调用一次删除此最大的数。 (2)算法B :对S 排序,并输出S 中最大的i 个数。

(3)算法C :对输入集合S 中的n 个数建立一个长度为n 的最大堆,接着反复调用i 次堆的extract_Max 过程。其中extract_Max 过程为堆顶元素删除操作,该过程时间代价为O(logn),而建立一个n 个元素的最大堆过程需要O(n)。

(4)算法D :利用O(n)线性时间的分治算法找第i 大元素x ,然后调用partition 过程对n 个数以x 进行划分,比x 大的i-1个元素被置于x 的右边(即后边),再对这i 个数进行排序。 (5)算法E :先对集合S 的前i 个元素建立一个长度为i 的最小堆,利用extract_Min 过程可得最小堆的堆顶元素为x ,让集合S 的后续n-i 个元素(称当前元素y )逐个去和堆顶元素x 比较,若y>x ,将y 插入堆中并重新整合成最小堆和形成新的堆顶元素x ;否则丢弃y 。当后续n-i 个元素全部比较完毕,则最小堆中的i 个元素即为原序列n 个数中最大的i 个数,最后对这堆中的i 个数调用i 次extract_Min 过程即可有序输出。

请分析A 、B 、C 、D 和E 这五个算法在最坏情况下的渐进时间复杂性(用n 和i 表示,但需化简,即忽略系数且略去低阶项)。

算法A :______)(_________)(O n T A ; 算法B :______)(_________)(O n T B ; 算法C :_____)(_________)(O n T C ; 算法D :______)(_________)(O n T D ;

算法E :_____)(_________)(O n T E 。

参考解答:算法A :

)()(n i O n T A ; )log ()(i n n O n T B 或)log ()(n n O n T B

)log ()(n i n O n T C ,其中建立堆需要)(n O ,i 次堆顶元素删除)log (n i O 。