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

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

一、选择题

1.一个.java文件中可以有()个public类。

A.一个B.两个C.多个D.零个

2.一个算法应该是()

A.程序B.问题求解步骤的描述

C.要满足五个基本特性D.A和C

3.用计算机无法解决“打印所有素数”的问题,其原因是解决该问题的算法违背了算法特征中的()A.唯一性B.有穷性C.有0个或多个输入D.有输出

4.某校有6位学生参加学生会主席竞选,得票数依次为130,20,98,15,67,3。若采用冒泡排序算法对其进行排序,则完成第二遍时的结果是()

A.3,15,130,20,98,67B.3,15,20,130,98,67

C.3,15,20,67,130,98 D.3,15,20,67,98,130

5.下列关于算法的描述,正确的是()

A.一个算法的执行步骤可以是无限的B.一个完整的算法必须有输出

C.算法只能用流程图表示D.一个完整的算法至少有一个输入

6.Java Application源程序的主类是指包含有()方法的类。

A、main方法

B、toString方法

C、init方法

D、actionPerfromed方法

7.找出满足各位数字之和等于5的所有三位数可采用的算法思路是()

A.分治法B.减治法C.蛮力法D.变治法

8.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。

A、import java.awt.* ;

B、import java.applet.Applet ;

C、import java.io.* ;

D、import java.awt.Graphics ;

9.计算某球队平均年龄的部分算法流程图如图所示,其中:c用来记录已输入球员的人数,sum用来计算有效数据之和,d用来存储从键盘输入的球员年龄值,输入0时表示输入结束。

图中空白处理框①和②处应填入的是()

A.①sum ←sum + d B.①sum ←sum + c

②c ←c + 1②c ←c + 1

C.①sum ←sum + d D.①sum ←sum + c

②d ←d + 1 ②d ←d + 1

10.报名参加冬季越野赛跑的某班5位学生的学号是:5,8,11,33,45。利用折半查找,查找学号为33号学生的过程中,依次被访问到的学号是()

A.5,11,33 B.8,33 C.11,45,33 D.11,33

11.表达式(short)8/9.2*5的值的类型为

A.short B.int C.double D.float

12.设x为int型变量,则执行一下语句段后,x的值为

x=10;

x+=x-=x-x;

A.10 B.20 C.40 D.30

13.下列代码的执行结果是

public class StringTest{

public static void main(String args[]){

int a=4,b=6,c=8;

String s=”abc”;

System.out.println(a+b+s+c);

System.out.printin(); }

}

A.ababcc B.464688 C.46abc8 D.10abc8

14.下列程序段执行后t3的结果是

int t1 = 2, t2 = 3, t3;

t3=t1

A.2 B.4 C.5 D.6

15.要计算当0〈x〈10时,y=x,应当使用的语句是

A.if(0

16.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下,

第一趟:2,12,16,88,5,10

第二趟:2,5,16,88,12,10

第三趟:2,5,10,88,12,16

则采用的排序方法是()

A.冒泡排序B.合并排序C.快速排序D.选择排序

17.类与对象的关系是()

A.建筑图纸和建筑物的关系B.汽车与发动机的关系

C.人与黑人的关系D.没有关系

18.JA V A语言二维数组定义中,第二维的长度( )

A.可以不相等B.必须相等

C.高维数组长度与低维数组长度相同D.固定长度

19.算法必须具备()这三个特性。

A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性

C.确定性、有穷性、稳定性D.易读性、稳定性、安全性

20.如下图所示,该流程图所表示的算法违背了算法的有穷性特征,下列修改方法中,可以改正该错误的是()

A.将①处改为i ←0 B.将②处改为s ≥0 ?

C.将③处改为i ←i-2 D.将④处改为s ←s-i

二、填空题

1.一个显而易见的事实是:大部分算法的执行时间随着输入量的增加而增大。

2.算法是求解某一问题所使用的一系列清晰的指令。

3.算法分析时间效率模型的基本数学公式是:T(n) ≈C op C(n)。

4.算法设计技术是用算法解题的一般性方法,用于解决不同计算领域的多种问题。

5.三个渐进符号:O 、?和?。

6.效率分析框架主要关心一个算法的基本操作次数的增长次数,并把它作为算法效率的主要指标。7.Java源程序的文件名和程序中定义的主类名应保持一致,包括字母大小写的匹配。

8.算法中常见的问题类型包括:排序、查找、字符串处理和组合问题等。

9.类中的构造方法是一个特殊的方法,其名称与类名相同。

10.面向对象程序设计语言中的3个重要特性分别是封装、继承和多态。

11.Java源程序文件的扩展名为java ,编译生成的字节码文件的扩展名为class 。

12.大多数算法的效率可以分为常数、对数、线性、平方、立方和指数等。

三、简答题

1.什么是算法?算法的五个重要特征是什么?

答:算法是求解某一问题所使用的一系列清晰的指令。

答:

(1)输入:有零个或多个由外部提供的量作为算法的输入.

(2)输出:算法产生至少一个量作为输出.

(3)确定性:组成算法的每条指令是清晰的,无歧义的.

(4)有限性:在执行了有穷步骤后运算终止.

(5)可行性:运算都是基本运算,原理上能在有限时间内完成.

2.请简述蛮力算法的优点?

答:

蛮力算法是一种简单直接地解决问题的方法。蛮力法具有如下优点:(1)应用范围广;(2)不受实例规模的限制;(3)当要解决的问题实例不多,设计更高效算法的代价太大时可选用;(4)对解决一些小规模的问题实例仍然有效;(5)可作为衡量其他算法的参照物。

3.算法设计与分析过程的典型步骤都包括哪些?

答:

(1)了解问题的内容

(2)了解计算设备的性能

(3)在精确解法和近似解法之间选择

(4)确定适当的数据结构

(5)算法设计技术

(6)详细表述算法的方法

(7)证明算法的正确性

(8)分析算法

(9)为算法写代码

4.请简述分治法的基本思路?

答:

将规模为N的问题分解为k个规模较小的子问题,使这些子问题相互独立可分别求解,再将k个子问题的解合并成原问题的解。如子问题的规模仍很大,则反复分解直到问题小到可直接求解为止。

在分治法中,子问题的解法通常与原问题相同,自然导致递归过程。

5.请简述减治法的基本思路?

答:

减治技术利用了一个问题给定实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,既可以从顶至底(递归地),也可以从底至顶(非递归地)来运用该关系。

减治法有三种主要的变种:

?减常数(如1)::每此迭代规模减小n→n-1

?减因子(如1/2):每此迭代规模减半n→n/2

?减可变规模:每此迭代减小的规模不同

6.请简述递归算法设计的基本思路?

答:

递归的执行过程由分解过程和求值过程两部分构成。

实际上, 递归思路是把一个不能或不好直接求解的“大问题”转化成一个或几个“小问题”来解决,再把这些“小问题”进一步分解成更小的“小问题”来解决,如此分解,直至每个“小问题”都可以直接解决(此时分解到递归出口)。

但递归分解不是随意的分解,递归分解要保证“大问题”与“小问题”相似,即求解过程与环境都相似。并且有一个分解的终点。从而使问题可解。

7.请简述变治法的基本思路?

答:

变治法的技术基于变换思想。变治法分为两个阶段的工作:首先在“变”的阶段,出于这样或那样的原因,将问题的实例变得更容易求解;然后是“治”的阶段,对问题的实例进行求解。

根据对问题实例的变换方式不同,变治法有三种主要的类型:

(1)实例化简——变换为同样问题的一个更简单或者更方便的实例;

(2)改变表现——变换为同样实力的不同表现;

(3)问题化简——变换为另一个问题的实例,这种问题的算法是已知的。

8.请简述时空权衡法的基本思路?

答:

时空权衡法的基本思路是对问题的部分或全部输入做预处理,然后对得到的额外信息使用额外的存储空间来存储。通过实现更快或更方便的数据存取,以加速后面问题的求解来提高算法的效率。

四、算法实现题

1.对于任意非负整数n,计算阶乘函数F(n) = n!的值。因为当n ≥1时,n!= 1×2×3×……×(n-1)×n = (n-1)!×n。并且根据定义,0!= 1,所以可以使用下面的递归算法计算n!:F(n) = F(n-1) ×n。

请编写Java应用程序,由键盘输入n的值,在屏幕上输出计算的n!的结果。

import java.io.*;

public class FN

{

static long f(int n)

{

long r = 1;

if(n != 0)

r = n * f(n-1);

return r;

}

public static void main(String args[]) throws IOException

{

//输入N的值

byte[] buf = new byte[10];

System.out.println("请输入一个整数:");

System.in.read(buf);

String str=new String(buf);

int n=Integer.parseInt(str.trim());

//计算N!的值

long result = f(n);

//输出结果

System.out.println(n + "!=" + result);

}

}

2.斐波那契数列:0,1,1,2,3,5,8,13,21,34,……

这个数列可以用一个简单的递推式和两个初始条件来定义:

当n > 1时,F(n) = F(n-1) + F(n-2)

F(0) = 0,F(1) = 1

请编写Java应用程序,由键盘输入n的值代表要生成斐波那契数列的项数,在屏幕上输出n项斐波那契数列。import java.io.*;

public class Fb{

/*斐波那契数列算法*/

int f(int n){

int r;

if(n <= 1)

r = n;

else

r = f(n-1) + f(n-2);

return r;

}

public static void main(String args[]) throws IOException{

System.out.println("请输入所求斐波那契数列的项数:");

byte buf[] = new byte[20];

System.in.read(buf);

String t1 = new String(buf);

int n = Integer.parseInt(t1.trim());

Fb f1 = new Fb();

int b;

System.out.println("输出包含" + n + "项的斐波那契数列:");

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

{

b = f1.f(i);

System.out.print(b + " ");

}

System.out.println();

}

}

3.编写基于Java语言的选择排序算法。

/***

* 功能:该算法用选择排序对给定的数组排序

* 输入:一个乱序的整数数组a[ ]

* 输出:升序排列的整数数组a[ ]

***/

public void selectionSort (int a[ ])

{

int temp,min;

for(int i=0;i

{

min = i;

for(int j=i+1;j

if(a[min] > a[j])

min = j;

temp = a[i];

a[i] = a[min];

a[min] = temp;

}

}

4.编写基于Java语言的冒泡排序算法。

/***

* 功能:该算法用冒泡排序对给定的数组排序

* 输入:一个乱序的整数数组a[ ]

* 输出:升序排列的整数数组a[ ]

***/

public void bubbleSort(int a[ ])

{

int temp;

for(int i=0;i

for(int j=0;j

if(a[j]>a[j+1])

{

temp = a[j+1];

a[j+1] = a[j];

a[j] = temp;

}

}

5.编写基于Java语言的顺序查找算法。

/***

* 功能:该算法实现顺序查找功能

* 输入:一个整数数组a[ ]和一个要查找的键值k

* 输出:如果在数组中找到k,则返回对应数组元素的下标;如果在数组中找不到k,则返回-1 ***/

public int seqSearch(int a[ ],int k)

{

int i = 0;

while((i < a.length ) && ( a[i] != k ))

i = i + 1;

if( i < a.length)

return i;

else

return -1;

}

6.编写基于Java语言的折半查找算法。

/***

* 功能:该算法实现折半查找功能

* 输入:一个已经按照升序排列好的整数数组a[ ]和一个要查找的键值k

* 输出:如果在数组中找到k,则返回对应数组元素的下标;如果在数组中找不到k,则返回-1 ***/

public int binarySearch(int a[ ], int k)

{

int low = 0;

int upper = a.length - 1;

while(low <= upper)

{

int mid = (low+upper) / 2;

if(k == a[mid])

return mid;

else

if(des < a[mid])

upper = mid - 1;

else

low = mid + 1;

}

return -1;

}

7.编写基于Java语言的字符串匹配算法。

/***

* 功能:该算法实现字符串匹配功能

* 输入:一个n个字符的字符串str代表一段文本

一个m个字符的字符串key代表一个模式

* 输出:如果查找成功的话,返回文本的第一个匹配字符串中第一个字符的位置,否则返回-1

***/

public int stringMatch(String str,String key)

{

int j;

int n = str.length();

int m = key.length();

for(int i = 0; i <= (n - m); i++)

{

j = 0;

while((j < m) && (key.charAt(j) == str.charAt(i+j)))

{

j = j + 1;

System.out.println(i + "," + j);

if(j == m)

return i;

}

}

return -1;

}

8.编写基于Java语言的直接插入排序算法。

/***

* 功能:该算法用直接插入排序对给定的数组排序

* 输入:一个乱序的整数数组a[ ]

* 输出:升序排列的整数数组a[ ]

***/

public void insertSort (int a[ ])

{

int temp,i,j;

for(i=1;i

{

temp=a[i];

j=i-1;

while(j>=0 && a[j]>=temp)

{

a[j+1]=a[j];

j--;

}

a[j+1]=temp;

}

}

算法设计与分析考试题及答案

算法设计与分析考试题 及答案 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性 有穷性 可行性 0个或多个输入 一个或多个输出 2.算法的复杂性有时间复杂性 空间复杂性之分,衡量一个算法好坏的标准是 时间复杂度高低 3.某一问题可用动态规划算法求解的显着特征是 该问题具有最优子结构性质 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y 的一个最长公共子序列{BABCD}或{CABCD}或{CADCD } 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解 6.动态规划算法的基本思想是将待求解问题分解成若干_子问题 ,先求解_子问题 ,然后从这些子问题 的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法 背包问题的回溯算法所需的计算时间为o(n*2n ) ,用动态规划算法所需的计算时间为o(min{nc,2n }) 9.动态规划算法的两个基本要素是最优子结构 _和重叠子问题 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;②构造最优值的递归关系表达式; ③最优值的算法描述;④构造最优解; 2. 流水作业调度问题的johnson 算法的思想。 ①令N 1={i|a i =b i };②将N 1中作业按a i 的非减序排序得到N 1’,将N 2中作业按b i 的非增序排序得到N 2’;③N 1’中作业接N 2’中作业就构成了满足Johnson 法则的最优调度。 3. 若n=4,在机器M1和M2上加工作业i 所需的时间分别为a i 和b i ,且 (a 1,a 2,a 3,a 4)=(4,5,12,10),(b 1,b 2,b 3,b 4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N 1’={1,3}, N 2’={4,2}; 最优值为:38 4. 使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为: 该问题的最优值为:16 最优解为:(1,1,0) 5. 设S={X 1,X 2,···,X n }是严格递增的有序集,利用二叉树的结点来存储S 中的元素,在表示S 的二叉搜索树中搜索一个元素X ,返回的结果有两种情形,(1)在二叉搜索树的内结点中找到X=X i ,其概率为b i 。(2)在二叉搜索树的叶结点中确定X ∈(X i ,X i+1),其概率为a i 。在表示S 的二叉搜索树T 中,设存储元素X i 的结点深度为C i ;叶结点(X i ,X i+1)的结点深度为d i ,则二叉搜索树T 的平均路长p 为多少假设二叉搜索树T[i][j]={X i ,X i+1,···,X j }最优值为m[i][j],W[i][j]= a i-1+b i +···+b j +a j ,则m[i][j](1<=i<=j<=n)递归关系表达式为什么 .二叉树T 的平均路长P=∑=+n i 1 Ci)(1*bi +∑=n j 0 dj *aj

算法分析与设计试卷

《算法分析与设计》试卷(A) (时间90分钟满分100分) 一、填空题(30分,每题2分)。 1.最长公共子序列算法利用的算法是( B )。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法2.在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( B ). A.回溯法 B.分支限界法 C.回溯法和分支限界法 D.回溯法求解子集树问题 3.实现最大子段和利用的算法是( B )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法4..广度优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法5.衡量一个算法好坏的标准是( C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 6.Strassen矩阵乘法是利用( A)实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 7. 使用分治法求解不需要满足的条件是( A )。 A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并 D 原问题和子问题使用相同的方法解 8.用动态规划算法解决最大字段和问题,其时间复杂性为( B ). A.logn B.n C.n2 D.nlogn 9.解决活动安排问题,最好用( B )算法 A.分治 B.贪心 C.动态规划 D.穷举 10.下面哪种函数是回溯法中为避免无效搜索采取的策略( B ) A.递归函数 B.剪枝函数C。随机数函数 D.搜索函数11. 从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( C )之外都是最常见的方式. A.队列式分支限界法 B.优先队列式分支限界法 C.栈式分支限界法 D.FIFO分支限界法 12. .回溯算法和分支限界法的问题的解空间树不会是( D ). A.有序树 B.子集树 C.排列树 D.无序树 13.优先队列式分支限界法选取扩展结点的原则是( C )。 A、先进先出 B、后进先出 C、结点的优先级 D、随机14.下面是贪心算法的基本要素的是( C )。 A、重叠子问题 B、构造最优解 C、贪心选择性质 D、定义最优解15.回溯法在解空间树T上的搜索方式是( A ). A.深度优先 B.广度优先 C.最小耗费优先 D.活结点优先 二、填空题(20分,每空1分)。 1.算法由若干条指令组成的又穷序列,且满足输入、输出、 确定性和有限性四个特性。 2.分支限界法的两种搜索方式有队列式(FIFO)分支限界法、优先队列式分支限界法,用一个队列来存储结点的表叫活节点表。

2015年算法分析与设计期末考试试卷B卷

西南交通大学2015 — 2016学年第(一)学期考试试卷 课程代码 3244152课程名称 算法分析与设计 考试时间 120分钟 阅卷教师签字: __________________________________ 填空题(每空1分,共15分) 1、 程序是 (1) 用某种程序设计语言的具体实现。 2、 矩阵连乘问题的算法可由 (2) 设计实现。 3、 从分治法的一般设计模式可以看出,用它设计出的程序一般是 (3) 4、 大整数乘积算法是用 (4) 来设计的。 5、 贪心算法总是做出在当前看来 (5) 的选择。也就是说贪心算法并不从整体最优 考虑,它所做出的选择只是在某种意义上的 (6) o 6、 回溯法是一种既带有 (7) 又带有 (8) 的搜索算法。 7、 平衡二叉树对于查找算法而言是一种变治策略,属于变治思想中的 (9) 类型 8、 在忽略常数因子的情况下,0、门和0三个符号中, (10) 提供了算法运行时 间的一个上界。 9、 算法的“确定性”指的是组成算法的每条 (11) 是清晰的,无歧义的。 10、 冋题的(12) 是该冋题可用动态规划算法或贪心算法求解的关键特征。 11、 算法就是一组有穷 (13),它们规定了解决某一特定类型问题的 (14) o 12、 变治思想有三种主要的类型:实例化简,改变表现, (15) o 、 ___________________________________________________________________________________ L 线订装封密 线订装封密 、 __________________ 二 线订装封密 级班 选择题(每题2分,共20 分)

计算机算法设计与分析期末考试复习题

1、二分搜索算法是利用( A )实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 2、下列不是动态规划算法基本步骤的是( A )。 A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解 3、最大效益优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 4、最长公共子序列算法利用的算法是( B )。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 5. 回溯法解TSP问题时的解空间树是( A )。 A、子集树 B、排列树 C、深度优先生成树 D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 7、衡量一个算法好坏的标准是(C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 8、以下不可以使用分治法求解的是(D )。 A 棋盘覆盖问题 B 选择问题 C 归并排序 D 0/1背包问题 9. 实现循环赛日程表利用的算法是( A )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 10、实现最长公共子序列利用的算法是( B )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法11.下面不是分支界限法搜索方式的是( D )。 A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先 12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 13. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。 A、重叠子问题 B、最优子结构性质 C、贪心选择性质 D、定义最优解14.广度优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 15.背包问题的贪心算法所需的计算时间为( B )。

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。 2.算法的复杂性有_____________和___________之分,衡量一个算法 好坏的标准是______________________。 3.某一问题可用动态规划算法求解的显著特征是 ____________________________________。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。 6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为_____________。 8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。 9.动态规划算法的两个基本要素是___________和___________。 10.二分搜索算法是利用_______________实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 2.流水作业调度问题的johnson算法的思想。

算法设计与分析试卷A及答案

考试课程: 班级: 姓名: 学号: ------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------

考试课程: 班级: 姓名: 学号: ------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------

参考答案 一、填空 1、空间复杂度 时间复杂度 2、回溯法 3、递归算法 4、渐进确界或紧致界 5、原问题的较小模式 递归技术 6、问题的计算复杂性分析有一个共同的客观尺度 7、②③④① 8、问题的最优解包含其子问题的最优解 9、局部最优 10、正确的 三、简答题 1、高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需要几周时间的培训就可以胜任程序员的工作; 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高; 高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可植性好、重用率高; 把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短,程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。 2、 ①不能保证最后求得的解是最佳的;即多半是近似解。(少数问题除外) ②策略容易发现(关键:提取清楚问题中的维度), 而且运用简单,被广泛运用。 ③策略多样,结果也多样。 ④算法实现过程中,通常用到辅助算法:排序 3、解:① 因为:;01 -10n n )1-10n n (lim 22 2=+-+→∞n n 由渐近表达式的定义易知: 1-10n n 2 2+是n ;的渐近表达式。 ② 因为:;0n 1/ 5/n 1414)n 1/ 5/n 14(lim 22=++-++∞→n 由渐近表达式的定义易知: 14是14+5/n+1/ n 2的渐近表达式。 4、 找出最优解的性质,并刻划其结构特征。 递归地定义最优值。 以自底向上的方式计算出最优值。 根据计算最优值时得到的信息,构造最优解。 四、算法设计题 1、按照单位效益从大到小依次排列这7个物品为:FBGDECA 。将它们的序号分别记为1~7。则可生产如下的状态空间搜索树。其中各个节点处的限界函数值通过如下方式求得:【排序1分】 5x =6x =7x =

(完整版)算法设计与分析期末考试卷及答案a

一.填空题(每空 2 分,共30分) 1.算法的时间复杂性指算法中的执行次数。 2.在忽略常数因子的情况下,O、和三个符号中,提供了算法运行时间的一个上界。 3.设D n表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入 I 出现的概率,则算法的平均情况下时间复杂性A(n)= 。 4.分治算法的时间复杂性常常满足如下形式的递归方程: f (n) d , n n0 f(n) af(n/c) g(n) , n n0 其中,g(n)表示。 5. 分治算法的基本步骤包括。6.回溯算法的基本思想是。 7.动态规划和分治法在分解子问题方面的不同点是。 8.贪心算法中每次做出的贪心选择都是最优选择。 9.PQ 式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级 10.选择排序、插入排序和归并排序算法中,算法是分治算法。 11.随机算法的一个基本特征是对于同一组输入,不同的运行可能得到的结果。12. 对于下面的确定性快速排序算法,只要在步骤3 前加入随机 化步骤,就可得到一个随机化快速排序算法,该随机化步骤的功能是。 算法QUICKSORT 输入:n 个元素的数组A[1..n] 。 输出:按非降序排列的数组 A 中的元素

1. quicksort(1, n) end QUICKSORT _ _ 过程 quicksort(A, low, high) _ _ // 对 A[low..high] 中的元素按非降序排序。 _ 号 学 2. if low

5.《算法设计与分析》试题库

《算法分析与设计》试题库 (一) 一、 选择题 1.应用Johnson 法则的流水作业调度采用的算法是(D ) A. 贪心算法 B.分支限界法 C.分治法 B. void hanoi(int n, int A, int B, int C) { if (n > 0) { hanoi(n-1, A, C, B); move( n, a,b); hanoi(n-1, C, B, A); 2.Hanoi 塔问题如下图所示。现要求将塔座A 上的的所有圆盘移到塔座 B 上,并 D.动态规划算法

3. 动态规划算法的基本要素为(C) A. 最优子结构性质与贪心选择性质 B ?重叠子问题性质与贪心选择性质 C.最优子结构性质与重叠子问题性质

D.预排序与递归调用 4. 算法分析中,记号0表示(B),记号0表示(A),记号。表示(D) A. 渐进下界 B. 渐进上界 C. 非紧上界 D. 紧渐进界 E. 非紧下界 5. 以下关于渐进记号的性质是正确的有:(A) A. f(n) - P(g(n)),g(n) - 心(h(n))二f(n) - P(h(n)) B. f(n) =0(g(n)),g(n) =0(h(n))二h(n) =0(f(n)) C. O(f(n ))+0(g( n)) = O(mi n{f(n ),g( n)}) D. f(n) =0(g(n)) = g(n) -0(f (n)) 6?能采用贪心算法求最优解的问题,一般具有的重要性质为:(A) A. 最优子结构性质与贪心选择性质 B ?重叠子问题性质与贪心选择性质 C. 最优子结构性质与重叠子问题性质 D. 预排序与递归调用 7.回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。 A. 广度优先 B.活结点优先 C.扩展结点优先 D.深度优先

算法设计与分析试卷(2010)

内部资料,转载请注明出处,谢谢合作。 算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案 一、简要回答下列问题: 1.算法重要特性是什么? 1.确定性、可行性、输入、输出、有穷性 2. 2.算法分析的目的是什么? 2.分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。 3. 3.算法的时间复杂性与问题的什么因素相关? 3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。 4.算法的渐进时间复杂性的含义? 4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。 5.最坏情况下的时间复杂性和平均时间复杂性有什么不同? 5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的 算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度: W(n) = max{ T(n,I) } , I∈Dn 平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和: A(n) =∑P(I)T(n,I) I∈Dn 6.简述二分检索(折半查找)算法的基本过程。 6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较, 如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试 信息与计算科学专业年级《算法设计与分析》试题 考试类型:开卷试卷类型:C卷考试时量:120分钟 题号一二三四五总分统分人 得分 阅卷人 复查人 一、填空题(每小题3 分,共计30 分) 1、用O、Ω与θ表示函数f与g之间得关系______________________________。 2、算法得时间复杂性为,则算法得时间复杂性得阶为__________________________。 3、快速排序算法得性能取决于______________________________。 4、算法就是_______________________________________________________。 5、在对问题得解空间树进行搜索得方法中,一个活结点最多有一次机会成为活结点得就是_________________________。 6、在算法得三种情况下得复杂性中,可操作性最好且最有实际价值得就是_____情况下得时间复杂性。 7、大Ω符号用来描述增长率得下限,这个下限得阶越___________,结果就越有价值。。 8、____________________________就是问题能用动态规划算法求解得前提。 9、贪心选择性质就是指____________________________________________________________________________________________________________________。 10、回溯法在问题得解空间树中,按______________策略,从根结点出发搜索解空间树。 二、简答题(每小题10分,共计30分) 1、试述回溯法得基本思想及用回溯法解题得步骤。 2、有8个作业{1,2,…,8}要在由2台机器M1与M2组成得流水线上完成加工。每个作业加工得顺序都就是先在M1上加工,然后在M2上加工。M1与M2加工作业i所需得时间分别为: M110 2 8 12 6 9414

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

一、选择题 1.一个.java文件中可以有()个public类。 A.一个B.两个C.多个D.零个 2.一个算法应该是() A.程序B.问题求解步骤的描述 C.要满足五个基本特性D.A和C 3.用计算机无法解决“打印所有素数”的问题,其原因是解决该问题的算法违背了算法特征中的()A.唯一性B.有穷性C.有0个或多个输入D.有输出 4.某校有6位学生参加学生会主席竞选,得票数依次为130,20,98,15,67,3。若采用冒泡排序算法对其进行排序,则完成第二遍时的结果是() A.3,15,130,20,98,67B.3,15,20,130,98,67 C.3,15,20,67,130,98 D.3,15,20,67,98,130 5.下列关于算法的描述,正确的是() A.一个算法的执行步骤可以是无限的B.一个完整的算法必须有输出 C.算法只能用流程图表示D.一个完整的算法至少有一个输入 6.Java Application源程序的主类是指包含有()方法的类。 A、main方法 B、toString方法 C、init方法 D、actionPerfromed方法 7.找出满足各位数字之和等于5的所有三位数可采用的算法思路是() A.分治法B.减治法C.蛮力法D.变治法 8.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。 A、import java.awt.* ; B、import java.applet.Applet ; C、import java.io.* ; D、import java.awt.Graphics ; 9.计算某球队平均年龄的部分算法流程图如图所示,其中:c用来记录已输入球员的人数,sum用来计算有效数据之和,d用来存储从键盘输入的球员年龄值,输入0时表示输入结束。

算法分析与设计复习题及答案

算法分析与设计复习题及答案一、单选题 1.D 2.B 3.C 4.D 5.D 6.D 7.C 8.D 9.B 10.C 11.D 12.B 13.D 14.C 15.C 16.D 17.D 18.D 19.D 20.C 1.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 2.根据执行算法的计算机指令体系结构,算法可以分为()。 A精确算法与近似算法B串行算法语并行算法 C稳定算法与不稳定算法D32位算法与64位算法 3.具有10个节点的完全二叉树的高度是()。 A6B5C3D 2 4.下列函数关系随着输入量增大增加最快的是()。 Alog2n B n2 C 2n D n! 5.下列程序段的S执行的次数为( )。 for i ←0 to n-1 do for j ←0 to i-1 do s //某种基本操作 A.n2 B n2/2 C n*(n+1) D n(n+1)/2 6.Fibonacci数列的第十项为( )。 A 3 B 13 C 21 D 34 7.4个盘子的汉诺塔,至少要执行移动操作的次数为( )。 A 11次 B 13次 C 15次 D 17次 8.下列序列不是堆的是()。 A 99,85,98,77,80,60,82,40,22,10,66 B 99,98,85,82,80,77,66,60,40,22,10 C 10,22,40,60,66,77,80,82,85,98,99 D 99,85,40,77,80,60,66,98,82,10,22 9.Strassen矩阵乘法的算法复杂度为()。 AΘ(n3)BΘ(n2.807) CΘ(n2) DΘ(n) 10.集合A的幂集是()。 A.A中所有元素的集合 B. A的子集合 C. A 的所有子集合的集合 D. 空集 11.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 12.从排序过程是否完全在内存中显示,排序问题可以分为()。 A稳定排序与不稳定排序B内排序与外排序 C直接排序与间接排序D主排序与辅助排序 13.下列()不是衡量算法的标准。 A时间效率B空间效率 C问题难度D适应能力 14.对于根树,出度为零的节点为()。 A0节点B根节点C叶节点D分支节点 15.对完全二叉树自顶向下,从左向右给节点编号,节点编号为10的父节点编号为()。 A0B2C4D6 16.下列程序段的算法时间的复杂度为()。 for i ←0 to n do for j ←0 to m do

算法分析与设计期末考试试卷b卷

西南交通大学2015-2016学年第(一)学期考试试卷 课程代码 3244152 课程名称 算法分析与设计 考试时间 120 分钟 阅卷教师签字: 一、 填空题(每空1分,共15分) 1、 程序是 (1) 用某种程序设计语言的具体实现。 2、 矩阵连乘问题的算法可由 (2) 设计实现。 3、 从分治法的一般设计模式可以看出,用它设计出的程序一般是 (3) 。 4、 大整数乘积算法是用 (4) 来设计的。 5、 贪心算法总是做出在当前看来 (5) 的选择。也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的 (6) 。 6、 回溯法是一种既带有 (7) 又带有 (8) 的搜索算法。 7、 平衡二叉树对于查找算法而言是一种变治策略,属于变治思想中的 (9) 类型。 8、 在忽略常数因子的情况下,O 、Ω和Θ三个符号中, (10) 提供了算法运行时间的一个上界。 9、 算法的“确定性”指的是组成算法的每条 (11) 是清晰的,无歧义的。 10、 问题的 (12) 是该问题可用动态规划算法或贪心算法求解的关键特征。 11、 算法就是一组有穷 (13) ,它们规定了解决某一特定类型问题的 (14) 。 12、 变治思想有三种主要的类型:实例化简,改变表现, (15) 。 二、 选择题(每题2分,共20分) 1、 二分搜索算法是利用( )实现的算法。 A 、分治策略 B 、动态规划法 C 、贪心法 D 、回溯法 2、 衡量一个算法好坏的标准是( )。 A 、运行速度快 B 、占用空间少 C 、 时间复杂度低 D 、代码短 3、 能采用贪心算法求最优解的问题,一般具有的重要性质为:( ) A. 最优子结构性质与贪心选择性质 B .重叠子问题性质与贪心选择性质 C .最优子结构性质与重叠子问题性质 D. 预排序与递归调用 4、 常见的两种分支限界法为( ) 班 级 学 号 姓 名 密封装订线 密封装订线 密封装订线

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

《算法分析与设计》期末复习题 一、选择题 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 A.n+8 B.n+6 C.n+7 D.n+5 4.设问题规模为N时,某递归算法的时间复杂度记为T(N),已知T(1)=1, T(N)=2T(N/2)+N/2,用O表示的时间复杂度为( C )。 A.O(logN) B.O(N) C.O(NlogN) D.O(N2logN) 5.直接或间接调用自身的算法称为( B )。 A.贪心算法 B.递归算法 C.迭代算法 D.回溯法 6.Fibonacci数列中,第4个和第11个数分别是( D )。 A.5,89 B.3,89 C.5,144 D.3,144 7.在有8个顶点的凸多边形的三角剖分中,恰有( B )。

A.6条弦和7个三角形 B.5条弦和6个三角形 C.6条弦和6个三角形 D.5条弦和5个三角形 8.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。 A.重叠子问题 B.最优子结构性质 C.贪心选择性质 D.定义最优解 9.下列哪个问题不用贪心法求解( C )。 A.哈夫曼编码问题 B.单源最短路径问题 C.最大团问题 D.最小生成树问题 10.下列算法中通常以自底向上的方式求解最优解的是( B )。 A.备忘录法 B.动态规划法 C.贪心法 D.回溯法 11.下列算法中不能解决0/1背包问题的是( A )。 A.贪心法 B.动态规划 C.回溯法 D.分支限界法 12.下列哪个问题可以用贪心算法求解( D )。 A.LCS问题 B.批处理作业问题 C.0-1背包问题 D.哈夫曼编码问题 13.用回溯法求解最优装载问题时,若待选物品为m种,则该问题的解空间树的结点 个数为()。 A.m! B.2m+1 C.2m+1-1 D.2m 14.二分搜索算法是利用( A )实现的算法。 A.分治策略 B.动态规划法 C.贪心法 D.回溯法 15.下列不是动态规划算法基本步骤的是( B )。P44 A.找出最优解的性质 B.构造最优解 C.算出最优解(应该是最优值) D.定义最优解

算法设计分析期末考试试卷

2011 年 12 月考试算法设计分析第一次作业 一、单项选择题(本大题共 30 分,共 15 小题,每小题 2 分) 1. 算法分析的两个主要方面是()。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂度和程序复杂度 2. 计算机算法指的是()。 A. 计算方法 B. 排序方法 C. 解决问题的方法和过程 D. 调度方法 3. 多阶段决策问题就是要在可以选择的那些策略中间选取一个()策略使在预定的标准下达到最好的效果。 A. 最优 B. 最差 C. 平衡 D. 任意 4. 根据排序元素所在位置的不同,排序分()。 A. 内排序和外排序 B. 首排序和尾排序 C. 顺序排序和逆序排序 D. 堆排序和栈排序 5. 算法必须具备输入、输出和()等 5 个特性。 A. 可执行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 6. 与分治法不同的是,适合于用动态规划求解的问题() A. 经分解得到子问题往往不是互相独立的 B. 经分解得到子问题往往是互相独立的 C. 经分解得到子问题往往是互相交叉的 D. 经分解得到子问题往往是任意的 7. 二分搜索算法的基本思想是将 n 个元素分成个数大致相同

的两半,取 an/2与 x 进行比较:如果(),则只要在数组 a 的左半部继续搜索 x。 A. x<an/2 B. xan/2 C. xan/2 D. xan/2 8. 活动安排问题就是在所给的活动集合中,选出()的相容活子集。 A. 最小 B. 任意 C. 最大 D. 一个 9. 在对问题的解空间树进行搜索的方法中一个活结点最多有一次机会成为活结点的是() A. 回溯法 B. 分支限界法 C. 回溯法和分支限界法 D. 回溯法求解子集树问题 10. 适用动态规划的问题必须满足() A. 最优化原理 B. 无前效性 C. 最优化原理和后效性 D. 最优化原理和无后效性 11. 算法的每种运算必须要有确切的定义不能有二义性以下符合算法确定性运算的是() A. 5/0 B. 将 6 或 7 与 x 相加 C. 未赋值变量参与运算 D. fnfn-12F110n 为自然数 12.直接或间接的调用自身的算法称为()。 A.贪心算法 B. 递归算法 C. 迭代算法 D. 动态规划算法 13.二分查找只适用()存储结构。A. 堆B. 顺序C. 任意顺序D. 栈 14.实现快速排序算法如下:

算法设计与分析期末试题-考试版(汇编)

1、用计算机求解问题的步骤:1、问题分析 2、数学模型建立 3、算法设计与选择 4、算法指标 5、算法分析 6、算法实现 7、程序调试 8、结果整理文档编制 2、算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程 3、算法的三要素 1、操作 2、控制结构 3、数据结构 算法具有以下5个属性: 有穷性: 确定性: 可行性: 输入: 输出: 算法设计的质量指标: 正确性:算法应满足具体问题的需求; 可读性:算法应该好读,以有利于读者对程序的理解; 健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。 效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般这两者与问题的规模有

关。 复杂性的渐近性态 设T(N)是算法A的复杂性函数,使得当N→∞时有: (T(N)-T’(N))/T(N) → 0 那么,我们就说T’(N)是T(N)当N→∞时的渐近性态,或叫T’(N)为算法A当N→∞的渐近复杂性而与T(N)相区别。 P = NP 经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法 分而治之法 1、基本思想 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以

便各个击破,分而治之。 分治法所能解决的问题一般具有以下几个特征: (1)该问题的规模缩小到一定的程度就可以容易地解决; (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解; (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。 3、分治法的基本步骤 (1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; (2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题; (3)合并:将各个子问题的解合并为原问题的解。 递归: 直接或间接的调用自身的算法,叫做递归算法。 1·期盘覆盖 用分治策略,可以设计解棋盘问题的一个简捷的算法。 当k>0时,将2^k * 2^k棋盘分割为4个2^(k-1) * 2^(k-1)子棋盘 特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个L型骨牌覆盖这3个较小的棋盘的汇合处,如下图所示,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将原问题化为4个较小规模的棋盘覆盖问题。递归的使用这种分割,直至棋盘简化为1x1棋盘。

算法设计与分析试题与答案

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性: 确定性,有穷性,可行性,0个或多个输入,一个或多个输出。 2.算法的复杂性有时间复杂性和空间复杂性之分,衡量一个算法好坏的标准是时间复杂度高低。 3.某一问题可用动态规划算法求解的显著特征是该问题具有最优子结构性质。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X和Y的一个最长公共子序列{BABCD}或{CABCD}或{CADCD}。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解。 6.动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法。 8.0-1背包问题的回溯算法所需的计算时间为o(n*2n) ,用动态规划算法所需的计算时间为o(min{nc,2n})。 9.动态规划算法的两个基本要素是最优子结构和重叠子问题。 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;

②构造最优值的递归关系表达式; ③最优值的算法描述; ④构造最优解; 2.流水作业调度问题的johnson算法的思想。 ②N1={i|ai=bi}; ②将N1中作业按ai的非减序排序得到N1’,将N2中作业按bi的非增序排序得到N2’; ③N1’中作业接N2’中作业就构成了满足Johnson法则的最优调度。 3.若n=4,在机器M1和M2上加工作业i所需的时间分别为ai和bi,且 (a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N1’={1,3}, N2’={4,2}; 最优值为:38 4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3 的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为:

相关文档
最新文档