算法复习材料1教学内容

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

算法复习材料1

算法复习练习题

一.计算题与简答题

1. 用ΘΩO 、、表示函数f 与g 之间的关系。

(1) f(n)=10000n g(n)=n-10000

(2) f(n)=2n g(n)=3n /n

(3) f(n)=n 3log 2n g(n)=n 2log 3n

(4) f(n)=log 2n g(n)=log 3n

(5) f(n)=100n +n 100 g(n)=n!

2.估计下列算法的时间复杂性的阶。

(1)算法A 的时间复杂性为∑==n

i i n g 13)(,

(2)算法B 的时间复杂性为⎩⎨⎧≥+==2,

)2/(81,1)(n n n f n n f

3. 计算下面算法中count=count+1的执行次数

算法1.10 COUNT3

输入:k n 22=,k 为正整数

输出:count=count+1的执行次数

count=0

for i=1 to n

j=2

while j<=n

j=j 2

count=count+1

end while

end for

return count

end COUNT3 4. 下面是冒泡排序的算法,该算法的基本运算是什么?求该算法最坏情况下的

时间复杂性。

算法 BUBBLESORT

输入:正整数n,n 个元素的数组A[1..n]。

输出:按升序排列的数组A[1..n]。

i=n;sorted=false

while i>1 and not sorted

sorted=true

for j=2 to i

if A[j]

A[j]↔A[j-1]

sorted=false

end if

end for

i=i-1

end while

end BUBBLESORT

5.用两种方法证明log n!= (n log n)。

(1)用代数方法

(2)用积分方法

6.求解递推关系式 f(n)=-6f(n-1)-9f(n-2)。

7. 分治算法由哪些基本步骤组成?分治算法的时间复杂性常满足什么样的递归方程,写出该方程的一般形式,并指出其中各参数的意义。

8. 算法有哪五个特性?

9. 什么是最优子结构?

10. 贪心法与动态规划有何根本区别?

11. 设计回溯算法通常包括哪些步骤?

12. 随机算法分成那几类,各有什么特点?

三.算法填空

1. 以下是计算x m的值的过程

power ( x, m )

//计算x m的值并返回。

if m=0 then y=____________

else

y=____________

y=y*y

if m为奇数 then y=x*y

end if

____________

end power

2. 以下是关于矩阵链乘的算法MATCHAIN1和MATCHAIN_PRODUCT

算法 MATCHAIN1

输入:矩阵链长度n, n个矩阵的阶r[1..n+1], 其中r[1..n]为n个矩阵的行数,r[n+1]为第n个矩阵的列数。

输出:n个矩阵相乘的数量乘法的最小次数,最优顺序的信息数组

S[1..n, 1..n]。

for i=1 to n C[i, i]=0 //对角线d0置0

for d=1 to n-1 //逐条计算对角线d0~d n-1

for i=1 to n-d // 计算对角线d d的n-d个元素。

____________

C[i, j]= ∞

for k=i+1 to j

x= ____________

if ____________ then

C[i, j]=x; S[i, j]=k

end if

end for

end for

end for

return C[1, n], S

end MATCHAIN1

根据S中的信息递归确定最优乘法顺序。

算法 MATCHAIN_PRODUCT

输入:矩阵链长度n, n个矩阵M1, M2, …, M n , 最优乘法顺序的信息数组S[1..n, 1..n]。

输出:按最优顺序计算的矩阵链乘积M=M1M2…M n。

M=matchain_product( 1, n )

return M

end MATCHAIN_PRODUCT

过程 matchain_product (i, j)

// 求按最优顺序计算的矩阵链乘积M i M i+1…M j并返回。

if ____________ then return M i

else

A=matchain_product ____________

B=matchain_product ____________

C=multiply( A , B) //计算两个矩阵乘积C=AB。

return C

end if

end matchain_product

3. 以下是迷宫问题的算法

算法 MAZE

输入:正整数m, n,表示迷宫的数组M[0..m+1, 0..n+1] (迷宫数据存于M[1..m,

1..n]中),迷宫的入口位置(ix, iy),出口位置(ox, oy)。

输出:迷宫中入口至出口的一条通路,若无通路,则输出no solution。

M[0, 0..n+1]=M[m+1, 0..n+1]=1

M[0..m+1, 0]=M[0..m+1, n+1]=1 //设置迷宫边界。

tag[1..m, 1..n]=0

为dx[1..4], dy[1..4]置值

flag=false //flag表示是否存在通路。

x=ix; y=iy ; tag[x, y]=1 //进入入口, (x, y)表示当前位置。

i=1; k[i]=0

while ____________ and not flag

相关文档
最新文档