《算法分析与设计》期末考试复习题纲完整版doc.docx

上传人:b****5 文档编号:27575469 上传时间:2023-07-03 格式:DOCX 页数:85 大小:655.11KB
下载 相关 举报
《算法分析与设计》期末考试复习题纲完整版doc.docx_第1页
第1页 / 共85页
《算法分析与设计》期末考试复习题纲完整版doc.docx_第2页
第2页 / 共85页
《算法分析与设计》期末考试复习题纲完整版doc.docx_第3页
第3页 / 共85页
《算法分析与设计》期末考试复习题纲完整版doc.docx_第4页
第4页 / 共85页
《算法分析与设计》期末考试复习题纲完整版doc.docx_第5页
第5页 / 共85页
点击查看更多>>
下载资源
资源描述

《算法分析与设计》期末考试复习题纲完整版doc.docx

《《算法分析与设计》期末考试复习题纲完整版doc.docx》由会员分享,可在线阅读,更多相关《《算法分析与设计》期末考试复习题纲完整版doc.docx(85页珍藏版)》请在冰豆网上搜索。

《算法分析与设计》期末考试复习题纲完整版doc.docx

《算法分析与设计》期末考试复习题纲完整版doc

WORD格式

 

《算法分析与设计》期末复习题

 

一、选择题

1.

算法必须具备输入、输出和(

D

)等4个特性。

A.可行性和安全

B

.确定性和易读性

C.有穷性和安全

D

.有穷性和确定性

2.

算法分析中,记号

O表示(

B

),记号Ω表示(A

A.渐进下界

B.

渐进上界

C.非紧上界

D.

紧渐进界

3.假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。

在某台计算机上实现并

完成概算法的时间为t秒。

现有另一台计算机,其运行速度为第一台

64倍,那

么在这台新机器上用同一算法在

t秒内能解输入规模为多大的问题?

(B

)解

题方法:

3*2^n*64=3*2^x

n+8

B

n+6

A

D

n+7

n+5

C

4.

设问题规模为

N时,某递归算法的时间复杂度记为

T(N),已知

T

(1)=1,

T(N)=2T(N/2)+N/2,用O表示的时间复杂度为(

C

)。

O(logN)

B

O(N)

A

C.O(NlogN)

D

.O(N2logN)

5.

直接或间接调用自身的算法称为

B

)。

A.贪心算法

B

.递归算法

.迭代算法

D

.回溯法

C

6.

Fibonacci数列中,第4个和第11个数分别是(

D

)。

A.5,89

B

.3,89

C.5,144

D

.3,144

7.

在有8个顶点的凸多边形的三角剖分中,恰有(

B

)。

条弦和

7

个三角形

B

5

条弦和

6

个三角形

A

6

C.6条弦和

6个三角形

D

.5条弦和

5个三角形

8.

一个问题可用动态规划算法或贪心算法求解的关键特征是问题

B)。

的(

A.重叠子问题

B

.最优子结构性质

.贪心选择性质

D

.定义最优解

C

9.

下列哪个问题不用贪心法求解

C

)。

.哈夫曼编码问题

B

.单源最短路径问

A

.最大团问题

D

.最小生成树问题

C

10.

下列算法中通常以自底向上的方式求解最优解的是(

B)。

A.备忘录法

B

.动态规划法

C.贪心法

D

.回溯法

11.下列算法中不能解决0/1背包问题的是(A)。

A.贪心法B.动态规划

C.回溯法D.分支限界法

 

专业资料整理

WORD格式

 

12.下列哪个问题可以用贪心算法求解(D)。

 

1

 

专业资料整理

WORD格式

 

A.LCS问题

B

.批处理作业问题

C.0-1背包问题

D

.哈夫曼编码问题

13.

用回溯法求解最优装载问题时,若待选物品

m种,则该问题的解空间树的结

个数为(

)。

A.m!

B.2m+1

C.2m+1-1

D.2m

14.

二分搜索算法是利用(

A)实现的算法。

.分治策略

B

.动态规划法

A

C.贪心法

D

.回溯法

15.

下列不是动态规划算法基本步骤的是(

B

)。

P44

A.找出最优解的性质

B

.构造最优解

C.算出最优解(应该是最优值)

D.定义最优解

16.

下面问题(B

)不能使用贪心法解

决。

A.单源最短路径问题

B

.N皇后问题

C.最小花费生成树问题

D

.背包问题

17.使用二分搜索算法在n个有序元素表中搜索一个特定元素,在最好情况和最坏情况

下搜索的时间复杂性分别为(

A

)。

P17

A.O

(1),O(logn)

B

.O(n),O(logn)

C.O

(1),O(nlogn)

D

.O(n),O(nlogn)

18.

优先队列式分支限界法选取扩展结点的原则

C

)。

P162

是(

A.先进先出

B

.后进先

C.结点的优先级

D

.随机

19.

下面不是分支界限法搜索方式的是(

D

)。

P161

.广度优先

B

.最小耗费优先

A

.深度优

C.最大效益优先

D

20.

分支限界法解最大团问题时,活结点表的组织形式是(

B)。

.最小堆

B

.最大堆

A

C.栈

D

.数组

21.

下列关于计算机算法的描述不正确的是

)。

CP1

A.算法是指解决问题的一种方法或一个过程

B.算法是若干指令的有穷序列

C.算法必须要有输入和输出

D.算法是编程的思想

22.

下列关于凸多边形最优三角剖分问题描述不正确的

A)。

是(

A.n+1个矩阵连乘的完全加括号和

n个点的凸多边形的三角剖分对

B.在有n个顶点的凸多边形的三角剖分中,恰

n-3条弦

C.该问题可以用动态规划法来求解

D.在有n个顶点的凸多边形的三角剖分中,恰

n-2个三角形

23.

动态规划法求解问题的基本步骤不包括(

C

)。

P44

A.递归地定义最优值

B.分析最优解的性质,并刻画其结构特征

C.根据计算最优值时得到的信息,构造最优解(可以省去的)

D.以自底向上的方式计算出最优值

 

专业资料整理

WORD格式

 

24.分治法所能解决的问题应具有的关键特征是(C)。

P16

 

2

 

专业资料整理

WORD格式

 

A.该问题的规模缩小到一定的程度就可以容易地解决

B.该问题可以分解为若干个规模较小的相同问题

C.利用该问题分解出的子问题的解可以合并为该问题的解

D.该问题所分解出的各个子问题是相互独立的

下列关于回溯法的描述不正确的是

25.(D)。

P114

A.回溯法也称为试探法

B.回溯法有“通用解题法”之称

C.回溯法是一种能避免不必要搜索的穷举式搜索法

D.用回溯法对解空间作深度优先搜索时只能用递归方法实现

26.常见的两种分支限界法为(D

)。

P161

A.广度优先分支限界法与深度优先分支限界法;

B.队列式(FIFO)分支限界法与堆栈式分支限界法;

C.排列树法与子集树法;

D.队列式(FIFO)分支限界法与优先队列式分支限界法;

 

二、填空题

f(n)=3

n2)

1.

n

2+10的渐近性态f(n)=O(

g(n)=10log3n的渐近性态g(n)=O(

n

)。

2.

一个“好”的算法应具有正确性、

可读性

健壮性

和高效率和

低存储量需求等特性。

3.

算法的时间复杂性函数表示

C=F(N,I,A)

,分析算法复杂性的目的在于比较

求解同意问题的两个不同算法的效

的效率。

4.

构成递归式的两个基本要素

递归的边界条件

和递归的定义

5.

单源最短路径问题可用

分支限界法和

贪心算法

求解。

6.

用分治法实现快速排序算法时,最好情况下的时间复杂性为

O(nlogn)

,最坏情况下

的时间复杂性为O(n^2)

,该算法所需的时间与

运行时间

划分

两方面因素有关。

P26

7.

0-1背包问题的解空间树为

完全二叉树;n后问题的解空间树为

排列树;

8.

常见的分支限界法有队列式

FIFO)分支限界法和优先队列式分支限界

法。

9.

回溯法搜索解空间树时常用的两种剪枝函

数为

约束函数

和剪枝函数。

10.

分支限界法解最大团问题时,活结点表的组织形式

最大堆

;分支限界法

解单源最短路径问题时,活结点表的组织形式是

最小堆。

 

三、算法填空题

 

1.递归求解Hanoi塔问题/阶乘问题。

例1:

阶乘函数n!

P12

阶乘的非递归方式定义:

n!

n

(n

1)

(n2)

21

试写出阶乖的递归式及算法。

递归式为:

1

n0

边界条件

n!

n(n

1)!

n

0

 

专业资料整理

WORD格式

 

3

 

专业资料整理

WORD格式

 

递归方程

递归算法:

intfactorial(intn)

{if(n==0)return1;递归出口

returnn*factorial(n-1);递归调用

}

例2:

用递归技术求解Hanoi塔问题,Hanoi塔的递归算法。

P15

其中Hanoi(intn,inta,intc,intb)表示将塔座A上的n个盘子移至塔座C,以塔座B为辅助。

Move(a,c)表示将塔座a上编号为n的圆盘移至塔座c上。

 

voidhanoi(intn,inta,intc,intb)

 

{

if(n>0)

 

{

hanoi(n-1,a,b,c);

 

move(a,c);

hanoi(n-1,b,c,a);

}

 

}

 

2.用分治法求解快速排序问题。

 

快速排序算法P25、作业、课件第2章

(2)42页-50页

 

template

 

voidQuickSort(Typea[],intp,intr)

 

{

 

if(p

 

intq=Partition(a,p,r);

 

QuickSort(a,p,q-1);

 

QuickSort(a,q+1,r);

 

}

 

}

 

专业资料整理

WORD格式

 

4

 

专业资料整理

WORD格式

 

Partition函数的具体实现

 

template

 

intPartition(Typea[],intp,intr)

 

{

 

inti=p,j=r+1;

 

Typex=a[p];

 

//将

 

//将>x的元素交换到右边区域

 

while(true){

 

while(a[++i]

 

while(a[--j]>x);

 

if(i>=j)break;

 

Swap(a[i],a[j]);

 

}

 

a[p]=a[j];

 

a[j]=x;

 

returnj;

 

}

 

3.用贪心算法求解最优装载问题。

 

最优装载问题P95课件第4章

(2)第3-8页

 

template

 

voidLoading(intx[],Typew[],Typec,intn)

 

{

 

int*t=newint[n+1];

 

Sort(w,t,n);

 

for(inti=1;i<=n;i++)x[i]=0;

 

for(intj=1;j<=n&&w[t[j]]<=c;j++)

 

{x[t[i]]=1;c-=w[t[j]];}

 

专业资料整理

WORD格式

 

}

 

5

 

专业资料整理

WORD格式

 

4.用回溯法求解0-1背包/批处理作业调度/最大团问题,要会画解空间树。

 

例1:

用回溯法求解0-1背包P133课件第5章

(2)第24-38页

 

template

 

classKnap

 

{

 

private:

 

TypepBound(inti);//计算上界

 

voidBacktrack(inti);

 

Typewc;//背包容量

 

intn;//物品数

 

Typew*w;//物品重量数组

 

Typep*p;//物品价值数组

 

Typewcw;//当前重量

 

Typepcp;//当前价值

 

Typepbestp;//当前最优价值

 

};

 

voidKnap:

:

Backtrack(inti)

 

{if(i>n){bestp=cp;return;}

 

if(cw+w[i]<=c)//进入左子树

 

{cw+=w[i];

 

cp+=p[i];

 

Backtrack(i+1);

 

cw-=w[i];

 

cp-=p[i];}

 

if(Bound(i+1)>bestp)//进入右子树

 

Backtrack(i+1);

 

}

 

TypepKnap:

:

Bound(inti)

 

{

 

Typewcleft=c-cw;//剩余的背包容量

 

Typepb=cp;//b为当前价值

 

//依次装入单位重量价值高的整个物品

 

专业资料整理

WORD格式

 

6

 

专业资料整理

WORD格式

 

while(i<=n&&w[i]<=cleft)

 

{cleft-=w[i];b+=p[i];i++;}

 

if(i<=n)//装入物品的一部分

 

b+=p[i]*cleft/w[i];

 

returnb;//返回上界

 

}

 

classObject//物品类

 

{

 

friendintKnapsack(int*,int*,int,int);

 

public:

 

intoperator<(Objecta)const

 

{

 

return(d>=a.d);

 

}

 

intID;//物品编号

 

floatd;//单位重量价值

 

};

 

TypepKnapsack(Typepp[],Typeww[],Typewc,intn)

 

{//为TypepKnapsack初始化

 

TypewW=0;//总重量

 

TypepP=0;//总价值

 

Object*Q=newObject[n];//创建物品数组,下标从0开始

 

for(inti=1;i<=n;i++)//初始物品数组数据

 

{Q[i-1].ID=i;

 

Q[i-1].d=1.0*p[i]/w[i];

 

P+=p[i];W+=w[i];

 

}

 

if(W<=c)//能装入所有物品

 

returnP;

 

if(W<=c)//能装入所有物品

 

returnP;

 

QuickSort(Q,0,n-1);//依物品单位重量价值非增排序

 

专业资料整理

WORD格式

 

7

 

专业资料整理

WORD格式

 

KnapK;

 

K.p=newTypep[n+1];

 

K.w=newTypew[n+1];

 

for(inti=1;i<=n;i++)

 

{K.p[i]=p[Q[i-1].ID];K.w[i]=w[Q[i-1].ID];}

 

K.cp=0;K.cw=0;K.c=c;

 

K.n=n;K.bestp=0;K.Backtrack

(1);

 

delete[]Q;delete[]K.w;

 

delete[]K.p;returnK.bestp;

 

}

 

例2:

批处理作业调度课件第5章

(2)P2-5问题描述,课本P125-127

解空间:

排列树

算法描述:

classFlowshop

 

{

staticint[][]m,//各作业所需的处理时间

[]x,//当前作业调度

[]bestx,//当前最优作业调度

[]f2,//机器2完成处理时间

f1,//机器1完成处理时间

f,//完成时间和

bestf,//当前最优的完成时间和

n;//作业数

staticvoidBacktrack(inti)

 

{

if(i>n)

{for(intj=1;j<=n;j++)bestx[j]=x[j];bestf=f;}

 

else

for(intj=i;j<=n;j++){

f1+=m[x[j]][1];//第j个作业在第一台机器上所需时间

f2[i]=((f2[i-1]>f1)?

f2[i-1]:

f1)+m[x[j]][2];

 

f+=f2[i];

if(f

{Swap(x[i],x[j]);Backtrack(i+1);Swap(x[i],x[j]);}

 

f1-=m[x[j]][1];

f-=f2[i];

}

 

}

 

专业资料整理

WORD格式

 

8

 

专业资料整理

WORD格式

 

例3:

最大团问题,要会画解空间树。

 

classClique

 

{

 

friendintMaxClique(int**,int[],int);

 

public:

 

voidPrint();//输出最优解

 

private:

 

voidBacktrack(inti);

 

int**a;//图G的邻接矩阵,下标从1开始

 

intn;//图G的顶点数

 

int*x;//当前解

 

int*bestx;//当前最优解

 

intcn;//当前团的顶点数

 

intbestn;//当前最大团的顶点数

 

};

 

voidClique:

:

Backtrack(inti)

 

{if(i>n)

 

{for(intj=1;j<=n;j++)bestx[j]=x[j];bestn=c

n;return;}//判断第i个顶点是否与已选顶点都有

边相连

 

intOK=1;

 

for(intj=1;j

i-1],已入选的顶点集

 

if(x[j]&&a[i][j]==0)//i与当前团中的顶点无边相连

 

{OK=0;break;}//只要与当前团中一个顶点无边相连,则中止

 

if(OK)//进入左子树

 

专业资料整理

WORD格式

 

9

 

专业资料整理

WORD格式

 

{x[i]=1;cn++;Backtrack(i+1);x[i]=0;cn--;}

 

if(cn+n-i>bestn)//如有可能在右子树中找到更大的团,则进入右子树

 

{x[i]=0;Backtrack(i+1);}

 

}

 

计算时间:

O(n2n)

 

四、

简答题

1.

请简述使用动态规划算法解题的基本步骤。

P44

动态规划的设计分为以下

4个步骤:

 

(1)找出最优解的性质,并刻划其结构特征。

 

(2)递归地定义最优值。

 

(3)以自底向上的方式计算出最优值。

 

(4)根据计算最优值时得到的信息,构造最优解。

 

2.简述动态规划方法与分治法的异同。

P44

 

相同点:

动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,

 

然后从这些子问题的解得到原问题的解。

 

不同点:

分治法的子问题互相独立且与原问题相同。

与分治法不同的是,适合于动态规划

 

求解的问题,经分解得到的子问题往往不是互相独立的。

也就是各个子问题包含公共的子

 

子问题。

 

3.试比较Prim算法与Kruskal算法的异同。

105-P107

 

相同点:

Prim(普里姆)算法和Kruskal(克鲁斯卡尔)算法都可以看作是应用贪心算法构造最小生成树的例子。

利用了最小生成树性质。

 

不同点:

 

10

 

专业资料整理

WORD格式

 

Prim(普里姆)算法:

在这个过程中选取到的所有边恰好构成G的一棵最小生成树T,T中包

 

含G的n-1条边,且不形成回路。

 

Kruskal(克鲁斯卡尔)算法:

是构造最小

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

当前位置:首页 > 高中教育 > 理化生

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

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