代价树如下图所示分别给出宽度优先及深度优先搜索策略-Read
第3章作业题参考答案
2.综述图搜索的方式和策略。
答:用计算机来实现图的搜索,有两种最基本的方式:树式搜索和线式搜索。
树式搜索就是在搜索过程中记录所经过的所有节点和边。
线式搜索就是在搜索过程中只记录那些当前认为是处在所找路径上的节点和边。
线式搜索的基本方式又可分为不回溯和可回溯的的两种。
图搜索的策略可分为:盲目搜索和启发式搜索。
盲目搜索就是无向导的搜索。
树式盲目搜索就是穷举式搜索。
而线式盲目搜索,对于不回溯的就是随机碰撞式搜索,对于回溯的则也是穷举式搜索。
启发式搜索则是利用“启发性信息”引导的搜索。
启发式搜索又可分为许多不同的策略,如全局择优、局部择优、最佳图搜索等。
5.(供参考)解:引入一个三元组(q0,q1,q2)来描述总状态,开状态
为0,关状态为1,全部可能的状态为:
Q0=(0,0,0) ; Q1=(0,0,1); Q2=(0,1,0)
Q3=(0,1,1) ; Q4=(1,0,0); Q5=(1,0,1)
Q6=(1,1,0) ; Q7=(1,1,1)。
翻动琴键的操作抽象为改变上述状态的算子,即F ={a, b, c} a:把第一个琴键q0翻转一次 b:把第二个琴键q1翻转一次 c:把第三个琴键q2翻转一次
问题的状态空间为<{Q5},{Q0 Q7}, {a, b, c}>
问题的状态空间图如下页所示:从状态空间图,我们可以找到Q5到Q7为3的两条路径,而找不到Q5到Q0为3的路径,因此,初始状态“关、开、关”连按三次琴键后只会出现“关、关、关”的状态。
6.解:用四元组(f 、w 、s 、g)表示状态, f 代表农夫,w 代表狼,s
代表羊,g 代表菜,其中每个元素都可为0或1,用0表示在左
(0,0,
(1,0,(0,0,(0,1,(1,1,(1,0,(0,1,
(1,1,
a
c
a
b a
c a
b
c b
b c
岸,用1表示在右岸。
初始状态S0:(0,0,0,0) 目标状态:(1,1,1,1)
不合法的状态:(1,0,0,*),(1,*,0,0),(0,1,1,*),(0,*,1,1) 操作集F={P1,P2,P3,P4,Q1,Q2,Q3,Q4}
方案有两种:p2→q0 →p3→q2 →p2 →q0 →p2
p2→q0 →p1→q2 →p3→q0→p2
12 一棵解树由S0,A,D,t1,t2,t3组成;另一棵解树由S0,B,E,t4,t5
组成。
左边的解树:按和代价: g(D)=4,g(A)=7,g(S0)=12
按最大代价: g(D)=2,g(A)=5,g(S0)=10
右边的解树:按和代价:g(E)=2,g(B)=11,g(S0)=18
按最大代价: g(E)=2,g(B)=7,g(S0)=14
按和代价计算,左边的解树为最优解树;按最大代价计算,仍然是左边的解树为最优解树。
因此,左边的解树为最优解树。
此题需注意:代价最小的为最优解树。
所以,不管是按和代价,还是按最大代价,都是左边的树是最优解树。
14.传教士与野人问题:传教士(M)与野人(C)数目均为五人,渡
船(B)最多可乘3人,请定义一个启发函数,并给出相应的搜索树。
解:定义启发函数h(n)=0; h(n)=M+C; h(n)=M+C-2B 只有h(n)=M+C-2B可满足h(n)≤h*(n),是满足A*条件
的。
分两种情况来讨论:
先考虑船在左岸的情况,如果不考虑限制条件,至少需要[(M+C-3)/2]*2+1次,其中分子上的“-3”表示剩下的3个留待最后一次运过去。
除以2是因为一个来回可以运过去2人,需(M+C-3)
/2个来回,而来回数不能是小数,所以要取整。
一个来回是两次,所以“*2”,而最后的“+1”,则表示将剩下的3个运过去需要一次摆渡。
化简后为:
[(M+C-3)/2]*2+1=M+C-2
再考虑船在右岸的情况。
同样不考虑限制条件。
船在右岸,需要一个人将船运往左岸,因此,对于状态(M,C,0),需要的摆渡数,相当于船在左岸的(M+1,C,1)或(M,C+1,1),所以需要的最少摆渡数为M+C+1-2+1=M+C。
综合条件,需要的最少摆渡数为M+C-2B。
当加上限制条件时,最优的摆渡次数只能大于等于该摆渡数。
所以该启发函数是满足A*条件的。
搜索图如下:
补充1:代价树如下图所示:分别给出宽度优先及深度优先搜索策略下的搜索过程和解。
其中,F 、I 、 J 、L 是目标节点。
宽度优先搜索过程:A -﹥ C -﹥ B -﹥ G -﹥E
-﹥D -﹥ M -﹥ J ,G (J )=6, 解为:A -﹥ B -﹥ E -﹥ J 深度优先搜索过程为:A -﹥ C -﹥ G -﹥E
-﹥M -﹥P ,G (P )=7,
解为:A -﹥ C -﹥ G -﹥E -﹥M -﹥P
补充剪枝:最佳路径为N-〉A-〉B-〉C-〉D
N
≥
以下题目仅供大家参考:
1.代价树如下图所示:分别给出宽度优先及深度优先搜索策略下的搜
索过程和解。
其中,F、I、 J、L是目标节点。
解答、宽度优先搜索过程:(1)先将A放入OPEN表中,g(A)=0;(2)将A放入CLOSED表中,扩展A节点,得节点B、C,g(B)=1,g(C)=2,将B、C按代价从小到大放入OPEN中;
(3)将B放入CLOSED表中,扩展B节点得节点D、E,g(D)=5,g(E)=4,将C、D、E按代价从小到大排列放入OPEN表中;(4)将C放入CLOSED表中,扩展C得节点F、G,g(F)=6,g(G)=3,将D、E、F、G按代价从小到大排列放入OPEN表中;
(5)将G放入CLOSED表中,扩展G得L,M,g(L)=4,g(M)=5, 将D、E、F、L,M按代价从小到大排列放入OPEN表中;(6)将L放入CLOSED表中,L为目标节点,搜索成功。
解为A-﹥B-﹥C-﹥G-﹥L,g(L)=4
深度优先搜索过程:
(1)先将A放入OPEN表中,g(A)=0;
(2)将A 放入CLOSED 表中,扩展A 节点,得节点B 、C ,
g(B)=1,g(C)=2,将B 、C 按代价从小到大放入OPEN 表中; (3)将B 放入CLOSED 表中,扩展B 节点得节点D 、E ,g (D )
=5,g(E)=4,将D 、E 按 代价从小到大排列放入OPEN 表中; (4)将E 放入CLOSED 表中,扩展E 节点得节点J 、K ,g (J )=5,g(K)=6,
将J 、K 按 代价从小到大排列放入OPEN 表中; (5)将J 放入CLOSED 表中,J 为目标节点,搜索成功。
解为A -﹥ B -﹥ E -﹥ J ,g (J )=4
2设有三个大小不等的圆盘A ,B ,C 套在一根轴上,每个圆盘都标有数字1234,并且每个圆盘都可以独立地绕轴做逆时针转动,并且每次转动90度,其初始状态和目标状态如图所示,请分别画出广度优先搜索和深度优先搜索的搜索树,并求出从S0到Sg 的路径。
解:状态表示:用轴上方的3个数字作为标记,按A,B,C 逆时针顺序移动
初始状态S0
初始状态Sg
状态为(a,b,c)
初始状态为;(2,2,2),目标状态为(4,2,1)
操作每次转动其中的一个盘,逆时针90度,分别为
Pa:if a>=2then a=a-1
If a=1then a=4
Pb:if b>=2 then b=b-1
If b=1then b=4
Pc:if c>=2 then c=c-1
If c=1then c=4
则广度优先搜索树为
深度优先搜索树为:
3 余一棋博弈法如下:两棋手可以从五个钱币堆中轮流拿走一个、两个或三个钱币,捡起最后一个钱币者算输。
试通过博弈证明,后走的选手必胜,并给一个简单的特征标记来表示取胜策略。
人工智能[第五章状态空间搜索策略]山东大学期末考试知识点复习
第五章状态空间搜索策略搜索是人工智能的一个基本问题,是推理不可分割的一部分。
搜索是求解问题的一种方法,是根据问题的实际情况,按照一定的策略或规则,从知识库中寻找可利用的知识,从而构造出一条使问题获得解决的推理路线的过程。
搜索包含两层含义:一层含义是要找到从初始事实到问题最终答案的一条推理路线;另一层含义是找到的这条路线是时间和空间复杂度最小的求解路线。
搜索可分为盲目搜索和启发式搜索两种。
1.1 盲目搜索策略1.状态空间图的搜索策略为了利用搜索的方法求解问题,首先必须将被求解的问题用某种形式表示出来。
一般情况下,不同的知识表示对应着不同的求解方法。
状态空间表示法是一种用“状态”和“算符”表示问题的方法。
状态空间可由一个三元组表示(S,F,Sg)。
利用搜索方法求解问题的基本思想是:首先将问题的初始状态(即状态空间图中的初始节点)当作当前状态,选择一适当的算符作用于当前状态,生成一组后继状态(或称后继节点),然后检查这组后继状态中有没有目标状态。
如果有,则说明搜索成功,从初始状态到目标状态的一系列算符即是问题的解;若没有,则按照某种控制策略从已生成的状态中再选一个状态作为当前状态,重复上述过程,直到目标状态出现或不再有可供操作的状态及算符时为止。
算法5.1 状态空间图的一般搜索算法①建立一个只含有初始节点S0的搜索图G,把S放入OPEN表中。
②建立CLOSED表,且置为空表。
③判断OPEN表是否为空表,若为空,则问题无解,退出。
④选择OPEN表中的第一个节点,把它从OPEN表移出,并放入CLOSED表中,将此节点记为节点n。
⑤考察节点n是否为目标节点,若是,则问题有解,并成功退出。
问题的解的这条路径得到。
即可从图G中沿着指针从n到S⑥扩展节点n生成一组不是n的祖先的后继节点,并将它们记作集合M,将M中的这些节点作为n的后继节点加入图G中。
⑦对那些未曾在G中出现过的(即未曾在OPEN表上或CLOSED表上出现过的)M中的节点,设置一个指向父节点(即节点n)的指针,并把这些节点加入OPEN 表中;对于已在G中出现过的M中的那些节点,确定是否需要修改指向父节点(n 节点)的指针;对于那些先前已在G中出现并且已在COLSED表中的M中的节点,确定是否需要修改通向它们后继节点的指针。
人工智能经典习题集及各章总结
人工智能经典习题集及各章总结第一部分绪论习题解答:1.什么是人工智能?进展过程中经历了什么阶段?解:人工智能是计算机科学的一个重要分支,也是一门正在进展中的综合性前沿学科,它是由计算机科学、操纵论、信息论、神经生理学、哲学、语言学等多种学科相互渗透而进展起来的,目前正处于进展阶段尚未形成完整体系。
进展过程中经历的阶段有:第一阶段(40年代中~50年代末)神经元网络时代第二阶段(50年代中~60年代中)通用方法时代第三阶段(60年代中~80年代初)知识工程时代第四阶段(80年代中~90年代初)新的神经元网络时代第五阶段(90年代初~现在)海量信息处理与网络时代2.人工智能研究的基本内容是什么?解:基本内容是:搜索技术、知识表示、规划方法、机器学习、认知科学、自然语言懂得与机器翻译、专家系统与知识工程、定理证明、博弈、机器人、数据挖掘与知识发现、多Agent系统、复杂系统、足球机器人、人机交互技术等。
3.人工智能要紧有哪几大研究学派?解:(1)符号主义学派:由心理学途径产生,符号主义认为人工智能起源于数理逻辑,人类认识(智能)的基本元素是符号,而智能行为则是符号运算的结果。
(2)连接主义学派:由生理学途径产生,连接主义又称之仿生学派,认为人工智能的基本元素是神经元,智能产生于大量神经元的并行分布式联结之中,而智能行为则是联结计算的结果。
(3)行为主义学派:由生物演化途径产生,行为主义认为人工智能起源于操纵论,提出智能取决于感知与行为,取决于对外界复杂环境的习惯,而不是表示与推理。
4.人工智能有什么要紧的研究领域?解:(1)问题求解(2)逻辑推理与定理证明(3)自然语言懂得(4)自动程序设计(5)专家系统(6)机器学习(7)神经网络(8)机器人学(9)模式识别(10)机器视觉(11)智能操纵(12)智能检索(13)智能调度与指挥(14)分布式人工智能与Agent(15)计算智能与进化计算(16)数据挖掘与知识发现(17)人工生命(18)系统与语言工具第2部分知识与知识表示本章小结:习题解答:1 设有如下问题:(1)有五个相互可直达且距离已知的城市A、B、C、D、E,如图所示;(2)某人从A地出发,去其它四个城市各参观一次后回到A;(3)找一条最短的旅行路线请用产生式规则表示旅行过程。
三章状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
算法3.2 状态空间图的宽度优先搜索算法
(1)把初始节点S0放人OPEN表中。
(2)如果OPEN表是空表,则没有解,失败退出;否则继续。
第三章 状态空间搜索策略
3.1.2 搜索的种类
搜索分为盲目搜索和启发式搜索两种。
盲目搜索:又称无信息搜索。即在搜索过程中,只按预先规 定的搜索控制策略进行搜索。问题本身的特性对搜索控制策 略没有任何影响,搜索带有盲目性,效率不高,只用于解决 比较简单的问题。
启发式搜索:又称有信息搜索。指在搜索求解过程中,根据 问题本身的特性来不断地改变或调整搜索的方向,使搜索朝 着最有希望的方向前进,加速问题的求解,并找到最优解。 搜索求解的效率高,易于求解复杂的问题,但抽取出问题的 相关特性和信息难。
初始棋局目标棋局第三章状态空间搜索策略状态空间图是一类问题的抽象表示有许多智力问题如hanoi塔问题旅行商问题八皇后问题农夫过河问题等和实际问题如路径规划定理证明演绎推理机器人行动规划等都可以归结为在状态空间图中寻找目标或路径的问题
第三章 状态空间搜索策略
第三章 状态空间搜索策略
3.1 搜索的概念及种类 3.2 盲目搜索策略 3.3 启发式搜索策略
第三章 状态空间搜索策略
3.1 搜索的概念及种类
3.1.1 搜索的概念
现实世界中的大多数问题都是非结构化问题,一般不存在现 成的求解方法来求解这样的问题,而只能利用已有的知识一 步一步地摸索着前进。
搜索:是一种求解问题的方法,是寻找从问题初始事实到最 终答案的推理路线的一种过程。
深度优先搜索和广度优先搜索
二、 重排九宫问题游戏
在一个 3 乘 3 的九宫中有 1-8 的 8 个数及一个空格随机摆放在其中的格子里。如下面 左图所示。现在要求实现这样的问题:将该九宫调整为如下图右图所示的形式。调整规则是: 每次只能将与空格(上,下或左,右)相临的一个数字平移到空格中。试编程实现。
|2|8 |3|
|1|2|3|
from = f; to = t; distance = d; skip = false; } } class Depth { final int MAX = 100; // This array holds the flight information. FlightInfo flights[] = new FlightInfo[MAX]; int numFlights = 0; // number of entries in flight array Stack btStack = new Stack(); // backtrack stack public static void main(String args[]) {
下面是用深度优先搜索求解的程序:
// Find connections using a depth-first search. import java.util.*; import java.io.*; // Flight information. class FlightInfo {
String from; String to; int distance; boolean skip; // used in backtracking FlightInfo(String f, String t, int d) {
int dist; FlightInfo f; // See if at destination. dist = match(from, to); if(dist != 0) {
人工智能6第六章-与或树的搜索策略_搜索的完备性与效率 (2)
希望树
希望树的定义
选择待扩展节点时,挑选有希望成为最优 解树一部分的节点进行扩展,保证任一时刻 求出的部分解树的代价都是最小的。
例:与/或树的宽度优先搜索
Step3:扩展3得到5、B,都不是终叶节点,接 着扩展4。
Step4:扩展4得到A、t2。
t过2是程终标叶出节4、点2,均标为示可4解为节可点解。节点。应用可解标示
还不能确定1为可解节点。此时5号节点是OPEN表 中的第一个待考察的节点,所以下一步扩展5号节 点。
OPEN ……
– 如果x是“或”节点,y1, y2, …, yn是它的子节点,则具有
min
1i n
c x, yi h yi
值的那个子节点yi也应在希望树中。
– 如果x是“与”节点,则它的全部子节点都应在希望树中。
有序搜索算法流程
(1)把初始节点S放入OPEN表中。 (2)根据当前搜索树中节点的代价求出以S为根的希望
如果x不可扩展,且不是终叶节点,则定义:h(x)=
如果x是“或”节点,y1, y2, …, yn是它的子节点,则x的代价为:
h
x
min
1i n
c
x,
yi
h
yi
如果x是“与”节点.则x的代价有两种计算方法:
※和代价法
n
h x c x, yi h yi i 1
※最大代价法
h
x
max
1i n
c
x,
宽度优先搜索算法流程
“八”数码问题的宽度优先搜索与深度优先搜索
“八”数码问题的宽度优先搜索与深度优先搜索我在观看视频和查看大学课本及网上搜索等资料才对“八”数码问题有了更进一步的了解和认识。
一、“八”数码问题的宽度优先搜索步骤如下:1、判断初始节点是否为目标节点,若初始节点是目标节点则搜索过程结束;若不是则转到第2步;2、由初始节点向第1层扩展,得到3个节点:2、3、4;得到一个节点即判断该节点是否为目标节点,若是则搜索过程结束;若2、3、4节点均不是目标节点则转到第3步;3、从第1层的第1个节点向第2层扩展,得到节点5;从第1层的第2个节点向第2层扩展,得到3个节点:6、7、8;从第1层的第3个节点向第2层扩展得到节点9;得到一个节点即判断该节点是否为目标节点,若是则搜索过程结束;若6、7、8、9节点均不是目标节点则转到第4步;4、按照上述方法对下一层的节点进行扩展,搜索目标节点;直至搜索到目标节点为止。
二、“八”数码问题的深度优先搜索步骤如下:1、设置深度界限,假设为5;2、判断初始节点是否为目标节点,若初始节点是目标节点则搜索过程结束;若不是则转到第2步;3、由初始节点向第1层扩展,得到节点2,判断节点2是否为目标节点;若是则搜索过程结束;若不是,则将节点2向第2层扩展,得到节点3;4、判断节点3是否为目标节点,若是则搜索过程结束;若不是则将节点3向第3层扩展,得到节点4;5、判断节点4是否为目标节点,若是则搜索过程结束;若不是则将节点4向第4层扩展,得到节点5;6、判断节点5是否为目标节点,若是则搜索过程结束;若不是则结束此轮搜索,返回到第2层,将节点3向第3层扩展得到节点6;7、判断节点6是否为目标节点,若是则搜索过程结束;若不是则将节点6向第4层扩展,得到节点7;8、判断节点7是否为目标节点,若是则结束搜索过程;若不是则将节点6向第4层扩展得到节点8;9、依次类推,知道得到目标节点为止。
三、上述两种搜索策略的比较在宽度优先搜索过程中,扩展到第26个节点时找到了目标节点;而在深度优先搜索过程中,扩展到第18个节点时得到了目标节点。
第三章 确定性推理
首先,扩展最深的节点使得搜索从起始节点沿某条单一路 径进行下去;只有当搜索到达一个没有后裔的状态时,才考虑 最近的另一条替代的路径。替代路径与前面已经试过的路径不 同之处仅仅在于:改变最后n步,而且保持n尽可能小。
对于许多问题,其状态空间搜索树的深度可能为无限深, 或者可能至少要比某个可接受的解答序列的已知深度上限还要 深。为了防止搜索过程沿着无益的路径扩展下去,往往给出一 个节点扩展的最大深度——深度界限。任何节点如果达到了深 度界限,那么都将把它们作为没有后继节点处理。值得说明的 是,即使应用了深度界限的规定,所求得的解答路径并不一定 就是最短的路径。
3、宽度优先搜索方法分析:
宽度优先搜索是图搜索一般过程的特殊情况, 将图搜索一般过程中的第8步具体化为本算法中的 第5步,这就是将OPEN表作为“先进先出”的队列 进行操作。
宽度优先搜索的缺点:搜索方向盲目性较大, 当目标节点距离初始节点较远时,将会产生大量的 无用节点,搜索效率低。
但是,只要问题有解,用宽度优先搜索总可以 找到它的解,而且是搜索树中从初始节点到目标节 点路径最短的解(不考虑每条弧线的长度、代价、 扩展节点数等,只考虑经历的步数)。因此,宽度 优先搜索策略是完备的。搜索树能提供所有存在的 路径(如果没有路径存在,对有限图来说,就以失 败退出;对于无限图来说,则永远不会终止)。
宽度优先搜索示意图
2、宽度优先搜索算法如下:
(1) 把起始节点放到OPEN表中(如果该起始节 点为一目标节点,则求得一个解答)。
(2) 如果OPEN表是个空表,则没有解,失败退 出;否则继续。
(3) 把第一个节点(节点n)从OPEN表移出,并 把它放入CLOSED扩展节点表中。
状态空间的搜索策略
扩展:用合适算符对一个节点 扩展 : 进行操作,生成一组子节点。 进行操作,生成一组子节点。 存放刚生成的节点。 存放刚生成的节点。 不同搜索策略, 节点在OPEN 不同搜索策略 , 节点在 OPEN 表中的排列顺序不同。 表中的排列顺序不同。
COLSE表 COLSE表 编号 状态节点 父节点 OPEN表 OPEN表 状态节点 父节点
当搜索树不再有末被扩展的端节点时, 表为空, 当搜索树不再有末被扩展的端节点时,即OPEN表为空, 表为空 搜索过程失败,从初始节点达不到目标节点。 搜索过程失败,从初始节点达不到目标节点。一般搜索过程的几点说明
4. 步骤⑥的说明 步骤⑥ 一个节点经一个算符操作通常指生成一个子节点。 一个节点经一个算符操作通常指生成一个子节点。 由于适用于一个节点的算符可能有多个, 由于适用于一个节点的算符可能有多个 , 此时就会 生成一组子节点。 生成一组子节点。 判断子节点是否是当前扩展节点的父节点、 判断子节点是否是当前扩展节点的父节点 、 祖父节 点等,若是,则删除。 点等,若是,则删除。 余下的子节点记做集合M,加入图 中 余下的子节点记做集合 ,加入图G中。 扩展节点时,生成该节点的所有后继节点。 扩展节点时,生成该节点的所有后继节点。
CLOSED: CLOSED:已扩展节点表
存放将扩展或已扩展节点。 存放将扩展或已扩展节点。
一般搜索过程算法流程
建立只含有初始节点S的搜索图G, 放到OPEN表中; 表中; ① 建立只含有初始节点 的搜索图 ,把S放到 放到 表中 建立CLOSED表,其初始值为空表; ② 建立 表 其初始值为空表; 表是空表, ③ 若OPEN表是空表,则失败退出; 表是空表 则失败退出; ④ 选择 选择OPEN表中第一个节点,把它从 表中第一个节点, 表中第一个节点 把它从OPEN表移出并放进 表移出并放进 CLOSED表中,称此节点为节点 ; 表中, 表中 称此节点为节点n; 为目标节点, ⑤ 若n为目标节点,则有解并成功退出,解是追踪图 中沿 为目标节点 则有解并成功退出,解是追踪图G中沿 指针从 到 这条路径得到 指针在第⑦步中设置) 这条路径得到( 指针从n到S这条路径得到(指针在第⑦步中设置); 扩展n,生成不是n的祖先的那些后继节点的集合 的祖先的那些后继节点的集合M, ⑥ 扩展 , 生成不是 的祖先的那些后继节点的集合 , 把 M的这些成员作为 的后继节点添入图 中; 的这些成员作为n的后继节点添入图 的这些成员作为 的后继节点添入图G中
算法分析与设计综合试卷
算法与分析综合试卷一、选择题1.算法分析是()。
A.将算法用某种程序设计语言恰当地表示出来B.在抽象数据集合上执行程序,以确定是否会产生错误的结果C.对算法需要多少计算时间和存储空间作定量分析D.证明算法对所有可能的合法输入都能算出正确的答案2.算法确认是()。
A.将算法用某种程序设计语言恰当地表示出来B.证明算法对所有可能的合法输入都能算出正确的答案C.对算法需要多少计算时间和存储空间作定量分析D.在抽象数据集合上执行程序,以确定是否会产生错误的结果3.算法与程序的区别在于算法具有()。
A.能行性B.确定性C.有穷性D.输入和输出4.设A[1..60]={11,12,…,70}。
算法BINARYSEARCH在A上搜索x=33、7、70、77时执行的元素比较次数分别为a、b、c、d,则()。
A.a<b<c<d B.a>b=c=d C.a<b=c=d D.a<c<b=d5.算法INSERTIONSORT 在A[1..8]={45,33,24,45,12,12,24,12}上运行时执行的元素比较次数为()。
A.14 B.28 C.7 D.226.当A[1..n]中元素取值在范围()时,算法RADIXSORT 的时间复杂度为T(nlogn)。
A.A.[1..n] B.[n..2n] C.[1..n2] D.[1.. 2n]7.设待排序的序列A[1..n]中元素取值于[1..n!],则下列哪一个算法最坏情况下排序更慢?A.SELECTIONSORT B.INSERTIONSORTC.RADIXSORT D.BUBBLESORT8.一个排序算法如果能够使得序列中相同元素的位置次序在排序前后保持一致,则称之为稳定的排序算法。
下列几种排序算法中哪一种不是稳定的?A.SELECTIONSORT B.RADIXSORTC.BUBBLEBSORT D.BOTTOMUPSORT9.使用算法EXP来计算下列哪一个整数次幂所花费的乘法次数最多?A.35B.36C.37D.3810.算法MAJORITY在下列哪一个输入上执行时最后j=n,count=1,且c是主元素?A.{5,7,5,4,5} B.{5,7,5,4,8} C.{2,4,1,4,4,4,6,4} D.{1,2,3,4,5} 11.用贪心法设计算法的关键是()。
人工智能教程习题及答案第5章习题参考解答
第五章搜索策略习题参考解答5.1 练习题5.1 什么是搜索?有哪两大类不同的搜索方法?两者的区别是什么?5.2 用状态空间法表示问题时,什么是问题的解?求解过程的本质是什么?什么是最优解?最优解唯一吗?5.3 请写出状态空间图的一般搜索过程。
在搜索过程中OPEN表和CLOSE表的作用分别是什么?有何区别?5.4 什么是盲目搜索?主要有几种盲目搜索策略?5.5 宽度优先搜索与深度优先搜索有何不同?在何种情况下,宽度优先搜索优于深度优先搜索?在何种情况下,深度优先搜索优于宽度优先搜索?5.6 用深度优先搜索和宽度优先搜索分别求图5.10所示的迷宫出路。
图5.10 习题5.6的图5.7 修道士和野人问题。
设有3个修道士和3个野人来到河边,打算用一条船从河的左岸渡到河的右岸去。
但该船每次只能装载两个人,在任何岸边野人的数目都不得超过修道士的人数,否则修道士就会被野人吃掉。
假设野人服从任何一种过河安排,请使用状态空间搜索法,规划一使全部6人安全过河的方案。
(提示:应用状态空间表示和搜索方法时,可用(N m,N c)来表示状态描述,其中N m和N c分别为传教士和野人的人数。
初始状态为(3,3),而可能的中间状态为(0,1),(0,2),(0,3), (1,1),(2,1),(2,2),(3,0),(3,1),(3,2)等。
)5.8 用状态空间搜索法求解农夫、狐狸、鸡、小米问题。
农夫、狐狸、鸡、小米都在一条河的左岸,现在要把它们全部送到右岸去。
农夫有一条船,过河时,除农夫外,船上至多能载狐狸、鸡和小米中的一样。
狐狸要吃鸡,鸡要吃小米,除非农夫在那里。
试规划出一个确保全部安全的过河计划。
(提示:a.用四元组(农夫,狐狸,鸡,米)表示状态,其中每个元素都可为0或1,0表示在左岸,1表示在右岸;b.把每次过河的一种安排作为一个算符,每次过河都必须有农夫,因为只有他可以划船。
)5.9 设有三个大小不等的圆盘A 、B 、C 套在一根轴上,每个圆盘上都标有数字1、2、3、4,并且每个圆盘都可以独立地绕轴做逆时针转动,每次转动90°,初始状态S 0和目标状态S g 如图5.11所示,用宽度优先搜索法和深度优先搜索法求从S 0到S g 的路径。
