5由机器语言到高级语言
1 已知程序如下,该程序实现的功能为_____。
- main()
- {
- int i,n;
- long sum = 0, p = 1;
- ...//输入n值的语句,略
- for(i = 1; i <= n; i++)
- {
- p = p * i;
- sum = sum + p;
- }
- ...//输出sum值的语句,略
- }
sum = 1*2*3*...*n
sum = 1!+2!+...+n!
sum = 1+2+3+...+n
sum = 1*2+2*3+(n-1)*n
2 已知程序如下,该程序实现的功能为_____。
- (10) main()
- (20) { int counter;
- (30) ... //输入N值的语句,略
- (40) long product = 1;
- (50) for counter = 1 to N step 2
- (60) { product = product * counter; }
- (70) return product;
- (80) }
product = 1*2*3*...*(N-1)
product = 1+ 2+3+...+ (N-1)
product = 1*3*5*...* (N-1)
product = 1+3+5+...+(N-1)
3 已知程序如下,当程序行(60)执行了3次以后,Product和Counter的值分别为_____。
- (10) main()
- (20) { int counter;
- (30) ... //输入N值的语句,略
- (40) long product = 1;
- (50) for counter = 1 to N step 2
- (60) { product=product*counter; }
- (70) return product;
- (80) }
105,5
15,7
15,5
105,7
解析:错选为15,7。counter = 1时,product = product * counter = 1 * 1 = 1,此时程序行(60)执行1次;counter加2为3,product = product * counter = 1 * 3 = 3,此时程序行(60)执行2次;counter加2为5,product = product * counter = 3 * 5 = 15,此时程序行(60)执行3次;product = 15,counter = 5
4 已知如上多元素变量,已知I=2;J=2;则M[I+1][J+1]的值为_____。
39 11 0 16
5 已知如上多元素变量。
执行下列程序,执行完成后,Sum1和Sum2的值分别为_____。
- (10) int I = 3,J;
- (20) int Sum1=0,Sum2=0;
- (30) For J=1 to 4 Step 1
- (40) { Sum1 = Sum1 + M[I][J];
- (50) Sum2 = Sum2 + M[J][I]; }
576,576 136,175 149,105 105,149
6 已知如上多元素变量。执行下列程序,程序执行完成后,Sum1和Sum2的值分别为_____。
- (10) int J;
- (20) int Sum1=0,Sum2=0;
- (30) For J=1 to 4 Step 1
- (40) { Sum1 = Sum1 + M[J][J];
- (50) Sum2 = Sum2 + M[5-J][J]; }
95,95 95,66 66,95 66,66
7 关于不同抽象层面的计算机,下列说法不正确的是_____。
实际机器层面之上,不同层次的计算机即是指各种层次的软件系统
实际机器层面之上,不同层次的计算机,其本质是为用户提供一个计算机语言,用户可用该语言表达具体的操作需求,同时提供一个编译器将操作需求转换为机器可以执行的程序,最终实现用户的操作需求
不同抽象层次的计算机指的是各种抽象层次的硬件系统,只有硬件计算机才能被称为计算机
上述有不正确的
8 关于计算机语言,下列说法不正确的是_____。
汇编语言和机器语言是以指令为单位来编写程序
高级语言是以语句为单位来编写程序,一条语句相当于若干条指令(或者说一条语句可用若干条指令来实现)
面向对象语言或可视化构造语言是以对象(类)为单位来编写程序,一个对象相当于若干条语句((或者说一个对象可用若干条语句来实现)
上述有不正确的
9 关于计算机语言的编译,下列说法不正确的是_____。
需要“分词”,将其中的常量、变量名和保留字识别出来,并分类及编号
需要识别每一条语句所对应的“模式”。任意语句的常量和变量名被归为“标识符”类别,而标识符与保留字的不同组合关系构成了语句的模式;计算机语言是由有限的语句模式构成的
对每一种模式,都有相应的组合构造方法,即模式可被认为是由原子模式或说基本模式通过组合的方法构造出来的,对原子模式或者基本模式可以事先写好其相应的目标语言的指令或语句
上述有不正确的
10 关于普通计算机语言(或者说程序)的基本构成要素,下列说法最完整的是_____。
常量与变量和表达式
常量与变量、表达式和语句
常量与变量、表达式、语句和函数
都不完整
错选为A
11 关于表达式,下列说法不正确的是_____。
由常量、变量及各种算术运算符构造的表达式,被称为算术表达式,其结果为一数值
由常量、变量和各种比较运算符构造的表达式,被称为比较表达式,其结果只能为逻辑“真”或“假”
由常量、变量和各种逻辑运算符构造的表达式,被称为逻辑表达式,其结果只能为逻辑“真”或“假”
比较表达式中不能含有算术表达式,逻辑表达式中可以含算术表达式
12 已知A=40;B=30;C=100;D=50,计算表达式 (A + (C – B) *3) / D 的值,结果为_____。
5 -5 10 4
13 已知A=40;B=30;C=100;D=50,计算表达式 (A * A - B * B) + D 的值,结果为_____。
70 150 570 750
14 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式 (A > B) and (B < C )的值,结果为_____。
100 30 真 假
15 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式 (A > B +20 ) or (B +60 < C )的值,结果为_____。
100 30 真 假
16 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式C > A +B +D的值,结果为_____。
120 100 真 假
17 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式A + A * 5的值,结果为_____。
400 240 真 假
18 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式A < A * 5的值,结果为_____。
40 200 真 假
19 已知A=40;B=30;C=100;D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。计算表达式(A > B) and (A<=B)的值,结果为_____。
40 200 真 假
20 已知X=21, Y=15, Z=22,计算表达式 ((X>Y) AND (Y>Z)) OR ((X<Z) AND (Y<Z))的值,结果为_____。
真 假 9 4
21 已知程序如下,若X=10, Y=20, Z=30,该程序执行完成后,X的值为_____。
- X = Z + Y;
- If Y < Z {
- X = X – Y; }
- Else{
- X= X – Z; }
- X = X – Y;
- If X < Z { X = Y +20; }
- X = X – Z;
- If X > Y { X = X – Y; }
10 20 30 40
22 已知程序如下,若X=30, Y=30, Z=30该程序执行完成后,X的值为_____。
- X = Z + Y;
- If Y < Z {
- X = X – Y; }
- Else{
- X= X – Z; }
- X = X – Y;
- If X < Z { X = Y +20; }
- X = X – Z;
- If X > Y { X = X – Y; }
10 20 30 40
23 读程序,并回答问题:该程序执行完成后,Sum的值为_____。
- X=1;
- Y=2;
- Sum=0;
- Do { Sum = X+Y;
- X=X+1;
- Y=Y+1;
- } While (Sum<=20);
20 21 19 18
24 读程序,并回答问题:程序行(60)执行了多少次?次数为_____。
- (10) N = 6;
- (20) X = 0;
- (30) Y = 1;
- (40) For I = 1 To N-1 Step 1
- (50) Z = X + Y;
- (60) X = Y;
- (70) Y = Z;
- (80) Next I;
4 5 6 7
25 已知函数Fact的程序如下,Fact(4)的值为_____。
- Long Int Fact(int n)
- { Long Int x;
- If (n > 1)
- { x = Fact(n-1);
- return n*x; }
- else return 1;
- }
10 24 120 15
26 从语言编译角度看计算机语言,下列说法不正确的是_____。
计算机语言就是由标识符和保留字构成的,标识符是可由程序员按规则任意命名的符号,而保留字则是编译器识别语句模式的重要符号
计算机语言定义了基本元素的集合,以及基本元素的组合构造规则,所谓基本元素即是指标识符和保留字,所谓组合构造规则即是指语句的书写模式,即不同标识符和保留字的组合规则
标识符可以是常量、变量名,也可以是函数名;保留字可以是赋值符号如“=”、语句结束符号如“;”、基本运算符号如“+”“-”“*”“/”、程序段落符号如“{ }”等,保留字还可以是其他语句模式的标志性符号
上述有不正确的
27 已知X=21, Y=15, Z=22,计算表达式 ((X>Y) or (Y>Z)) and ((X<Y) or (Y<Z))的值,结果为_____。
10 4 真 假
28 已知X=21, Y=15, Z=22,计算表达式 ((X>Y) AND (Y>Z)) OR ((X<Y) AND (Y<Z))的值,结果为_____。
10 4 真 假
29 读程序,并回答问题:该程序执行完成后,N的值为_____。
- N = 101;
- If N/2 == 0 Then
- N = N/2;
- Else
- N = N * 3 + 1;
- End If
101 55.5 304 167.5
解析:已知N = 101,则N/2 = 50不等于0,不符合If语句的条件,所以进入Else语句,N = N * 3 +1 = 101 * 3 +1 = 304
30 已知程序如下,若X=10, Y=50, Z=30该程序执行完成后,X的值为_____。
- X = Z + Y;
- If Y < Z {
- X = X – Y; }
- Else{
- X= X – Z; }
- X = X – Y;
- If X < Z { X = Y +20; }
- X = X – Z;
- If X > Y { X = X – Y; }
10 20 30 40
31 读程序,并回答问题:该程序执行完成后,X的值为_____。
- X=1;
- Y=2;
- Sum=0;
- Do { Sum = X+Y;
- X=X+1;
- Y=Y+1;
- } While (Sum<=20);
8 9 10 11
32 读程序,并回答问题:该程序执行完成后,Z的值为_____。
- (10) N = 6;
- (20) X = 0;
- (30) Y = 1;
- (40) For I = 1 To N-1 Step 1
- (50) Z = X + Y;
- (60) X = Y;
- (70) Y = Z;
- (80) Next I;
3 5 8 13
33 读程序,并回答问题:该程序执行完成后,K的值为_____。
- (10) K = 0;
- (20) I = 2;
- (30) While(I<=8)
- (40) { K = K + I;
- (50) I = I + 2;}
35 20 36 12
34 读程序,并回答问题:程序行(40)执行了多少次?次数为_____。
- (10) K = 0;
- (20) I = 2;
- (30) While(I<=8)
- (40) { K = K + I;
- (50) I = I + 2;}
2 4 6 8
35 已知函数Fact的程序如下,在执行Fact(5)的过程中,Fact函数被调用的次数为_____。
- Long Int Fact(int n)
- { Long Int x;
- If (n > 1)
- { x = Fact(n-1);
- return n*x; }
- else return 1;
- }
3 4 5 6
错选为4
36 已知函数Fact的程序如下,Fact(4)的值为_____。
- Long Int Fact(int n)
- { Long Int x;
- If (n > 1)
- { x = Fact(n-1);
- return (n+x)*2; }
- else return 1;
- }
14 24 44 64
37 已知如下多元素变量,已知I=2;J=4;则M[I][J]的值为_____。
44 83 22 21
38 已知如下多元素变量,已知I=1;J=1;则M[I+1][J]+2的值为_____。
13 47 8 10
39 已知如下多元素变量。
执行下列程序,执行完成后,Sum1和Sum2的值分别为_____。
- (10) int J;
- (20) int Sum1=0,Sum2=0;
- (30) For J=1 to 4 Step 1
- (40) { Sum1 = Sum1 + M[J][J];
- (50) Sum2 = Sum2 + M[5-J][5-J]; }
95,95 95,66 66,95 66,66
40 关于不同抽象层面的计算机,由低层向应用层(高层)的基本层次划分是_____。
高级语言机器 汇编语言机器
操作系统机器
实际机器
微程序机器
实际机器 微程序机器
操作系统机器
汇编语言机器
高级语言机器
微程序机器实际机器
操作系统机器
汇编语言机器
高级语言机器
上述都不正确
错选为D
41 关于计算机语言,下列说法不正确的是_____。
所有源程序最后都需被转换为汇编语言程序,机器才能够执行
所谓“高级语言”和“低级语言”是指其和机器硬件的相关程度,不涉及机器硬件的语言为高级语言,而与机器硬件相关的语言则为低级语言
低级语言程序执行效率高是因为用低级语言编程时可以充分利用硬件的各种特殊性,而高级语言则只能使用硬件的标准结构
高级语言编程效率高是因为其可用大粒度积木块来构造程序,比一行行语句、一条条指令来编程效率高出很多
错选为C,所有源程序最后都需被转换为机器语言程序,机器才能够执行
42 已知函数Fact的程序如下,在执行Fact(4)的过程中,Fact函数被调用的次数为_____。
- Long Int Fact(int n)
- { Long Int x;
- If (n > 1)
- { x = Fact(n-1);
- return (n+x)*2; }
- else return 1;
- }
3 4 5 6
错选为A,将n=4代入函数,x=Fact(3),调用Fact(3);将n=3代入函数,x=Fact(2),调用Fact(2);将n=2代入函数,x=Fact(1),调用Fact(1);将n=1代入函数,返回1,即x=Fact(1)=1;接着向下执行,返回(n+x)*2=(2+1)*2=6,即x=Fact(2)=6;接着向下执行,返回(n+x)*2=(3+6)*2=18,即x=Fact(3)=18;接着向下执行,返回(n+x)*2=(4+18)*2=44,即Fact(4)=44。具体执行过程可以参考视频“3.9 递归与迭代程序的执行”中“n!”的递归执行过程。在执行Fact(4)的过程中,Fact函数被调用的次数为4
6程序与递归
1 关于程序,下列说法不正确的是_____。
“程序”是由人编写的、以告知计算系统实现人所期望的复杂动作
“程序”可以由系统自动解释执行,也可以由人解释由系统执行
普通人是很难理解“程序”的,其也和“程序”无关;
“程序”几乎和每个人都有关系,如自动售票系统、自动取款机等
2 一般而言,一个较高抽象层次的计算系统是可以这样实现的,即_____。
将较低抽象层次的重复性组合,命名为较高抽象层次的指令
利用较高抽象层次的指令进行复合、抽象与构造,即形成高抽象层次的程序
高抽象层次的程序通过其程序执行机构解释为高抽象层次的指令及其操作次序。
高抽象层次的指令被替换为低抽象层次的程序,再由低抽象层次的程序执行机构解释并执行
上述A-C全部
此处的抽象不包括由常数到V,C的抽象,而是指组合构造上的抽象层次
3 对于计算式 ,其正确的运算组合式(前缀表示法)为_____。
(/ (+ 10 / 20 + 8 4) (+ * 3 6 * 8 2 ))
((10 + (20 / (8 + 4))) / ((3 * 6) + (8 * 2)))
(/ (+ 10 (/ 20 (+ 8 4))) (+ (* 3 6) (* 8 2)))
(/ (/ 20 (+ 10 (+ 8 4))) (* (+ 3 6) (+ 8 2)))
4 已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (* y 2))),问正确使用了newCalc并得到正确结果的为_____。
((newCalc) (4 5)),其结果为50
(newCalc 4),其结果为40
(newCalc 4 5),其结果为50
(newCalc 2 3),其结果为21
5 已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (+ y 1))),问(newCalc (newCalc (newCalc 1 1) (newCalc 1 1)) (newCalc 1 1))的计算结果为_____。
1 64 130 8
6 用条件运算符定义一个过程 。正确的定义为_____。
(define (f x y) (cond ((x>y) (* x x x))
((x=y ) 0)
((x<y ) (* y y y)) ))
(define (f x y) (cond ((> x y ) (* x x x))
((= x y ) 0)
((< x y ) (* y y y)) ))
(define (f x y) (cond ((x>y) (x*x*x))
((x=y ) 0)
((x<y ) (y*y*y)) ))
(define (f x y) (cond ((< x y ) (* x x x))
((= x y ) 0)
((> x y ) (* y y y)) ))
解析:A、条件书写错误,应该用前缀表示法,即运算符在前面 B、此选项正确 C、条件和表达式都书写错误,应该用前缀表示法,而选项中用的是中缀表示法 D、条件书写错误,把x > y和x < y写颠倒了
7 若要表达从1计算到n的运算组合式,(* …(* (* (* (* 1 1) 2) 3) 4) …n)
定义一个过程。正确的定义为_____。
(define (f product counter max-count)
(f (* counter product) (+ counter 1) max-count ))
(define (f product counter max-count)
(cond ((> counter max-count) product)
((<= counter max-count) (f (counter*product) (counter+ 1) max-count )) ))
(define (f product counter max-count)
(cond ((> counter max-count) product)
((<= counter max-count) (f (* counter product) (+ counter 1) max-count )) ))
(define (f product counter max-count)
(cond ((> counter max-count) product)
((<= counter max-count) (f product counter max-count )) ))
8 关于原始递归函数的理解,下列说法不正确的是_____。
A “复合”即是将一组函数 ,
,…,
作为参数代入到另一函数f(
,
,…,
)中,即n个函数
,
,…,
被组合到了一起,是按函数f的形式进行的组合。
B “原始递归”即是要定义h(0),h(1),…,h(n),h(n+1),其中h(0)需要直接给出,而h(n+1)需要用h(n)进行定义,即h(n+1)是将h(n)和n复合在一起。
C 复合是构造新函数的一种手段,原始递归也是构造新函数的一种手段。递归函数是描述程序组合与构造问题的一种数学形式
D 上述说法有不正确的
9 关于“递归”,下列说法不正确的是_____。
“递归”源自于数学上的递推式和数学归纳法
“递归”与递推式一样,都是自递推基础计算起,由前项(第n-1项)计算后项(第n项),直至最终结果的获得
“递归”是自后项(即第n项)向前项(第n-1项)代入,直到递归基础获取结果,再从前项计算后项获取结果,直至最终结果的获得
“递归”是由前n-1项计算第n项的一种方法
10 关于“递归”,下列说法不正确的是_____。
可以利用“递归”进行具有自相似性无限重复事物的定义
可以利用“递归”进行具有自重复性无限重复动作的执行,即“递归计算”或“递归执行”
可以利用“递归”进行具有自相似性无限重复规则的算法的构造
上述说法不全正确
11 关于递归定义的函数,下列说法正确的是_____。
递归定义的函数一定是“递归计算”的
递归定义的函数一定是“迭代计算”的
有些递归定义的函数可以“迭代计算”,有些递归定义的函数则必须“递归计算”
凡是可以“迭代计算”的函数,一定可以“递归计算”,凡是可以“递归计算”的函数,也一定可以“迭代计算”
12 用递归是可以定义语言的。如表述命题逻辑的一种语言可以如下定义:
(1)一个命题是其值为真或假的一个判断语句;
(2)如果X是一个命题,Y也是一个命题,则X and Y,X or Y, not X也是一个命题;
(3)如果X是一个命题,则(X)也是一个命题,括号内的命题运算优先;
(4)命题由以上方式构造。
若X,Y,Z,M等均是一个命题,问不符合上述递归定义的语句是_____。
X
( X and Y not Z)
(X)
((X and Y) or (not Z)) and (not M)
13 递归计算是重要的执行手段。例如一种形式的阿克曼函数如下所示:
任何一个A(n, m)都可以递归地进行计算,例如m=1时,A(n,1)的递归计算过程如下所示:
m=1时,A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2,和A(1,1)=2故A(n,1)=2n
请你按上述方法递归计算m=2时,即A(n,2),并判断计算结果正确的是_____。
A(n, 2) = 2n
A(n, 2) =
A(n, 2) =
A(n, 2) = n+2
解析:B、A(n,2)=A(A(n-1,2),1);
因为A(n,1)=2n,所以上式A(n,2)=2A(n-1,2);
同理可得A(n-1,2)=2A(n-2,2),所以A(n,2)=2^2A(n-2,2);
接着往下递推可得,A(n,2)=2^nA(0,2)=2^n
14 斐波那契数列与阿克曼函数都是递归函数,但它们是不同的,下列说法不正确的是_____。
斐波那契数列是原始递归的,而阿克曼函数不是原始递归的
斐波那契数列可以递推地计算即迭代计算;而阿克曼函数只能递归地计算
阿克曼函数也可如斐波那契数列一样自前项(第n-1项)计算到后项(第n项)
阿克曼函数是双递归函数,不仅函数自身是递归定义的,同时函数的变量也是递归定义的
15 关于“程序”和“递归”的关系,下列说法不正确的是_____。
A “程序”是计算系统体现千变万化功能的一种重要手段:计算系统仅需要实现简单元素以及一个程序执行机构即可。“程序”的基本特征是复合、抽象与构造。而最重要的是,如何解决近乎无限的、具有自相似性的复杂组合的构造问题,这就需要递归和迭代
B 本质上,“程序”就是对简单元素的组合(或称复合);此外,“程序”需要有能力对一些常见的组合A进行命名,并利用该名字参与更为复杂的组合B的构造中,此即为“抽象”;在执行时(或称计算时),再将该组合A替换组合B中的该名字,实现计算并获取结果
C 递归和迭代是解决近乎无限的、重复的、嵌套的组合构造的基本手段,它采用“利用自身定义自身”、“自身调用自身”、“自身用自身来计算”的方法,将程序的复杂组合构造问题以简便的、明确的形式表达出来计算出来
D 上述说法有不正确的
16 f(x)=x,g( ,
,
)=
*(
+1), 其中x,
,
,
均为自然数,新函数h可递归的构造如下:h(0,x) = f(x), 且h(S(n), x) = g(h(n,x),n,x),请按递归式进行计算下列式子,不正确的是_____。
h(1,x) = x
h(2,x) = 2x
h(3,x) = 6x
h(4,x) = 12x
解析:h(0,x) = f(x);h(1,x) =h(S(0), x)=g(h(0,x),0,x)=f(x)=x;
h(2,x) =h(S(1), x)=g(h(1,x),1,x)=h(1,x)*2=2x;
h(3,x) =h(S(2), x)=g(h(2,x),2,x)=h(2,x)*3=6x;
h(4,x) =h(S(3), x)=g(h(3,x),3,x)=h(3,x)*4=24x;
17关于计算系统与程序,下列说法正确的是_____。
只有用计算机语言编写出来的代码才是程序,其他都不能称其为程序
构造计算系统是不需要程序的,程序对构造计算系统没有什么帮助
任何系统都需要程序,只是这个程序是由人来执行还是由机器自动执行,可以由机器自动执行程序的系统被称为计算系统
程序是用户表达的随使用者目的不同而千变万化的复杂动作,不是使用者实现的而是需要计算系统事先完成的
18一般而言,设计和实现一个计算系统,需要设计和实现_____。
基本动作和程序
基本动作和控制基本动作的指令
基本动作、控制基本动作的指令和一个程序执行机构
基本动作、控制基本动作的指令和程序
19熟悉下列运算组合式(前缀表达式),其中结果为56的是_____。
(* 7 (+ 5 2))
(* (+ 5 3) (+ 5 2))
(+ 20 (+ 6 6))
(- (* 9 8) (- 20 2))
20请用define运算,定义一个过程实现计算 ,其正确定义的过程为_____。
(define cube a (* a a a))
(define (cube x) (* x x x))
(define (cube a (* a a a)))
(define (cube a) (* x x x)))
21已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (* y 2))),问newCalc可以完成的计算功能为_____。
(x+1)+2y
(x+1)*2y
(x+1) +(y+2)
(x+1)*(y+2)
22已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (+ y 1))),问(newCalc (newCalc (newCalc 1 1) 2) 3)的计算结果为_____
6 13 64 24
23已知一个运算被定义为(define (firstCalc x) (* x x)),在其基础上进一步定义新运算secondCalc为 +
+
,下列运算组合式书写正确的是_____。
(define secondCalc (+ (firstCalc x) (firstCalc y) (firstCalc z)))
(define (secondCalc x y z) (+ firstCalc x y z))
(define (secondCalc x y z) (+ (firstCalc x) (firstCalc y) (firstCalc z)))
(define secondCalc x y z (+ (firstCalc x) (firstCalc y) (firstCalc z)))
24已知一个运算被定义为(define (firstCalc x) (* x x)),在其基础上进一步定义新运算为(define (secondCalc x) (firstCalc (firstCalc (firstCalc x)))),问secondCalc表达的运算功能为_____。
+
+
25用条件运算符定义一个过程 。正确的定义为_____。
(define (f n) (cond ((n<2 ) 1)
((n>1) (n* f(n-1)) )
(define (f n) (cond ((< n 2 ) 1)
((> n 1 ) (* n (f (- n 1)))) ))
(define (f n) (cond ((n<2) 1)
((n>1 ) (n* f(n-1) )) ))
(define (f n) (cond ((< n 2 ) 1)
((> n 1 ) (* n (f n-1))) ))
26递归计算是重要的执行手段。例如一种形式的阿克曼函数如下所示:
任何一个A(m, n)都可以递归地进行计算,例如A(1,2)的递归计算过程如下所示:
A(1,2) = A(0,A(1,1)) = A(0, A(0,A(1,0))) = A(0, A(0,A(0,1)))=A(0,A(0,2))=A(0,3)=4。
请你按上述方法递归计算下列项,并判断,计算结果正确的是_____。
A A(1, 8) = 9
B A(2, 0) = 2
C A(2, 1) = 4
D A(1, n) = n+2
解析:B、A(2,0)=A(1,1)=3
C、A(2,1)=A(1,A(2,0))=A(1,A(1,1))=A(1,A(0,A(1,0))) =A(1,A(0,A(0,1)))=A(1,A(0,2))=A(1,3)=A(0,A(1,2)) =A(0,A(0,A(1,1)))=A(0,A(0,A(0,A(1,0)))) =A(0,A(0,A(0,A(0,1)))=A(0,A(0,A(0,2)))=A(0,A(0,3)) =A(0,4)=5
D、A(1,2)=A(0,A(1,1))=A(0,A(0,A(1,0)))=A(0,A(0,A(0,1)))=A(0,A(0,2))=A(0,3)=4;
A(1,3)=A(0,A(1,2))=A(0…代入前式计算过程)=A(0,4)=4+1=5;
... A(1,n)=A(0,A(1,n-1))=A(0.…代入前式计算过程)=A(0,n+1)=n+2;
A、A(1,n)=n+2,所以A(1,8)=10
27按原始递归的定义,h是由f和g递归地构造出来的。假设已知h(n) = n!,请给出构造h的f和g的函数。正确的是_____。
f()是常数为1的函数;g( ,
) =
*
f()是常数为1的函数;g(,
) =
* (
+1)
f()是常数为1的函数;g( ,
) = (
+1)*(
+1)
f()是常数为1的函数;g( ) = n * (
)
解析:当f()是常数为1的函数,若g(x1,x2) = x1* x2,则h(1) = g(h(0), 0) = 1 * 0 = 0 ≠ 1!; 若g(x1,x2) = x1* (x2+1),则h(n) = n!;
若g(x1,x2) = (x1+1)*(x2+1),则h(1) = g(h(0), 0) = (1 + 1) * (0 + 1) = 2 ≠ 1!;
若g(x1) = n * (x1),则h(1) = g(h(0), 0) = 0 * 1 = 0 ≠ 1!
28已知f(x)=x,g( ,
,
)=
+
+
, 其中x,
,
,
均为自然数,新函数h可递归的构造如下:h(0,x) = f(x), 且h(S(n), x) = g(h(n,x),n,x),请按递归式进行计算下列式子,正确的是_____。
h(1,x) = x
h(2,x) = 2x
h(3,x) = 3x+1
h(4,x) = 5x+6
29已知f(x)=5,g( ,
,
)=
, 其中x,
,
,
均为自然数,新函数h可递归的构造如下:h(0,x) = f(x), 且h(S(n), x) = g(h(n,x),n,x),请按递归式进行计算下列式子,正确的是_____。
h(1,x) = 5
h(2,x) = 5+x
h(3,x) = 5+2x
h(4,x) = 5+3x
30关于程序,下列说法不正确的是_____。
程序的基本特征是复合、抽象与构造。程序就是通过组合、抽象、再组合等构造出来的
复合就是对简单元素的各种组合,即将一个(些)元素代入到另一个(些)元素中
抽象是对各种元素的组合进行命名,并将该名字用于更复杂的组合构造中
上述说法有不正确的
错选为B
7算法-程序与计算系统的灵魂
1 关于数据结构,下列说法不正确的是______________?
数据结构由逻辑结构、存储结构及运算3部分组成
存储结构定义了数据在存储器中的存储方式
向量使用顺序存储结构,并借助元素在存储器中的相对位置来表示数据元素的逻辑关系
在树结构中,指针用于表达元素之间的逻辑关系——父子关系,每个元素的指针指向其父节点,因此一个元素可以有一个或多个指针
解析:数据结构是一类定性的数学模型,它由数据的逻辑结构、数据的存储结构或称物理结构及其运算3部分组成。数据的逻辑结构描述数据之间的逻辑关系。数据的存储结构是指在反映数据逻辑关系的原则下,数据在存储器中的存储方式。
56 关于数据结构,下列说法不正确的是_____。
数据结构是问题域数学模型中各种数据的存储结构
数据结构是将逻辑上有一定语义关系的数据,转换成计算机可以存储和处理的变量,便于算法和程序进行处理
数据结构是将具有一定语义关系的变量进行命名,以便隐藏数据结构内部的操作细节,便于算法按逻辑语义通过操控该名字来操控该数据结构
上述说法有不正确的
错选为A
数据通常要存储在存储器中,存储器是按地址访问的存储单元的集合,因此存储器可被认为是按线性方式组织数据。数组是高级语言中经常使用的一种数据结构,其按照不同的下标可访问数组的不同的元素。如上图所示:
2 关于数组和存储器,下列说法不正确的是_____。
A 和存储器一样,数组是按线性方式组织数据
B 和存储器一样,一维数组是按线性方式组织数据,一个数据元素需要一个存储单元来存储,一个下标即相当于一个存储单元的地址
C 和存储器一样,一维数组是按线性方式组织数据,一个数据元素需要一个或多个存储单元来存储,一个下标即相当于一个存储单元的地址
D 和存储器一样,一维数组是按线性方式组织数据,一个数据元素需要一个或多个存储单元来存储,一个下标即相当于一个或多个存储单元的地址
解析:数组是按照线性方式组织数据的,当一个数据元素需要多个存储单元存储时,一个下标代表的就是多个存储单元的地址,所以此选项的说法不准确
3请参照上图的左子图和右子图来观察,右子图的二维数组是按左图的形式存储在存储器中。则D[i][j]元素,与对应存储单元的存储地址的转换关系正确的为_____。
D[i][j]元素的存储地址=数组的起始地址+((i-1)*每行的列数+j-1)*单一元素占用存储单元的数目
D[i][j]元素的存储地址=数组的起始地址+(i-1)*每行的列数+j-1;此公式在任何情况下都正确
D[i][j]元素的存储地址=数组的起始地址+((j-1)*每行的列数+i-1)*单一元素占用存储单元的数目
D[i][j]元素的存储地址=数组的起始地址+(j-1)*每行的列数+i-1;此公式在任何情况下都正确
29请对照上图的左子图和右子图来观察,右子图的二维数组是按左图的形式存储在存储器中。则D[4][2]元素所对应的存储单元的存储地址为_____。
00000000 00000101
00000000 00001000
00000000 00001010
上述都不正确
“树”是一种典型的数据结构,在很多算法中都应用树来组织相关的数据。树是组织层次型数据的一种存储结构,它将每一个数据称为一个数据元素。见下图I.示意,采用三个数组来存储树型数据,一个数组TreeElement[]存放数据元素本身,一个数组LeftPointer[]存放该数据元素的左侧子元素的存放地址(简称为左指针),另一个数组RightPointer[]存放该数据元素的右侧子元素的存放地址(简称为右指针)。参照图I.,回答问题。
4 如想使图(I),改变为存储下图III所示的逻辑关系,操作正确的是_____。
将00000000 00001000号存储单元的值修改00000000 01101110(即十进制的110)
将00000000 00011010号存储单元的值修改为00000000 0000011
将00000000 00010001号存储单元的值修改为00000000 00000000(即Null),将00000000 00010011号存储单元的值修改为00000000 00001000
上述(A)(B)(C)都需要正确完成
5如想使图(I),改变为存储下图IV所示的逻辑关系,下列四步操作都是需要的,但有些操作的内容却是不正确的。不正确的是_____。
将00000000 00001000号存储单元的值修改为00000000 01010101
将00000000 00010010号存储单元的值修改为00000000 00000010
将00000000 00011010号存储单元的值修改为00000000 00000000(即Null)
将00000000 00001010号存储单元的值修改为00000000 00001000
30 关于“树”这种数据结构,下列说法不正确的是_____。
A “树”既需要存储数据元素本身即数据,还需要存储数据元素之间的关系
B “树”可以采用两个数组来组织树型数据,其中一个数组用于存储数据元素本身,另一个数组用于存储与该数据元素发生某种关系的另一个数据元素的存储位置
C “树”可以采用三个数组来组织树型数据,其中一个数组用于存储数据元素本身,另外两个数组用于存储与该数据元素发生某种关系的另外两个数据元素的存储位置
D 上述说法有不正确的
31参照上图(I),下列说法不正确的是_____。
A 当数据元素不发生变化,而只是数据元素之间的关系发生变化时,可以通过调整数据元素对应的左指针数组或右指针数组中的值来完成
B 当数据元素不发生变化,而只是数据元素之间的关系发生变化时,既需要调整数据元素本身,又需要调整其对应的左指针数组或右指针数组中的值来完成
C 相同的数据元素,不同的左指针和右指针可以反映数据元素之间不同的关系
D 图(I)说明,一个数据元素最多只能有两个子元素,一个是左子元素,一个是右子元素
32上图(I)表示的数据的逻辑关系,下列正确的是_____。
图II.(a)
图II.(b)
图II.(c)
图II.(d)
6 堆栈(stack)是一种特殊的串行形式的数据结构,其特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指针,top)进行加入数据(push)或输出数据(pop)的运算。其示意图如上所示。
有关堆栈数据结构的说法,不正确的是_____。
堆栈按照先进先出(FIFO, First In First Out)的原理运作
堆栈按照后进先出(LIFO, Last In First Out)的原理运作
堆栈可以使用顺序存储结构作为存储结构
堆栈可以使用链式存储结构作为存储结构
解析:在堆栈中,先进栈的元素被保存在堆栈下部,在弹出元素时,栈顶的元素先被弹出,故堆栈运行的原理是后进先出
7 堆栈(stack)是一种特殊的串行形式的数据结构,其特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指针,top)进行加入数据(push)或输出数据(pop)的运算。其示意图如上所示。
有关堆栈数据结构的基本运算,说法不正确的是_____。
推入是将数据放入堆栈的顶端,堆栈顶端指针top加一;弹出是将堆栈顶端的数据取出,堆栈顶端指针top减一
如果是固定长度的堆栈,当堆栈顶端指针top与长度相等时,堆栈是满的
如果堆栈顶端指针top为0,则堆栈为空
上述说法有不正确的
8 堆栈(stack)是一种特殊的串行形式的数据结构,其特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指针,top)进行加入数据(push)或输出数据(pop)的运算。其示意图如上所示。
假定当前堆栈顶端指针top=10,欲将栈底的元素取出,其他的元素仍然保持在栈中,则需要进行____次弹出操作,____ 次推入操作
1,1
2,1
10,9
10,0
9 观察下图I.,没有错误的流程图为_________。
流程图(a)无错误
流程图(b)无错误
流程图(c)无错误
没有无错误的流程图
解析:图(c)中,有两处错误,一是在判断“循环控制条件成立?”时,没有标明两个箭头方向是“是”还是“否”,二是同图(b)一样,返回箭头不应该标在初始化部分,所以流程图(c)错误;
10 观察右图II.,该流程图中存在错误,下列说法最完整准确的是_________。
条件判断框不应为矩形,而应为菱形或六角形
条件判断框中引出的箭头应标记Yes(是)或No(否),表明条件满足或不满足时的程序走向
仅仅包含错误(A)和(B)
除错误(A)和(B)外,还包括其他错误
11 阅读下列算法,回答:算法执行的结果为_________。
- Start of the algorithm(算法开始)
- (1) N=10;
- (2) i=2;sum=2;
- (3) 如果 i<=N,则执行第(4)步,否则转到第(8)步执行;
- (4) 如果i % 2 ==0 则转到第(6)步执行;
- (5) sum = sum + i;
- (6) i = i+1;
- (7) 返回到第(3)步继续执行;
- (8) 输出sum的结果。
- End of the algorithm(算法结束)
24 26 55 45
错选为24
解析:该算法计算2到10的奇数和加sum,因此结果为2+3+5+7+9=26
12 TSP算法流程图如下图I.示意,回答问题:最内层循环(L变量控制的循环)的作用是_________。
用于判断某个城市是否是已访问过的城市
用于寻找距当前城市距离最近的城市
用于完整地产生一个路径
上述都不是
13 TSP算法流程图如下图I.示意,回答问题:中层循环(K变量控制的循环)的作用是_________。
用于判断某个城市是否是已访问过的城市
用于寻找距当前城市距离最近的城市
用于完整地产生一个路径
上述都不是
解析:中层循环(K变量控制的循环)的作用是寻找距当前城市最近的城市。K从2号城市开始(1号城市是出发城市,已访问过),首先看K号城市是否已访问过(见最内层L循环),如果K没被访问过(在S数组中没出现过),则看K号城市与目前城市之间的距离,如果距离是目前最短的(由D[K,S[I-1] < Dtemp来判断),则记录下K (j=K),K从2变到N,最后j变量中存放的是距离目前旅行商所在城市最近的城市。
33 TSP算法流程图如下图I.示意,回答问题:外层循环(I变量控制的循环)的作用是_________。
用于判断某个城市是否是已访问过的城市
用于寻找距当前城市距离最近的城市
用于完整地产生一个路径
上述都不是
解析:算法中,I是旅行商走过的城市数加1。K循环是找距离旅行商所在城市最近的城市(旅行商所在城市编号是S[I-1])。I从2变到N,求出旅行商走过所有城市的一条路径。
哥尼斯堡七桥问题,是一个经典问题,如下图(a)所示,描述为“由河流隔开的四块陆地上建造了七座桥,寻找走遍这七座桥且只许走过每座桥一次最后又回到原出发点的路径”。关于哥尼斯堡七桥问题,著名数学家欧拉对该问题做了一个抽象:“顶点”为陆地,“边”为连接两块陆地的桥梁。这个抽象被称“图”,并定义了顶点的“度”为连接一个顶点的边的数量。关于此问题回答问题:
40 哥尼斯堡七桥问题的路径能够找到吗?
一定能够找到
一定不能找到
不确定能不能找到
其它三个选项都不正确
解析:本题考核数学建模及图论中的“欧拉回路”问题。每个顶点具有偶数度时,连通图具有“欧拉回路”。有“欧拉回路”,一个人才能从一个顶点出发,每个顶点都到且只到一次,最后回到出发点。
17 对河流隔开的m块陆地上建造的n座桥梁,若要找到走遍这n座桥且只许走过每座桥一次的路径,则需满足以下条件_____。
m个顶点n条边的图应是连通的,即由一个顶点出发可沿边到达任何一个其他顶点
每个顶点的度应为偶数,或者,只有两个顶点的度为奇数而其他顶点的度均为偶数
既需要满足(A)又需要满足(B)
不满足上述条件(A)(B)(C)的图也能找出满足题目规定要求的路径
41 对河流隔开的m块陆地上建造的n座桥梁,若要找到走遍这n座桥且只许走过每座桥一次的路径,则需满足以下条件_____。
m个顶点n条边的图应是连通的,即由一个顶点出发可沿边到达任何一个其他顶点
每个顶点的度应为偶数
既需要满足(A)又需要满足(B)
不满足上述条件(A)(B)(C)的图也能找出满足题目规定要求的路径
44 对河流隔开的m块陆地上建造的n座桥梁,能否找到走遍这n座桥且只许走过每座桥一次最后又回到原出发点的路径呢?
一定能够找到
一定不能找到
不确定能不能找到
其它三个选项都不正确
19下面所示的图(d)和图(e),问能否找到走遍每一座桥,且每座桥仅走过一次的路径呢?
图(d)和图(e)都一定不能找到
图(d)一定能够找到;图(e)一定不能找到
图(d)一定不能找到;图(e)一定能够找到
图(d)和图(e)都一定能够找到
21参见下图(f),下列说法正确的是_____。
A 对{A、B、C、D、E、F、G}中的任意两个顶点X和Y,都可以找到一条路径,从X出发 走遍每一座桥,且每座桥仅走过一次,最后终止于Y
B 对两个顶点A和B,可以找到一条路径,从A出发 走遍每一座桥,且每座桥仅走过一次,最后终止于B
C 对两个顶点D和G,可以找到一条路径,从D出发 走遍每一座桥,且每座桥仅走过一次,最后终止于G
D 对{A、B、C、D、E、F、G}中的任意两个顶点X和Y,都找不到一条路径,从X出发 走遍每一座桥,且每座桥仅走过一次,最后终止于Y
解析:如果图中恰有两个结点的度为奇数,则存在一条遍历每条边恰好一次的路径,这样的图称为半欧拉图。这条路径起点和终点是度数为奇数的两个结点。图(f)中,只有结点D和G的度数都为奇数,因此,图(f)是“半欧拉图”,可以找到一条路径,从D出发走遍每一座桥,且每座桥仅走过一次,最后终止于G
45 下面所示的图(c),能否找到走遍每一座桥,且每座桥仅走过一次、最后又回到原出发点的路径呢?
一定能够找到
一定不能找到
不确定能不能找到
其它三个选项都不正确
46 参见图(c),增加哪些边,使得能够找到走遍每一座桥,且每座桥仅走过一次、最后又回到原出发点的路径呢?
BG边
AG边
CG边
AD边
47 对河流隔开的m块陆地上建造的n座桥梁,若要找到走遍这n座桥且只许走过每座桥一次最后又回到原出发点的路径,则需满足以下条件_____。
m个顶点n条边的图应是连通的,即由一个顶点出发可沿边到达任何一个其他顶点
每个顶点的度应为偶数
既需要满足(A)又需要满足(B)
上述条件还不够,还需满足更多条件
50 哥尼斯堡七桥问题,推而广之就是m个顶点n条边的图的“一笔画”问题,我们可以给出一个算法来求解该问题,即“对河流隔开的m块陆地上建造的n座桥梁,若要找到走遍这n座桥且只许走过每座桥一次的路径”。 关于该算法的基本思想,下列说法正确的是_____。
A 以任何一个顶点为起点,按照图的“边”的指示,找到按该边与该顶点相连的下一个顶点,并标记该边为“已访问”,依次循环,直到所有的边都被访问过为止,便可找到给定问题的解
B 以任何一个顶点为起点,按照图的未访问过“边”的指示,找到按该边与该顶点相连的下一个顶点,并标记该边为“已访问”,依次循环,直到所有的边都被访问过为止,便可找到给定问题的解
C 首先判断该问题是否有解,若无解,则直接退出;若有解,则以任何一个顶点为起点,按照图的未访问过“边”的指示,找到按该边与该顶点相连的下一个顶点,并标记该边为“已访问”,依次循环,直到所有的边都被访问过为止,便可找到给定问题的解
D 首先判断该问题是否有解,若无解,则直接退出;若有解,则选择一个奇数度的顶点为起点,按照图的未访问过“边”的指示,找到按该边与该顶点相连的下一个顶点,并标记该边为“已访问”,依次循环,直到所有的边都被访问过为止,便可找到给定问题的解
49 哥尼斯堡七桥问题,给我们的启示是_____。
一个具体问题应该进行数学抽象,基于数学抽象进行问题求解
一个具体问题的求解,进行数学建模后,通过模型中的性质分析可以判断该问题是否有解,如果有解,则可以进行计算;而如果无解,则无需进行计算
一个具体问题的求解方法,进行数学建模后,可反映出一类问题的求解方法,例如哥尼斯堡七桥问题的求解方法,建立“图”后,可反映任意n座桥的求解方法
上述全部
错选为B
背包问题的定义是:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。背包问题的一个例子:应该选择哪些盒子,才能使价格尽可能地大,而保持重量小于或等于15 kg?其示意图如上
23 假定求解该问题的一种贪心策略是:优先选择能装下盒子中价格最高的,依据该算法策略所得到的解的总价值是_____。
16
15
14
13
24 假定求解该问题的一种贪心策略是:优先选择能装下盒子中单位重量价值最高的,依据该算法策略所得到的解的总价值是_____。
16
15
14
13
25 假定有N个物品,其价值分别为,重量分别为
,背包所能承受的总重量为
,为物品i定义一个决策变量
,其中
表示选择该物品,
表示不选择该物品。下面哪些描述共同构成了该问题的数学模型_____。
问题的目标函数是
问题的目标函数是
问题解所应满足的约束是
前述(A)和(C)
51 该背包问题的可能解的数量是_____。
5
10
32
64
错选为D 由题意可知,只要可放入背包的状态都算是可能解,可以按背包容量由1到15遍历可能性,答案为32个
52 假定求解该问题的一种贪心策略是:最大程度地利用背包的容量(15kg),依据该算法策略所得到的解的总价值是_____。
8
15
14
13
错选为B
53 使用遍历算法策略所得到的解的总价值是_____。
8
15
14
13
26 TSP-旅行商问题,是一个经典问题,如下图所示,描述为“有n个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少”。围绕TSP,回答问题:关于TSP的贪心算法的求解思想,下列说法不正确的是_____。
A 无需对所有组合(所有可能解)进行比较,而仅需依照某种办法确定其中的一个组合即可,该组合不一定是最优解,但却是一个较优解或次优解
B 在确定一个组合 时,
是与
相连接的城市中与
距离最短的城市,即
是由
确定的,与
连接的若干城市中的特性最优的城市
C 贪心算法确定的路径,是由局部最优(即在
看来是最优的)组合起来的路径,该路径从全局角度也一定是最优的
D 对一个具体的TSP问题,每次执行贪心算法,所求得的最终解可能是不同的
27 TSP-旅行商问题,是一个经典问题,如下图所示,描述为“有n个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少”。围绕TSP,回答问题:下列哪些问题可应用求解TSP的算法,正确的是_____。
电路板上需要钻n个孔,选择一条最短路径使机器移动并完成所有孔的钻孔工作的问题(机器在电路板上钻孔的调度问题)
n个盘子在三个柱子上的移动问题(梵天塔问题或者说汉诺塔问题)
n座桥, 走过每座桥且仅走过一次的问题(图的遍历问题)
上述(A)(B)(C)都可以
28 TSP-旅行商问题,是一个经典问题,如下图所示,描述为“有n个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少”。围绕TSP,回答问题:
关于下列四个数学抽象,说法正确的是_____。
A 只有数学抽象I是TSP问题,数学抽象II和III不是
B 数学抽象I和III可以被认为是TSP问题,数学抽象II和IV不是
C 数学抽象I、II、III和IV都可以被认为是TSP问题
D上述说法都不正确
解析:I就是对最原始的TSP问题的抽象描述。II也是对TSP问题的描述,只是将城市换成了电子元件。III和IV是对同一问题的不同表述罢了,都是TSP问题,只是将城市换为了图。
54 关于TSP问题的遍历算法和贪心算法,下列说法正确的是_____。
A 对TSP问题而言,遍历算法和贪心算法求得的解是一样的,所不同的是贪心算法更快一些,而遍历算法更慢一些
B 对TSP问题而言,遍历算法和贪心算法求得的解是一样的,所不同的是遍历算法更快一些,而贪心算法更慢一些
C 对TSP问题而言,遍历算法和贪心算法求得的解是不一样的,贪心算法是求近似解,执行更快一些,而遍历算法是求精确解,执行更慢一些
D 对TSP问题而言,遍历算法和贪心算法求得的解是不一样的,贪心算法是求精确解,执行更快一些,而遍历算法是求近似解,执行更慢一些
55 关于TSP,下列说法不正确的是_____。
A TSP问题的一个可能解就是n个城市的一个组合 ,其中任何两个
,
都对应不同的城市。若要求得最优解,则必须对所有的组合,即所有可能解进行比较
B TSP问题的难点是当n值很大时,组合数目非常庞大(组合数目为n!),以致于计算机不能在有限时间内完成所有的组合
C TSP问题的难点是当n值很大时,组合数目非常庞大(组合数目为n!),虽如此,计算机仍然能够在有限时间内完成所有的组合
D 上述思想--对所有组合进行比较的思想,即是所谓的遍历算法策略,它仅仅对n值很小的TSP问题是能行的
20 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:
算法的时间复杂性T(n),可以通过评估算法基本语句的执行次数来获得。分析下列算法的时间复杂性。
- Start of the algorithm(算法开始)
- (1) 输入结点的数目n;
- (2) 当前最短路径Path设为空,当前最短距离Dtemp设为最大值;
- 注:一个路径是n个结点的一个组合,任何一个结点在路经中不能重复出现
- (3) 组合一条新路径NewPath并计算该路径的距离D;
- (4) 如果D<Dtemp 则Path = NewPath,且Dtemp = D;
- (5) 如果所有路径组合完毕,则结束;否则转第(3)步继续执行;
- (6) 输出Path及Dtemp;
- End of the algorithm(算法结束)
该算法的时间复杂性表达正确的是_________。
22 对于算法类问题求解,下列说法正确的是_________。
A 一般而言,算法类问题求解包括数学建模、算法策略设计、算法的数据结构与控制结构设计三个基本步骤
B 一般而言,算法类问题求解包括数学建模、算法策略设计、算法的数据结构与控制结构设计、算法的正确性与复杂性分析四个基本步骤
C 一般而言,算法类问题求解包括数学建模、算法策略设计、算法的数据结构与控制结构设计、算法的程序实现、算法的正确性与复杂性分析五个基本步骤
D 上述说法都正确
14 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:通常从哪些方面,进行算法的模拟与分析?
算法的正确性问题,即一个算法求得的解是满足问题约束的正确的解吗?
算法的效果评价问题,即算法输出的是最优解还是可行解,其可行解与最优解的偏差有多大?
算法的时间效率问题(时间复杂性),即算法执行所需要的时间是多少?算法的空间效率问题(空间复杂性),即算法执性所需要的空间是多少?
上述全部。
15 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:
算法的时间复杂性T(n),可以通过计算算法基本语句的执行次数来获得。分析下列程序的时间复杂性。
- (10) K = 0;
- (20) I = 2;
- (30) While (I<=8)
- (40) { K = K + I;
- (50) I = I + 2;}
该程序时间复杂性表达正确的是_________。
O(n) O(1) O(n!)
16 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:
算法的时间复杂性T(n),可以通过计算算法基本语句的执行次数来获得。分析下列程序的时间复杂性。
- (10) sum=0;
- (20) For(i=1; i<=n; i++)
- (30) For(j=1; j<=n; j++)
- (40) For(k=1; k<=5; k++)
- (50) sum=sum+1;
该程序时间复杂性表达正确的是_________。
O(n)
上述都不对
18 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:阅读下面的程序,其时间复杂度为_________?
- int index = 5;
- int condition=1;
- if (condition==1) then
- index++;
- else
- index--;
- for i = 1 to 100
- for j = 1 to 200
- index=index+2;
O(n) O(1) O(n*log n)
解析:程序段除循环以外语句时间复杂度均为常数阶,i循环和j循环的次数均为固定次数,因此时间复杂度也为常数阶,整个程序段时间复杂度为常数阶。
34 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:算法的时间复杂性,可以表达为关于问题规模n的一个函数T(n),T(n)可以用大O表示法来处理。问T(n)=O(f(n))是什么意思?正确的是_________。
T(n)是关于f(n)的一个函数
T(n)是与f(n)同数量级的函数
T(n)是将函数f(n)代入O(x)中所形成的新函数
T(n)是依据f(n)计算出来的
解析:时间复杂性是指如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数,T(n)称为这一算法的“时间复杂性”;“大O记法”:基本参数 n表示问题实例的规模,把复杂性或运行时间表达为n的函数,“O”表示量级 (order),允许使用“=”代替“≈”,如n^2+n+1 = Ο(n^2)
35 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:
算法的时间复杂性T(n),可以通过计算算法基本语句的执行次数来获得。分析下列程序的时间复杂性。
- (10) sum=0;
- (20) For(i=1; i<=n; i++)
- (30) For(j=1; j<=n; j++)
- (40) For(k=1; k<=j; k++)
- (50) sum=sum+1;
该程序时间复杂性表达正确的是_________。
O(n)
上述都不对
解析:本小题程序段有三重循环。语句(40)是最内层循环,k从1变到j,语句(30)中,j从1变到n,因此这两重循环(j循环和k循环)一共执行的循环次数是1+2+3+…+n=n(n+1)/2次,最外层i循环执行n次(i从1变到n),所以此程序段包含的循环次数为n×n(n+1)/2,此程序段的时间复杂性为O(n^3)
36 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:为什么要评估算法的复杂性?下列说法不正确的是_________。
当算法的时间复杂性量级为多项式函数时,计算机是能够完成计算的
当算法的时间复杂性量级为非多项式函数时,如指数函数、阶乘函数时,计算机是不能够完成计算的
当算法的时间复杂性量级为非多项式函数时,如指数函数、阶乘函数时,对于大规模问题,计算机是不能够完成计算的
上述说法有不正确的
37 一般而言,算法设计完成后,需要进行算法的模拟与分析。关于算法的模拟与分析回答问题:分析下列算法的时间复杂性。
- Start of the Algorithm
- (1) S[1]=1; Sum=0; 初始化距离数组D[n][n];
- /*I层的循环,即下列步骤为每次找出一个城市,I从2到n,即从找出第2个城市一直到找出第n个城市
- (2) I=2;
- /*K层的循环,即下列步骤为从所有未访问过的城市中查找距离S[I-1]最近的城市j,K依然从2到n寻找
- (3) K=2;
- (4) 将Dtemp设为一个大数(比所有两个城市之间的距离都大)
- /*L层的循环,即下列步骤为判断一个城市是否已被访问过,如果已被访问,则跳过该城市,寻找新的城市,L从1到I-1,因为已经有I-1个城市被访问过。
- (5) L=1;
- (6) 如果S[L]==K,转步骤(10);
- (7) L=L+1;
- (8) 如果L<I,转步骤(6);
- /*L层的循环结束
- (9) 如果D[K,S[I-1]]<Dtemp,j=K,Dtemp=D[K,S[I-1]];
- (10) K=K+1;
- (11) 如果K<=N,转步骤(5)。
- /*K层的循环结束
- (12) S[I]=j;
- (13) Sum=Sum+Dtemp;
- (14) I=I+1;
- (15) 如果I<=N,转步骤(3),否则,转步骤(16);
- /*I层的循环结束
- (16) Sum=Sum+D[1, j];
- (17) 逐个输出S[N]中的全部元素;
- (18) 输出Sum。
- End of the Algorithm
该算法的时间复杂性表达正确的是_________。
38 关于算法类问题的基本求解步骤,下列说法不正确的是_________。
算法类问题求解首先要进行数学建模,即用数学语言对问题进行抽象
一个问题,进行了数学建模后,可以通过模型的一些性质的分析判断该问题是否有解;在有解的情况下,再设计算法进行求解,否则则可能做的是无用功!
一个问题,进行了数学建模后,可以依据数学的一些求解方法,设计出让计算机求解的算法。
上述说法有不正确的
39 关于算法的命题,下列说法不正确的是_____。
算法规定了任务执行/问题求解的一系列、有限的步骤
算法所规定的计算/处理步骤是有限的,但算法实际执行的计算/处理步骤可以是无限的
算法可以没有输入,但必须有输出
算法的每一个步骤必须确切地定义,且其运算和操作必须相当基本,可以由机器自动完成
42 关于算法与程序、计算机语言之间的关系,下列说法不正确的是_____。
算法是解决问题的步骤,某个问题可能有多个求解算法
算法不能直接由计算机执行,必须将其转换为程序才能够由计算机执行
算法只能由高级(计算机)语言实现,不能通过机器语言实现
求解问题的多个算法不一定获得相同的解
43 算法是计算系统的灵魂,为什么?不正确的是_____。
计算系统是执行程序的系统,而程序是用计算机语言表达的算法
一个问题的求解可以通过构造算法来解决,“是否会编程序”本质上讲是“能否想出求解该问题的算法”
一个算法不仅可以解决一个具体问题,它可以在变换输入输出的情况下,求解一个问题系列
问题求解都可以归结到算法的构造与设计,系统和算法的关系是:算法是龙,而系统是睛,画龙要点睛
48 关于算法的特性,下列说法不正确的是_____。
算法必须有明确的结束条件,即算法应该能够结束,此即算法的有穷性
算法的步骤必须要确切地定义,不能有歧义性,此即算法的确定性
算法可以有零个或多个输入,也可以有零个或多个输出,此即算法的输入输出性
算法中有待执行的运算和操作必须是相当基本的,可以由机器自动完成,进一步,算法应能在有限时间内完成,此即算法的能行性
8怎样研究算法
1 P类问题、NP类问题、NPC类问题是计算机科学领域关于可求解性可计算性很重要的概念。关于P、NP和NPC类问题,下列说法正确的是_____。
P类问题是计算机可以在有限时间内能够求解的问题
NP类问题是计算机可以在有限时间内能够求解的问题
NPC类问题是计算机可以在有限时间内能够求解的问题
上述说法都正确
2 关于NP类问题求解,下列说法正确的是_____。
NP类问题求精确解,可能找不到多项式时间复杂性算法;但NP类问题求近似解,则一定能够找到多项式时间复杂性算法
NP类问题求精确解,可能找不到多项式时间复杂性算法;但NP类问题求近似解,则也可能找不到多项式时间复杂性算法
虽然能够找到求NP类问题近似解的多项式时间复杂性算法,但所求得的解一定不是满意解
既然能够找到求NP类问题近似解的多项式时间复杂性算法,则所求得的解就一定是满意解
错选为B
解析:NP类问题指虽然在多项式时间内难于求解但不难判断给定一个解的正确性的问题,即:在多项式时间内可以由一个算法验证一个解是否正确的非确定性问题,所以NP类问题求精确解,可能找不到多项式时间复杂性算法,但NP类问题求近似解,则一定能够找到多项式时间复杂性算法,此选项正确;虽然能够找到求NP类问题近似解的多项式时间复杂性算法,但所求得的解不一定是满意解。
类比生物遗传与优胜劣汰而形成的遗传算法的求解过程如下图示意。理解该图,回答问题。
3图中给出了遗传算法的基本求解过程示意。关于图中包含了哪些过程,下列说法正确的是_____。
可能解的编码过程和初始种群的产生过程
交叉、变异形成候选种群的过程
可能解的适应度计算过程和汰选可能解形成新一代种群的过程以及算法终止及最终解的形成过程
上述全部过程
解析:图中第一行第一个箭头即是可能解的编码过程和初始种群的产生过程。最右的大方框内的即是交叉、变异形成候选种群的过程。右下方的方框以及箭头即是可能解的适应度计算过程和汰选可能解形成新一代种群的过程。左下的图与箭头即是算法终止及最终解的形成过程。
4依据图中示例及求解过程示意,思考并回答,下列说法不正确的是_____。
初始种群中的可能解可以随机产生
对于哪两个可能解进行交叉,可以采取随机方式从种群中选择出来
对于两个可能解进行两段交叉,其交叉点是固定的,不可以采取随机方式确定
对于哪个解进行变异,以及变异位置的确定,可以采取随机方式选择和确定
解析:在遗传算法中,所有的解的产生,以及交叉,变异等可以随机的产生,并不是固定的
5依据图中示例及求解过程示意,思考并回答,下列说法不正确的是_____。
遗传算法可以一个轮次一个轮次迭代地进行(被称为“进化”),可以在迭代到一定次数后终止
遗传算法一定可以求得满意解或最优解,它一定是在得到满意解或最优解时才终
遗传算法必定涉及随机处理,因为不仅仅是问题可能解的空间很大,而任何一个子解空间也都可能很大,穷举是难以办到的
遗传算法是以交叉操作为产生新可能解的主要操作,而以变异操作作为产生新可能解的辅助操作
6依据图中示例及求解过程示意,思考并回答,下列说法不正确的是_____。
A 适应度,主要用于考察一个可能解是否接近最优解,以及接近的程度和方向,所以通常选择极值函数(如最大值函数或最小值函数)作为度量函
B 一般而言,通过将可能解代入一个极值函数(如最大值函数或最小值函数)中获得函数值,以该函数值作为适应度的值
C 一个问题,若要用遗传算法求解,则要能够将其映射为类似于求极值一样的函数,即函数的极大值(或极小值)对应了问题的最优解/较优解,这是问题数学建模的一种方向
D 适应度函数可以任取一个极值函数,它与求解问题本身可以没有什么关系
27 依据图中示例及求解过程示意,思考并回答,下列说法不正确的是_____。
种群的规模,即种群中可能解的个数是预先设定且固定不变的,其大小影响遗传算法求解的质量和效率
种群的规模,虽然是预先设定的,但其大小不会影响遗传算法求解的质量和效率
种群的规模可以依据问题的所有可能解的个数来确定:太大,虽求解效果好但计算量却很大;太小,虽计算量很小,但求解效果却难以保证
种群规模不是随机确定的
32 会议室租用问题、测试用例选择问题和航班机组成员问题,这三个问题的遗传算法求解过程,与上述图片中过程相同还是不同呢,说法正确的是_____。
A 求解过程是相同的,只是适应度函数不同,其他如可能解的编码、初始解的获得、交叉与变异规则、汰选可能解形成新一代种群的规则、算法终止条件等都可以相同
B 求解过程是相同的,可能解的编码、初始解的获得、交叉与变异规则、汰选可能解形成新一代种群的规则、算法终止条件等都可以是相同的,但适应度函数是不同的,此外,这三个问题需要判断一个可能解是否是可行解---即产生的可能解需要满足约束条件(2),而图中示例没有这一过程
C 求解过程是不同的,除适应度函数不同外,其他如可能解的编码、初始解的获得、交叉与变异规则、汰选可能解形成新一代种群的规则、算法终止条件等都是不同的
D 前述说法都正确
错选为A
解析:采用遗传算法解决问题的基本框架都是一样的,因此求解过程是相同的,可能解的编码、初始解的获得、交叉与变异规则、汰选可能解形成新一代种群的规则、算法终止条件等都可以是相同的,而题目中提到的三个问题的适应度函数均为模型中的条件1,而图示的问题的适应度函数为F(x),两者是不一样的。另外,图示的问题中,所有的可能解都是可行解,但三个问题的可能解就不一定是可行解,必须得验证,这点也是不一样的。综上,此选项正确。
关于遗传算法为什么可以求解NPC类问题。理解下图,回答问题。
遗传算法是典型的计算求解的方法,它通过“产生任何一个可能解,并验证可能解的正确性”的方法求解一个复杂问题。
7 关于计算求解,下列说法不正确的是_____。
A 在获得满意解的概率方面,如果初始可能解被恰当选择的话,导向性随机搜索一定比随机搜索更好一些
B 在获得满意解的概率方面,群导向性随机搜索一定比导向性随机搜索更好一些:相比导向性随机搜索,群导向性随机搜索采取了多条导向搜索路径
C 遗传算法是一种群导向性随机搜索:其有一定规模的种群,即可被认为是设置了多个初始的可能解;其交叉、变异产生新可能解的方法,即可被认为是新可能解与原可能解相关联
D 利用遗传算法,计算机在有限时间内一定能够找到满意解
28 关于计算求解,下列说法正确的是_____。
A 可以从所有可能解的集合中产生每一个可能解,并验证可能解的正确性。利用这种策略的算法,计算机一定能够在有限时间内找到精确解
B 可以从所有可能解的集合中随机产生一些可能解,并验证可能解的正确性。利用这种策略的算法,计算机一定能够在有限时间内找到精确解
C 可以从所有可能解的集合中随机产生一些可能解,并验证可能解的正确性。利用这种策略的算法,计算机一定能够在有限时间内找到满意解
D 可以从所有可能解的集合中随机产生一些可能解,并验证可能解的正确性。利用这种策略的算法,如果随机产生的可能解越多,则计算机找到满意解的概率也越大,但耗费时间也越长
29 关于计算求解,下列说法正确的是_____。
A 可以从所有可能解的集合中随机产生一些可能解,并验证可能解的正确性。利用这种策略的算法—可被称为随机搜索算法。则,利用随机搜索算法,计算机在有限时间内一定能够找到满意解
B 为改进随机搜索算法的求解质量,在随机产生可能解的过程中,使后一个可能解的产生与前一个可能解相关联,即在前一个可能解的基础上随机产生后一个可能解,例如一个可能解编码为“110011001100”,可以通过改变该解编码的某些位产生下一个可能解(即相关),而改变哪些位则可随机处理。利用这种策略的算法---可被称为导向性随机搜索。则,利用导向性随机搜索,计算机在有限时间内一定能够找到满意解
C 和随机搜索相比,利用导向性随机搜索,计算机在有限时间内找到满意解的概率更大一些
D 和随机搜索相比,利用导向性随机搜索,初始的可能解对计算机在有限时间内找到满意解的概率的影响更大一些
解析:A利用随机搜索算法求出的近似解并不能保证是满意解;B利用导向性随机搜索算法求出的近似解并不能保证是满意解;C导向性随机搜索的初始可能解对最终找到满意解有很大的影响,如果接近则找到满意解的概率大反之则小
8 关于什么情况下应用遗传算法,下列说法正确的是_____。
当对某问题求解,找不到更好的多项式时间复杂性算法的时候
当问题的可能解能够被表达,并能够确定问题的解空间的时候
当能够找到可能解的适应度计算方法,即能够判断一个可能解接近精确解的程度或方向的时候
前述(A)(B)(C)同时满足的时候
9 为什么说会议室租用问题、测试用例选择问题和航班机组成员问题是同一个问题,下列说法不正确的是_____。
A 对这三个问题进行抽象,会议室、测试用例和机组成员都可被看作是“资源”,而讲座、软件功能测试和航班都可被看作是“任务”,则这三个问题都可被看作是:选取最少量的资源以满足其能够完成给定的所有任务
B 对这三个问题进行抽象,每个资源都能够完成一些任务,即覆盖一个任务集合。不同资源,具有不同的使用成本。上述问题都是选择具有最小成本的一些资源,使这些资源所覆盖任务集合的并集能够包含所有需要完成的任务
C 观察问题相同与否,可将问题语义剥离,形成数学模型。如果数学模型是相同的,则其是相同的问题,否则便不是相同的问题。上述三个问题抽象后都可以形成下列数学模型:
所以上述三个问题是同一个问题
D 前述说法(A)(B)(C)有不正确的
解析:三个问题都是同一个问题:一维的集覆盖问题。他们数学模型均为选项所述,每一行都被选出的列覆盖,被哪一列或几列覆盖不重要,要满足约束矩阵。
10 参阅教材,理解课程表优化安排问题的数学模型如下:
关于该模型,下列说法不正确的是_____。
A 公式(1)是计算某一种方案---该方案给出了哪一门课程安排在哪个教室的一种安排,计算该方案的总成本,目标是求具有最小总成本的那个方案。其中教室被从1,…,n编号,课程被从1,…,m编号。如果 =1,表示课程i被安排在教室j;如果
=0,表示课程i未被安排在教室j;
表示选择课程i安排在教室j时所需消耗的成本
B 公式(2)表示每一门课程至少被安排在1个教室,也可以安排在多个教室
C 公式(3)表示每一个教室至多安排2门课程,也可以不安排课程
D 公式(4)说明 只能等于0或1。等于1表示课程i被安排在教室j;等于0则表示课程i与课程j没有关系
11 对类似于遗传算法的理解,需要理解关于各种解的名词之间的细微差别。下列说法正确的是_____。
可行解集合Ê近似解集合Ê可能解集合Ê满意解集合Ê最优解集合
可能解集合Ê可行解集合Ê满意解集合Ê近似解集合Ê最优解集合
可能解集合Ê可行解集合Ê近似解集合Ê满意解集合Ê最优解集合
最优解集合Ê满意解集合Ê近似解集合Ê可行解集合Ê可能解集合
12 设一个问题的解的形式为x,下列说法不正确的是_____。
由x的取值空间给定的任何一个x值被称为可行解
由一个算法在任何一组可行解中求出的最优解被称为是近似解
符合用户期望的近似解被称为是满意解
所有可行解中的最优解是问题的最优解
13 对于类似于课程表优化安排问题的二维集覆盖问题:
利用遗传算法计算求解,回答问题:关于交叉规则的设计,下列说法不正确的是_____。
可以采取基本的两段交叉或多段交叉
可以采取点交叉、行交叉或列交叉
可以不以“位”为单位进行交叉,而以若干位的一个组合为单位进行交叉
交叉规则仅有以上(A)(B)(C)几种情况
解析:交叉规则具有多样性,不仅可以采用两段交叉、多段交叉,根据不同的问题,还可以采用点交叉、行交叉、列交叉、块交叉等。
14 遗传算法的设计在很多方面都需要引入概率,在哪些方面引入概率呢?下列说法不正确的是_____。
A 初始种群的确定可以引入概率。结合问题可能解的分布选择概率模型,将此概率模型引入初始解的随机选择过程中,则选择出的初始可能解有助于遗传算法快速地获得满意解
B 交叉规则设计可以引入概率。从待交叉两个可能解的确定,到交叉点的确定,甚至到段间距离的确定等都可以引入概率,恰当的概率模型选择有助于遗传算法快速地获得满意解
C 遗传算法处处体现着概率的应用和随机处理。当可能的方案比较多,且穷举计算量很大时,便可采用概率方式进行随机化处理。例如两个可能解“00001000 10001100”“00111000 1011 1100”,如果做两段交叉,则分段交叉点可以有16个,如果16个交叉点都选择,则可能该子解空间仍旧很大,此时可依概率选择1号位置交叉至16号位置交叉,选择几个则依概率模型确定,选择1个至16个中的某些个
D 虽然遗传算法处处可以引入概率,但其概率模型却是相同的
15 遗传算法设计需要引入变异操作。变异操作是对种群中的某些可能解(个体)的某些编码位进行突变处理,例如二进制编码的解01110011,其第3位(自左而右)当前为1则将其变为0,称为变异操作。关于变异操作,回答问题:关于如何应用变异操作,下列说法不正确的是_____。
对种群中所有可能解(个体)以事先设定的变异概率确定是否进行变异
对进行变异的可能解(个体)随机选择变异位置进行相应位置的“位”变异
对进行变异的可能解(个体)随机选择变异位置进行相应位置的“位组合”变异
变异概率应选取较大值,即:使变异频繁发生,这样有助于快速收敛到满意解
解析:变异概率:控制算法中变异操作的使用频率,实际情况下变异发生的频率并非越频繁越好,当变异概率无限增大的时候,遗传算法就变为纯随机搜索了,因此变异概率并不是可以无限扩大的,即在一定条件下使变异概率尽量大有助于快速收敛到满意解。
16 可解性问题是指能够找到多项式时间复杂性算法进行求解的问题,难解性问题是指找不到多项式时间复杂性算法进行求解的问题。下列说法不正确的是_____。
P类问题是可解性问题,NP类问题是难解性问题
NP类问题不一定是难解性问题,因为P类问题也一定是NP类问题
NP类问题不确定是否是P类问题,但NPC类问题一定是难解性问题
上述说法有不正确的
错选为D
17 遗传算法设计需要引入变异操作。变异操作是对种群中的某些可能解(个体)的某些编码位进行突变处理,例如二进制编码的解01110011,其第3位(自左而右)当前为1则将其变为0,称为变异操作。关于变异操作,回答问题:通过变异操作,使遗传算法具有局部的随机搜索能力。为什么?下列说法不正确的是_____。
A 当产生一个可行解时,可以在该解的邻近解的集合中进行搜索,被称为局部搜索;该解的邻近解的集合是变化的,例如与该解有一位不同的邻近解、与该解有两位不同的邻近解,或者与该解有一个“位组合”不同的邻近解等
B 当产生一个可行解时,由于与该解的邻近解的集合可能很大,并不能穷举每一个邻近解,所以需要随机选择邻近解
C 当产生一个可行解时,通过某一位或几位的变异,便可产生该解相邻近的解。即相当于,以该解为中心,在与该解的邻近解的集合中随机选择出某个解;当产生的可行解接近最优解的邻域时,通过某一位或几位的变异,便可产生该解相邻近的解,此有助于使算法加速向最优解收敛
D 上述说法有不正确的
18 P类问题是多项式问题(Polynomial Problem),NP类问题是_____。
非多项式问题
非确定性多项式问题
非P类问题
确定性非多项式问题
19 遗传算法是一种算法设计策略。不同的问题甚至相同的问题都可以设计不同的遗传算法进行求解,不同的遗传算法如可能解编码的不同、交叉与变异规则的不同、概率模型的选择不同等。如何衡量遗传算法的性能好坏,下列说法不正确的是_____。
近似率越高的算法,性能越好
在执行相同次数的迭代后,获得满意解越好的算法,性能越好
在达到期望满意解的前提下,迭代次数越多的算法,性能越好
当不同算法均应用多次后,求得满意解次数越多的算法,性能越好
20 P类问题、NP类问题、NPC类问题是计算机科学领域关于可求解性可计算性很重要的概念。关于P、NP和NPC类问题,下列说法不正确的是_____。
P类问题是总能找到一个多项式时间复杂性算法进行求解的问题
NP类问题是一定找不到多项式时间复杂性算法进行求解的问题
NP类问题是不确定能够找到多项式时间复杂性算法进行求解的问题
NP类问题虽然是不确定能找到多项式时间复杂性算法进行求解,但一定能找到多项式时间复杂性算法进行“解”的正确性验证的问题
22 非确定性多项式问题是指这样的问题,下列说法不正确的是_____。
A 它能够找到一个算法、甚至是多项式时间复杂性算法进行求解,但算法中包含“不确定性”,如“任意组合一个解,…”、“随机组合一个解,…”等
B 它能够找到一个算法、甚至是多项式时间复杂性算法进行求解,但算法是通过“猜测”方式求出问题的解
C 它能够通过“产生任何一个解,并验证解的正确性”的方法进行求解;它一定是能够找到多项式时间复杂性算法以验证给定“解”的正确性的问题
D 上述说法有不正确的
解析:NP类问题:非确定性多项式问题(Non-deterministic Polynomial)。有些问题,其答案是无法直接计算得到的,只能通过间接的猜算或试算来得到结果,这就是非确定性问题(Non-deterministic)。虽然在多项式时间内难于求解但不难判断给定一个解的正确性的问题,即:在多项式时间内可以由一个算法验证一个解是否正确的非确定性问题,所以其它选项的说法都是正确的
八皇后问题的遗传算法求解。八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。下图给出了八皇后问题的一个解。回答问题。
八皇后问题的建模。将棋盘抽象为n×n的矩阵(此时n=8,但抽象不限于n=8,可以是n皇后问题), =1表示放置皇后,
=0表示未放置皇后,其目标函数为
。因此八皇后问题求解的关键是设计约束条件,即满足什么条件的可能解才是可行解,而任何一个可行解都为满意解。
21 有三个公式,表达了某种约束条件(注意,不能确定给出的公式一定是正确的),下列说法不正确的是_____。
式1表达的是任何一列中的皇后个数只能有一个
式2表达的是任何一行中的皇后个数只能有一个
式3表达的是任何两个皇后不能位于同一条45度或135度斜线上
上述有不正确的
23 下面有若干个公式,表达了某种约束条件(注意,不能确定给出的公式一定是正确的)。回答问题。
下列说法不正确的是_____。
八皇后问题的约束包括(式1)、(式3)、(式4)和(式5)
八皇后问题的约束包括(式1)、(式3)和(式6)
八皇后问题的约束包括(式1)、(式3)和(式7)
上述有不正确的
解析:式6不是八皇后问题的约束
40 有四个公式,表达了某种约束条件(注意,不能确定给出的公式一定是正确的),下列说法不正确的是_____。
式1表达了任何一列中的皇后个数只能有一个;式2表达了任何一行中的皇后个数只能有一个
式3表达了一条斜线上的皇后个数不能多于1个
式3和式4必须同时具备才能表达任何一条斜线上的皇后个数不能多于1个
式3和式4中关于h的相关内容是没有必要的
解析:关于h的相关内容是有必要的
41 下面有若干个公式,表达了某种约束条件(注意,不能确定给出的公式一定是正确的)。回答问题。
下列说法不正确的是_____。
(式6)表达的不是八皇后问题的约束
(式2)表达的不是八皇后问题的约束
(式3 )表达的是八皇后问题的约束,但其和式1相重复
(式4 ) (式5 )与(式7)表达的是关于八皇后问题的相同的约束
下图能够基本反映生物学遗传与优胜劣汰的过程。理解该图,联想计算类问题求解,回答问题。
24 下列说法不正确的是_____。
A 任何一个生物个体的性状是由其染色体确定的,染色体是由基因及其有规律的排列所构成的,因此生物个体可由染色体来代表
B 生物的繁殖过程是通过将父代染色体的基因复制到子代染色体中完成的,在复制过程中会发生基因重组或基因突变。基因重组是指同源的两个染色体之间基因的交叉组合,简称为“杂交/交配”。基因突变是指复制过程中基因信息的变异,简称“突变”
C 不同染色体会产生不同生物个体的性状,其适应环境的能力也不同;自然界体现的是“优胜劣汰,适者生存”的丛林法则。不适应环境的生物个体将被淘汰,自然界生物的生存能力会越来越强
D 上述说法有不正确的
25 类比计算类问题求解,下列说法不正确的是_____。
A 一个染色体即是指问题的一个“可能解”。任何“可能解”都可以表达为编码形式,构成编码的基本单位即是基因
B 所谓的复制、杂交、突变,是指一个可能解或两个可能解之间发生的、编码片段之间的复制、交叉或变异,它们都是产生新可能解的一种方式;所谓的环境适应性,可以认为是对一个可能解的一种度量,即能够度量一个可能解的好与坏的某一函数值,被称为“适应度”
C 基于(A)(B),遗传算法就是“通过复制、交叉或变异,不断产生新的可能解;计算可能解的适应度;淘汰掉适应度差的可能解,保留适应度好的可能解。”
D 上述说法有不正确的
错选为A
26 类比计算类问题求解,下列说法不正确的是_____。
A 一个染色体即是指问题的一个“可能解”,一个基因即是“可能解”的一个编码位或若干编码位的一个组合
B 一个种群即是一个包含问题满意解的“可能解”的集合
C 适应度,即是对“可能解”的一个度量,它可以衡量“可能解”接近最优解或精确解的程度
D 复制、交叉、变异等都是产生新“可能解”的方式
30 集覆盖问题可以抽象为下列模型,请对下列模型进行理解。关于该模型,下列说法不正确的是_____。
A 公式(1)是计算所选择资源的总成本,目标是求具有最小总成本的资源集合。其中资源被从1,…,n编号。如果 =1,表示资源j被选择;如果
=0,表示资源j未被选择;
表示选择资源j时所需消耗的成本
B 公式(2)表示每一个任务i都被某一个已选择的资源j( >0)能完成的任务集所覆盖
C 当 =1,且
=1时,则
,即任务i可以被资源j完成,且资源j已被选择;
表示任务i至少能被一个已选择出的资源所完成,换句话说,一个任务可能由多个资源来完成,在这些资源中只要有一个被选择即可
D 上述说法有不正确的
31 参阅教材,理解课程表优化安排问题。关于该问题,下列说法正确的是_____。
A 该问题,与会议室租用问题、测试用例选择问题和航班机组成员问题,是同一个问题
B 该问题,是一个一维的集合覆盖问题,仍旧可用下列数学模型来表达:
C 该问题,不同于(B)的数学模型。它是一个二维的集合覆盖问题,(B)中数学模型的可能解是,而本问题的可能解是
D 上述说法全不正确
解析:课程表优化问题是一个二维集覆盖问题,其可能解为二维矩阵,所以其它选项的说法都不正确,此选项正确
33 设一个问题的解的形式为x,下列说法不正确的是_____。
由x的取值空间给定的任何一个x值被称为可能解
满足问题约束的可能解被称为可行解
在任何一组可行解中求出的最优解被称为是满意解
所有可行解中的最优解是问题的最优解
34 对于类似于课程表优化安排问题的二维集覆盖问题:
利用遗传算法计算求解,回答问题:关于其可能解的编码,说法正确的是_____。
仅可以按行优先编码
仅可以按列优先编码
既可以按行优先编码,又可以按列优先编码,但其对算法中交叉、变异操作规则设计是没有影响的
既可以按行优先编码,又可以按列优先编码,还可以有其他编码方式,不同的编码设计,可以有不同的交叉、变异操作规则
35 对于类似于课程表优化安排问题的二维集覆盖问题:
利用遗传算法计算求解,回答问题:关于交叉规则的设计,下列说法不正确的是_____。
既可以采取两段交叉,也可以采取多段交叉
两段交叉中,交叉点的选择可以随机确定:即随机确定一个交叉点,从中将解编码分为两段,将两个可能解的两段编码交换形成两个新的可能解
多段交叉既可采取等距离分段交叉,亦可采取可变距离分段交叉,交叉点和段间距离都可以随机的确定
交叉规则仅有以上(A)(B)(C)几种情况
解析:交叉规则十分的丰富,但交叉规则不仅仅限于此,还可以采用交叉与随机的交叉规则,如:两个染色体的各段的x位如都相同,则不交换,否则以概率p进行交换。具体问题具体分析。
36 遗传算法设计需要引入变异操作。变异操作是对种群中的某些可能解(个体)的某些编码位进行突变处理,例如二进制编码的解01110011,其第3位(自左而右)当前为1则将其变为0,称为变异操作。关于变异操作,回答问题:通过变异操作,使遗传算法可维持群体多样性。为什么?下列说法不正确的是_____。
A 由于初始解设置或经多次迭代后,很可能使一代种群中的各个可能解具有相似的结构,此时无论怎样交叉产生的新可能解,都将在与该结构相近的可能解空间搜索--这种现象被称为过早收敛
B 为避免过早收敛,有必要保持种群个体的多样性,即使种群中的可能解具有不同的结构,怎样保持不同的结构,即通过变异,打破原有相似的结构,进入到另外的空间中搜索
C 当进化到某一代时,种群的解可能具有相类似的结构,可能始终在这个类似结构的解集合中进行循环,为避免这种情况, 通过对一些解应用变异操作,打破种群的解的相类似结构,有助于跳出循环,在更大空间中进行搜索;当产生的可行解接近最优解的邻域时,应谨慎使用变异,以免偏向最优解的结构被破坏;而当产生的可行解并未接近最优解的邻域时,可以选择较大的变异概率以保证种群解的多样性
D 上述说法有不正确的
37 遗传算法是迭代计算求解的方法。如何终止遗传算法,下列说法正确的是_____。
当适应度已经达到饱和,继续进化不会产生适应度更好的近似解时,可终止遗传算法
当某一个可行解已经满足满意解的条件,即满意解已经找到,可终止遗传算法
当进化到指定的代数(进化次数限制)或者当达到一定的资源占用量(计算耗费的资源限制,如计算时间、计算占用的内存等)时可终止算法,如当产生超过一定数量的不重复可行解后即可终止
仅有上述(A)(B)(C)几种终止遗传算法的情况
错选为A
解析:当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。
38 遗传算法是一种算法设计策略。不同的问题甚至相同的问题都可以设计不同的遗传算法进行求解,不同的遗传算法如可能解编码的不同、交叉与变异规则的不同、概率模型的选择不同等。如何衡量遗传算法的性能好坏,下列说法正确的是_____。
A 对一些已知最优解的问题类别,可以通过精确算法获得最优解,然后使用“近似率”来衡量解的质量。所谓近似率是指算法求得的解与问题最优解的近似程度。则有:近似率越高的遗传算法,性能越好
B 对理论最优解不知道的问题类别,可以通过不同遗传算法在相同问题实例集上测试结果的横向比较来进行评价,即有:在执行相同次数的迭代后,获得满意解越好的遗传算法,性能越好
C 对于具有迭代特征的近似算法,在迭代多少次后能够使得结果稳定(通俗来讲,即结果不再随进一步迭代而发生变化或发生极小的可以被忽略的变化)—这被称为收敛速度,它从一定程度反映了算法求解的“快慢”。在达到期望的满意解的前提下,迭代次数越少越好
D 除上述衡量性能的指标外,还有其他的指标来衡量性能
解析:其他指标,诸如获得满意解所花费的平均时间以及占用的系统资源都可以列为衡量算法性能的指标
39 遗传算法是一种算法设计策略。不同的问题甚至相同的问题都可以设计不同的遗传算法进行求解,不同的遗传算法如可能解编码的不同、交叉与变异规则的不同、概率模型的选择不同等。如何衡量遗传算法的性能好坏,下列说法不正确的是_____。
近似率越低的算法,性能越好
在执行相同次数的迭代后,获得满意解越好的算法,性能越好
在达到期望满意解的前提下,迭代次数越少的算法,性能越好
当不同算法均应用多次后,求得满意解次数越多的算法,性能越好
42 P类问题、NP类问题、NPC类问题是计算机科学领域关于可求解性可计算性很重要的概念。关于P、NP和NPC类问题,下列说法不正确的是_____。
P类问题是计算机可以在有限时间内能够求解的问题
NP类问题是计算机可以在有限时间内能够验证“解”的正确性的问题
NPC类问题是对问题的每一个可能解,计算机都可以在有限时间内验证“解”的正确性的问题,被称为NP完全问题
上述说法有不正确的