算法分析与设计模拟试题5.docx

上传人:b****6 文档编号:7490385 上传时间:2023-01-24 格式:DOCX 页数:42 大小:39.37KB
下载 相关 举报
算法分析与设计模拟试题5.docx_第1页
第1页 / 共42页
算法分析与设计模拟试题5.docx_第2页
第2页 / 共42页
算法分析与设计模拟试题5.docx_第3页
第3页 / 共42页
算法分析与设计模拟试题5.docx_第4页
第4页 / 共42页
算法分析与设计模拟试题5.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

算法分析与设计模拟试题5.docx

《算法分析与设计模拟试题5.docx》由会员分享,可在线阅读,更多相关《算法分析与设计模拟试题5.docx(42页珍藏版)》请在冰豆网上搜索。

算法分析与设计模拟试题5.docx

算法分析与设计模拟试题5

 

《算法设计与分析》复习题参考答案

 

1.什么是算法?

算法必须满足的五个特性是什么?

算法:

一组有穷的规则,规定了解决某一特定类型问题的一系列运算。

(有限指令的集合,遵循它可以完成一个特定的任务).

必须满足的五个特性是(遵循以下五条准则):

1.有穷(限)性

2.确定性

3.可(能)行性

4.输入(n≥0)

5.输出(n≥1)

 

2.对算法进行分析分哪两个阶段?

各自完成什么任务(分别得到什么结果)?

对一个算法要作出全面的分析可分成两个阶段进行,即:

事前分析和事后测

试。

事前分析求出该算法的一个时间界限函数;

事后测试搜集此算法的执行时间和实际占用空间的统计资料。

 

3.证明:

若f1(n)=O(g1(n))并且f2(n)=O(g2(n)),那么f1(n)+f2(n)=O(max{g1(n),g2(n)}

证明:

根据f1(n)=O(g1(n))可知,存在正常数C1,当n≥n0时,使得|f1(n)|≤C1|g1(n)|;同理,根据f2(n)=O(g2(n))可知,存在正常数C2,当n≥n0时,使得|f2(n)|≤C2|g2(n)|

当n≥n0时,|f1(n)+f2(n)|≤|f1(n)|+|f2(n)|≤C1|g1(n)|+C2|g2(n)|≤C1|gk(n)|+C2|gk(n)|

≤(C1+C2)|gk(n)|,其中gk(n)=max{g1(n),g2(n)},k={1,2}当n≥n0时,取C=(C1+C2),据定义命题得证。

 

4.如果f1(n)=Θ(g1(n))

并且f2(n)=Θ(g2

(n)),下列说法是否正确?

试说明之。

(a)f1(n)+f

2(n)=

Θ(g1(n)+g2(n))

(b)f1(n)+f

2(n)=

Θ(min{g1(n),g

2(n)})

(c)f1(n)+f

2(n)=

Θ(max{g1(n),g

2(n)})

答:

(a)和(c)均正确,(b)错误。

(a)正确可以根据定义直接证得。

2

(b)错误可举反例。

例:

f

1

(n)=2n

,f2(n)=2n

下面证明(c)正确性.

根据上题已经证明

f1(n)+f

2(n)=

O(max{g1(n),g2(n)}),下面只需证明

f1(n)+f2(n)=

Ω(max{g1(n),g2(n)}),即存在正常数

C,使得|f

1(n)+f2(n)|≥

1

2

(n)})

C(max{g(n),g

1

(n)=Θ(g

1

2

(n)=

2

0

时,存在正常

根据f

(n))并且f

Θ(g(n))得到,当n≥n

数C1、C2、C3、C4

C1|g

1

(n)|≤|f1(n)|≤C3|g1(n)|

C

2|g

2

(n)|≤|f2(n)|≤C4|g2(n)|

 

不妨设max{g(n),g(n)}=g

1

(n)

1

2

由于|f1(n)+f

2(n)|≥||f

1(n)|-|f

2(n)||≥|C1|g1(n)|-C3|g2(n)||

=C|max{g1(n),g2(n)}|

取C≥|C1

-C3|的正常数,由定义得

f1(n)+f2(n)=

Ω(max{g1(n),g2(n)})

命题得证。

5.证明|「log2n」|=O(n)

证明:

对于任意的正整数

n,

|「log2n」|≤|log2(n+1)|≤|n+1|≤2|n|

取n0=1,C=2,根据定义知命题成立。

 

6.证明3n「log2n」=O(n2)

证明:

对于任意的正整数n,|3n「log2n」|≤|3n「log2n」|≤3|n2|取n0=1,C=3,根据定义知命题成立。

7.用数学归纳法证明:

当n≥1时,

n

i

n(n1)/2.

i1

n

证明:

当n=1时,

i

1,n(n+1)/2=1,命题成立;

i

1

假设n=k-1时,

n

i

n(n

1)/2成立;(k≥2)

i1

n

n

当n=k时,

i

n(n

1)/2=

ik(k1)/2k=k(k+1)/2

i

1

i

1

综上可知,命题成立。

8.在下列情况下求解递归关系式

g(n)

n足够小

T(n)=

f(n)

2T(n/2)

否则

当①n=2k

g(n)=

O

(1)和f(n)=

O(n);

②n=2k

g(n)=

O

(1)和f(n)=

O

(1)。

解:

T(n)=T(2k)=2T(2k-1)+f(2k)=2(2T(2

k-2)+f(2k-1))+f(2

k)

=2

2T(2k-2)+21f(2k-1)+f(2k)

=⋯⋯

=2

kT

(1)+2k-1f

(2)+2k-2f(22)+⋯+20f(2k)

=2

kg(n)+2k-1f

(2)+2

k-2f(22)+⋯+20f(2k)

①当g(n)=O

(1)和f(n)=O(n)时,

不妨设g(n)=a,f(n)=bn,a,b为正常数。

T(n)=T(2

k)=2ka+2k-1*2b+2k-2*22b+⋯+20*2kb=2ka+kb2k

=an+bnlog2n=O(nlog2n)

②当g(n)=O

(1)和f(n)=O

(1)时,

 

不妨设g(n)=c,f(n)=d,c,d为正常数。

T(n)=T(2k)=c2k+2k-1d+2k-2d+⋯+20d=c2k+d(2k-1)

=(c+d)n-d=

O(n)

9.求解递推关系式:

h

(1)1

1)

1

h(n)

2h(n

解:

构造生成函数

H(x)h

(1)xh

(2)x2

h(k)xk

k

1

H(x)

h

(1)x

h

(2)x2

求解H(x)

2h

(1)x2

2h

(2)x3

2xH(x)

(12x)H(x)xx2

x3

x

(x1)

1x

H(x)

x

2x)(1x)

(1

分解H(x)成幂级数

令H(x)

A

B

则A=-1

B=1

1

x

1

2x

H(x)

1

1

(1xx2

)(12x(2x)2

(2x)3

1

x

12x

(2

1)x

(22

1)x2

(2n

1)xn

k1

(2k

1)xk

所以h(n)

2n

1

 

10.求解递推关系式:

 

解:

 

T11

Tn2Tn12

 

Tn2Tn122(Tn22)222Tn222

22n1T1(2n1

2)3*2n1

2

 

F1

1

11.求解递推关系式:

F2

1

Fn

Fn1

Fn

2(n

2)

解:

以Fn为系数,构成生成函数

F(x)

F(x)F1x

F2x2

xF(x)F1x2

F2x3

x2F(x)F1x3

F2x4

(1xx2)F(x)F1x(F2

F1)x2

(F3

F2

F1)x3

x

F(x)

x

x2

x

A

B

x

1

(x1

5)(x1

5)x15

x15

2

2

2

2

A

1

1

1

B

1

(1

1

2

2

5

5

F(x)

1((

)x(2

2)x2

5

其中

1

5

1

5

2

2

Fn

1(

n

n)

5

Fn

1

1

5

)n

n

5

2

 

12.分治法的三个步骤是什么?

给出使用SPARKS语言描述的分治策略抽象化控制。

答:

分治法的三个步骤是:

①分解②解决③合并用SPARKS语言描述的分治策略抽象化控制为:

ProcedureDANDC(p,q)

Globaln,A(1:

n);integerm,p,q;

IfSMALL(p,q)

Thenreturn(G(p,q))

Elsem←DIVIDE(p,q)

Return(COMBINE(DANDC(p,m),DANDC(m+1,q)))

Endif

EndDANDC

 

13.根据教材中所给出的二分检索策略,写一个二分检索的递归过程。

ProcedureBINSRCH(A,low,high,x,j)

integermid

iflow≤highthen

mid

(low

high)/2

ifx=A(mid)thenj←mid;endif

ifx>A(mid)thenBINSRCH(A,mid+1,high,x,j);endififx

elsej←0;endif

endBINSRCH

 

14.作一个“三分”检索算法。

它首先检查n/3处的元素是否等于某个x的值,然后检查2n/3处的元素;这样,或者找到x,或者把集合缩小到原来的1/3。

分析此算法在各种情况下的计算复杂度。

 

ProcedureThriSearch(A,x,n,j)

integerlow,high,p1,p2

low←1;high←n

whilelow≤highdo

p1

(2low

high)/3;p2

(low

2high)/3

case

:

x=A(p1):

j

:

x=A(p2):

j

:

x

high

:

x>A(p2):

low

:

else:

low

←p1;return

←p2;return

←p1-1

←p2+1

←p1+1;high

 

←p2-1

endcase

repeat

j←0

endThriSearch

 

g(n)

n足够小

T(n)=

f(n)

T(n/3)

否则

g(n)=O

(1)

f(n)=O

(1)

成功:

O

(1),

O(log3(n)),

O(log3(n))

最好,

平均,

最坏

失败:

O(log3(n)),O(log3(n)),O(log3(n))

 

最好,

 

平均,

 

最坏

 

15.对于含有

 

n个内部结点的二元树,证明

 

E=I+2n,其中,E,I

 

分别为外部和

内部路径长度。

证明:

数学归纳法

①当n=1时,易知E=2,I=0,所以E=I+2n成立;

②假设n≤k(k>0)时,E=I+2n成立;

③则当n=k+1时,不妨假定找到某个内结点x为叶结点(根据二元扩展树的定义,一定存在这样的结点x,且设该结点的层数为h),将结点x及其左右子结点(外结点)从原树中摘除,生成新二元扩展树。

此时新二元扩展树内部结

点为k个,则满足Ek=Ik+2k,考察原树的外部路径长度为

Ek+1=Ek-(h-1)+2h,

内部路径长度为I

k+1

=I+(h-1),所以E=I

+2k+h+1=I

+2k+2=I

k+1

+2(k+1),

k

k+1k

k+1

综合①②③知命题成立。

 

16.以比较为基础(基本操作)的分类算法最坏情况的时间下界是什么?

答:

(nlogn)

 

17对线性存储的有序表中元素的以比较为基础的检索算法最坏时间的下界是什么?

简要说明理由。

答:

log(n1)

对线性存储的有序表中元素的以比较为基础的检索算法的执行过程都可以

用二元判定树来描述。

该树的每个内结点表示一次元素比较,因此对检索的最坏情况而言,该树最少含有n个不同的内结点。

检索算法最坏时间不大于该树中由根到一个叶子的最长路径长(树高)。

对有n个结点的二元树其最小树高为log(n1),所以对线性存储的有序表中元素的以比较为基础的检索算法最坏时间的下界是log(n1)。

 

18.简要说明选择问题算法中二次取中值规则的作用。

答:

通过选择划分元素V使其尽量靠近元素集合的中间可以得到一个最坏情况时间复杂度是O(n)的选择算法。

使用二次取中值规则可以选出满足要求的划分元素V。

 

19.给出斯特拉森矩阵乘法算法执行时间的递归关系式,并对其求解计算时间复杂度。

答:

斯特拉森矩阵乘法算法执行时间的递归关系式为:

b

n

2

T(n)=

2

n

2

7T(n/2)an

其中a和b是常数。

求解这个递归式,得

T(n)7[7T(n/4)a(n/2)2]

an2

 

72T(n/4)

an2(17/4)

72[7T(n/8)

a(n/4)2]

an2(1

7/4)

7kT

(1)

an2[1

7/4(7/4)2

...

(7/4)k1]

7k

an2[(7/4)k

1]/(7/41)

(c

1)7k

(c

1)nlog7

O(nlog7)

O(n2.81)

20.通过手算证明(4.9)和(4.10)

式确实能得到C11,C12,C21和C22的正确值。

P=(A+A

)(B

11

+B)

T=(A

11

+A)B

22

11

22

22

12

Q=(A21+A22)B11

U=(A

21-A11)(B11+B12)

R=A(B

12

-B)

V=(A

12

-A

22

)(B

+B)

11

22

21

22

S=A22(B21-B11)

C11=P+S-T+V

=(A11+A22)(B11+B22)+A22(B21-B11)-(A11+A12)B22+(A12-A22)(B21+B22)

=A11B11+A22B11+A11B22+A22B22+A22B21

-A22B11-A11B22-A12B22+A12B21+A12B22-A22B21-A22B22=A11B11+A12B21

=A11B12-A11B22+A11B22+A12B22

=A11B12+A12B22

 

=A21B11+A22B11+A22B21-A22B11

=A21B11+A22B21

C22=P+R-Q+U

=(A11+A22)(B11+B22)+A11(B12+B22)-(A21+A22)B11+(A21-A11)(B11+B12)

=A11B11+A22B11+A11B22+A22B22+A11B12-A11B22-A21B11-A22B11+A21B11+A21B12-A11B11-A11B12

=A22B22+A21B12

 

21.过程MERGESORT的最坏情况时间是O(nlogn),它的最好情况时间是什么?

能说归并分类的时间是Θ(nlogn)吗?

最好情况:

是对有序文件进行排序。

分析:

在此情况下归并的次数不会发生变化----log(n)次

归并中比较的次数会发生变化(两个长n/2序列归并)

最坏情况

 

两个序列交错大小,需要比较n-1次

最好情况

一个序列完全大于/小于另一个序列,比较n/2次差异都是线性的,不改变复杂性的阶

因此最好情况也是nlogn,平均复杂度nlogn。

可以说归并分类的时间是Θ(nlogn)

 

22.写一个“由底向上”的归并分类算法,从而取消对栈空间的利用。

答:

见《数据结构》

算法MPass(R,n,1ength.X)

MP1[初始化]

i

1.

MP2[合并相邻的两个长度为length的子文件]

WHILEi≤n–2*length+1DO

(Merge(R,i,i+length–l,i+2*length–1.X).

i

i+2*length

).

MP3[处理余留的长度小于

2*length

的子文件]

IFi+length–1

 

算法

THENMerge(R,i,i+length–1,n.X)

ELSEFORj=iTOnDOXj←Rj▌

MSort(R,n)//直接两路合并排序算法,X是辅助文件,其记录结构

与R相同

MS1[初始化]

length1.

MS2[交替合并]

WHILElength

(MPass(R,n,length.X).

length2*length

iflength>n

thenFORj=1TOnDORj

elseMPass(X,n,length

length2*length)

endif

 

.R).

 

←Xj

)▌

 

23.什么是约束条件?

什么是可行解?

什么是目标函数?

什么是最优解?

并举例说明。

答:

有一类问题,解由输入的某个子集组成,但是这个子集必须满足某些事先给定的条件。

那些必须满足的条件称为约束条件。

满足约束条件的子集称为可行解。

为了衡量可行解的优劣,事先也给出一定的标准,这些标准一般以函数形式给出,称为目标函数。

使目标函数取极值的可行解称为最优解。

 

26.什么是贪心方法?

给出使用SPARKS语言描述的贪心方法的抽象化控制。

答:

对求取最优解问题,选取一种度量标准,将输入按度量标准排序,并按此序一次输入一个量。

如果这个输入和前面输入产生的在这种度量意义下的部分最优解加在一起产生一个可行解,将其加入形成新的在这种度量意义下的部分最优解;若不能构成一个可行解,则去掉该输入;重复此过程直到将输入枚举完成。

这种能够得到某种度量意义下的最优解的分级处理方法称为贪心方法。

贪心方法的SPARKS语言描述的抽象化控制为:

ProcedureGREEDY(A,n)

soltion

fori1tondo

xSELECT(A)

ifFEASIBLE(soltion,x)

thensoltion

 

UNION(soltion,x)

endif

repeat

return(soltion)

endGREEDY

 

24.①求以下情况背包问题的最优解,n=7,m=15,(p1,.....p7)=(10,5,15,7,6,18,3)

 

和(w1,.....w7)=(2,3,5,7,1,4,1)。

 

②将以上数据情况的背包问题记为I。

设FG(I)是物品按pi的非增次序输

入时由GREEDY-KNAPSACK所生成的解,FO(I)是一个最优解。

问FO(I)/FG(I)是多少?

③当物品按wi的非降次序输入时,重复②的讨论。

 

解:

①按照pi/wi的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1