1、-人工智能各章小结及习题解答第一部分 绪论习题解答:1什么是人工智能?发展过程中经历了哪些阶段?解:人工智能是计算机科学的一个重要分支,也是一门正在发展中的综合性前沿学科,它是由计算机科学、控制论、信息论、神经生理学、哲学、语言学等多种学科相互渗透而发展起来的,目前正处于发展阶段尚未形成完整体系。 发展过程中经历的阶段有: 第一阶段(40年代中50年代末) 神经元网络时代第二阶段(50年代中60年代中) 通用方法时代第三阶段(60年代中80年代初) 知识工程时代第四阶段(80年代中90年代初) 新的神经元网络时代第五阶段(90年代初现在) 海量信息处理与网络时代2人工智能研究的基本内容是什么?
2、解:基本内容是:搜索技术、知识表示、规划方法、机器学习、认知科学、自然语言理解与机器翻译、专家系统与知识工程、定理证明、博弈、机器人、数据挖掘与知识发现、多Agent系统、复杂系统、足球机器人、人机交互技术等。3人工智能主要有哪几大研究学派?解:()符号主义学派:由心理学途径产生,符号主义认为人工智能起源于数理逻辑,人类认识(智能)的基本元素是符号,而智能行为则是符号运算的结果。()连接主义学派:由生理学途径产生,连接主义又称为仿生学派,认为人工智能的基本元素是神经元,智能产生于大量神经元的并行分布式联结之中,而智能行为则是联结计算的结果。 ()行为主义学派:由生物演化途径产生,行为主义认为人
3、工智能起源于控制论,提出智能取决于感知和行为,取决于对外界复杂环境的适应,而不是表示和推理。人工智能有哪些主要的研究领域?解:()问题求解()逻辑推理与定理证明()自然语言理解()自动程序设计()专家系统()机器学习()神经网络()机器人学()模式识别()机器视觉()智能控制()智能检索()智能调度与指挥()分布式人工智能与()计算智能与进化计算()数据挖掘与知识发现()人工生命()系统与语言工具第2部分 知识与知识表示本章小结:知识表示谓词表示法产生式表示法框架表示法语义网络表示法框架通常由指定事物各个方面的槽组成,每个槽拥有若干个侧面,而每个侧面又可拥有若干个值。语义网络由节点和弧线或链线
4、组成,节点用于表示物体、概念和状态,弧线用于表示节点间的关系。产生式系统由3个基本部分组成:规则库、综合数据库、控制系统。首先定义谓词,指出每个谓词的确切含义,然后再用连接词把有关的谓词连接起来,形成一个谓词公式表达一个完整的意义。 习题解答:1 设有如下问题:(1)有五个相互可直达且距离已知的城市A、B、C、D、E,如图所示;(2)某人从A地出发,去其它四个城市各参观一次后回到A;(3)找一条最短的旅行路线请用产生式规则表示旅行过程。解:综合数据库(x)(x)中x可以是一个字母,也可以是一个字符串。初始状态(A)目标状态(Ax1x2x3x4A) 规则集: r1: IF L(S)=5 THEN
5、 GOTO(A) r2: IF L(S)5 THEN GOTO(B) r3: IF L(S)5 THEN GOTO(C) r4: IF L(S)5 THEN GOTO(D) r5: IF L(S)C-D-E-B-A总距离为5+6+8+10+7=362 神州大学和东方大学两校篮球队在东方大学进行一场比赛,结局的比分是85:89,用语义网络表示。第3部分 推理本章小结:自然演绎推理推理经典逻辑推理不确定与非单调推理归结演绎推理与/或形演绎推理习题解答:1 张某被盗,公安局派出五个侦察员去调查。研究案情时,侦察员A说“赵与钱中至少有一人作案”;侦察员B说“钱与孙中至少有一人作案”;侦察员C说“孙与李
6、中至少有一人作案”;侦察员D说“赵与孙中至少有一人与此案无关”;侦察员E说“钱与李中至少有一人与此案无关”。如果这五个侦察员的话都是可信的,试用归结演绎推理求出谁是盗窃犯。解:第一步:将5位侦察员的话表示成谓词公式,为此先定义谓词。设谓词P(x)表示是作案者,所以根据题意:A: P(zhao) P(qian) B: P(qian) P(sun)C: P(sun) P(li) D: P(zhao) P(sun)E: P(qian) P(li)以上每个侦察员的话都是一个子句。第二步:将待求解的问题表示成谓词。设y是盗窃犯,则问题的谓词公式为P(y),将其否定并与ANSWER(y)做析取:P(y)
7、ANSWER(y)第三步:求前提条件及P(y) ANSWER(y)的子句集,并将各子句列表如下:(1) P(zhao) P(qian)(2) P(qian) P(sun)(3) P(sun) P(li)(4) P(zhao) P(sun)(5) P(qian) P(li)(6) P(y) ANSWER(y)第四步:应用归结原理进行推理。(7) P(qian) P(sun) (1)与(4)归结(8) P(zhao) P(li) (1)与(5)归结(9) P(qian) P(zhao) (2)与(4)归结(10) P(sun) P(li) (2)与(5)归结(11) P(zhao) P(li) (
8、3)与(4)归结(12) P(sun) P(qian) (3)与(5)归结(13) P(qian) (2)与(7)归结(14) P(sun) (2)与(12)归结(15) ANSWER(qian) (6)与(13)归结,=qian/y(16) ANSWER(sun) (6)与(14)归结, =sun/y所以,本题的盗窃犯是两个人:钱和孙。 2 任何兄弟都有同一个父亲,John和Peter是兄弟,且John的父亲是David,问Peter的父亲是谁?解:第一步:将已知条件用谓词公式表示出来,并化成子句集。那么,要先定义谓词。(1) 定义谓词:设Father(x,y)表示x是y的父亲。设Broth
9、er(x,y)表示x和y是兄弟。(2) 将已知事实用谓词公式表示出来:F1: 任何兄弟都有同一个父亲。( x)( y)( z)( Brother(x,y)Father(z,x)Father(z,y)F2: John和Peter是兄弟。Brother(John, Peter)F3: John的父亲是David。Father(David, John)(3) 将它们化成子句集,得S1=Brother(x,y)Father(z,x)Father(z,y), Brother(John, Peter), Father(David, John)第二步:把问题用谓词公式表示出来,并将其否定与谓词ANSWER做
10、析取。设Peter的父亲是u,则有:Father(u, Peter)将其否定与ANSWER做析取,得G: Father(u, Peter) ANSWER(u)第三步:将上述公式G化为子句集S2,并将S1和S2合并到S。S2=Father(u, Peter) ANSWER(u)S=S1S2将S中各子句列出如下:(1)Brother(x,y)Father(z,x)Father(z,y)(2)Brother(John, Peter)(3)Father(David, John)(4)Father(u, Peter) ANSWER(u)第四步:应用归结原理进行归结。(5)Brother(John,y)
11、Father(David,y) (1)与(3)归结,= David/z, John/x(6)Brother(John, Peter) ANSWER(David) (4)与(5)归结,= David/u, Peter/y(7)ANSWER(David) (2)与(6)归结第五步:得到了归结式ANSWER(David),答案即在其中,所以u=David,即Peter的父亲是David。第4部分 搜索策略本章小结:状态空间搜索策略搜索策略盲目搜索启发式搜索广度优先搜索深度优先搜索有界深度优先搜索代价树的广度优先搜索代价树的深度优先搜索局部择优搜索全局择优搜索A*算法与/或树搜索策略盲目搜索广度优先搜
12、索深度及有界深度优先搜索有序搜索特殊情况博弈问题提高搜索效率的方法-剪枝技术博弈问题:极大极小分析法:计算出端节点的估值,再推算出父节点的得分。推算的方法是:对“或”节点,选其子节点中一个最大的得分作为父节点的得分,这是为了使自己在可供选择的方案中选一个对自己最有利的方案;对“与”节点,选其子节点中一个最小的得分作为父节点的得分,这是为了立足于最坏的情况。这样计算出的父节点的得分称为倒推值。-剪枝技术:对于一个“与”节点来说,它取当前子节点中的最小倒推值作为它倒推值的上界,称此值为值。对于一个“或”节点来说,它取当前子节点中的最大倒推值作为它倒推值的下界,称此值为值。其一般规律为:(1)任何“
13、或”节点x的值如果不能降低其父节点的值,则对节点x以下的分枝可停止搜索,并使x的倒推值为。这种剪枝成为剪枝。(2)任何“与”节点x的值如果不能升高其父节点的值,则对节点x以下的分枝可停止搜索,并使x的倒推值为。这种剪枝成为剪枝。习题解答:1 图4-1是五城市间的交通路线图,A城市是出发地,E城市是目的地,两城市间的交通费用(代价)如图中数字所示。求从A到E的最小费用交通路线。图4-1解:先将交通图转换为代价树,如图4-2所示。若用g(x)表示从初始节点s0到节点x的代价,用c(x1,x2)表示从父节点x1到子节点x2的代价,则有:g(x2)=g(x1)+c(x1,x2)AC1B1D11D2E1
14、E2B2E4C2E33423454523图4-2方法一:代价树的广度优先搜索(扩展节点,将其子节点放入open表中,计算各子节点的代价,并按各节点的代价对open表中全部节点按从小到大的顺序进行排序(队列)步骤如下:图4-3-1 图4-3-2图4-3-3图4-3-4图4-3-5所以,最优路径为A-C-D-E方法二:代价树的深度优先搜索(不一定是最优解)(扩展节点,将其子节点按代价从小到大的顺序放到open表的首部(栈)步骤如下:AC1B143图4-4-1虽然D1的代价大于B1的代价,但按照代价树的深度优先搜索策略,要对D1进行扩展,放入closed表中(若按代价树的广度优先搜索,要对B1、D1
15、排序,先扩展B1)435AC1B1D12图4-4-2435AC1B1D18图4-4-3934E2B2E为目标节点,E2-D1-C1-A所以路径为A-注:该题代价树的深度优先搜索与代价树的广度优先搜索的结果相同,但这只是巧合。一般情况下,这两种方法得到的结果不一定相同。另外,由于代价树的深度优先搜索有可能进入无穷分支的路径,因此它是不完备的。如下图-5所示,分别用代价树的广度优先搜索策略和代价树的深度优先搜索策略,求A到E的最短费用路径。图解:先将其化成代价树,如图4-6:D1651C1D2E1C2E2B2E3E466577788图4-6(1)代价树的广度优先搜索,步骤如下:AB1C167图4-
16、7-1B1C167D1A511图4-7-25B1C16D1A11D2E17781415图4-7-3E为目标节点,路径为A-C-E,代价为15。(2)代价树的深度优先搜索,步骤如下:B1C167D1A511C2E2761817B1C167D1A511图4-8-2图4-8-1虽然C1代价低于D1,但按照代价树的深度优先搜索策略,对D1进行扩展,放入closed表中,因为B1扩展的节点为D1,而C1是A节点扩展得到的。E出栈,为目标节点,结束。故解路径为A-B-D-E,代价为17,不是最优解。注:深度优先搜索是不完备的,即使问题有解,也不一定能求得解。得到的解也不一定是最优解(因为是局部优先搜索)。
17、3 下图是五城市间的交通费用图,若从西安出发,要求把每个城市都访问一遍,最后到达广州,请找一条最优路线。边上的数字是两城市间的交通费用。北京B上海DA西安S0昆明C广州ESg7570809590120150170160130图4-9解:先画出代价树: AB1C1D1E1C2D2E2B2D3E3B3C3E4D4E5C4E6D5E7B4E8C5E9B5E10E11E12E13E14E15E16809512015017075160130709017013090751307013090751607570图4-10按代价树的广度优先搜索即可得出最优路线,步骤如下:C1图4-11-1AB1D1E18095
18、120150C1图4-11-2AB1D1E18095120150C2D2E2250155240C1图4-11-3AB1D1E18095120150C2D2E2250155240B2D3E3265225185C1图4-11-4AB1D1E18095120150C2D2E2250155240B2D3E3265225185B3C3E4195250190B4E8B3C3E4195250190C1图4-11-5AB1D1E18095120150C2D2E2250155240B2D3E3265225185C4E6285225C5E9365355300295E10B5E5D4380340420340E7D5
19、340425E12375故由此得出最优路线为A-B1-D2-C4-E12即A-B-D-C-E,交通费用为375。4 设有如图所示的一棵与/或树,请分别用与/或树的广度优先搜索及与/或树的深度优先搜索求出解树。BCt1t2t3t4t5AD解:(1)与/或树的广度优先搜索先扩展节点A,得到节点B和C,再扩展节点B,得节点t1、t2,因为t1、t2为可解节点,故节点B可解,从而可节点A可解。Bt1t2A所以求得解树为:(2)与/或树的深度优先搜索先扩展节点A, 得到节点B和C,再扩展节点C, 得节点D和t5,t5为可解节点,再扩展节D,得节点t3、t4,因为t3、t4为可解节点,故节点D可解,因为节
20、点D和t5可解,故节点C可解,从而可节点A可解。所以求得解树为:Ct3t4t5AD5 设有如图所示的与/或树,请分别按和代价法及最大代价法求解树代价。BCDt2t1t4At357223621(1) 按和代价法:h(B)=7,h(C)=3,h(A)=7+3+5+6=21(2) 按最大代价法:h(B)=5,h(C)=2,h(A)=5+5=101、 谈谈你对于人工智能的认识。人工智能就是人造智能,目前指用计算机模拟或实现的智能,因此人工智能又称机器智能。人工智能在我看来,应该是像人一样思考的系统、像人一样行动的系统、理性地思考的系统、理性地行动的系统,是像人一样具有感知的系统,是可以独立思考、独立判
21、断的系统2、 人工智能有哪些研究途径和方法?它们的关系如何?心理模拟,符号推演;生理模拟,神经计算;行为模拟,控制进化;群体模拟,仿生计算;博采广鉴,自然计算;原理分析,数学建模; 它们各有所长,也都有一定的局限性,因此这些研究途径和方法并不能互相取代,而是并存和互补的关系。3、 人工智能有哪些研究内容?搜索与求解、学习与发现、知识与推理、发明与创造、感知与交流、记忆与联想、系统与建造、应用与工程等八个方面。4、 人工智能有哪些分支领域和研究方向?从模拟的智能层次和所用的方法看,可分为符号智能和计算智能两大领域;从模拟的脑智能或脑功能看,可分为机器学习、机器感知、机器联想、机器推理、机器行为等
22、分支领域;从应用角度看,可分为难题求解、自动规划、调度与配置、机器定理证明、自动程序设计、机器翻译、智能控制、智能管理、智能决策、智能通信、智能仿真、智能CAD、智能制造、智能CAI、智能人机接口、模式识别、数据挖掘与数据库中的知识发现、计算机辅助创新、计算机文艺创作、机器博弈、智能机器人;从系统角度看,可分为智能计算机系统和智能应用系统;从基础理论看,可分为数理逻辑和多种非标准逻辑、图论、人工神经网络、模糊集、粗糙集、概率统计和贝叶斯网络、统计学习理论与支持向量机、形式语言与自动机等领域;5、 人工智能有哪些应用领域或课题?试举例说明难题求解、自动规划、调度与配置、机器定理证明、自动程序设计
23、、机器翻译、智能控制、智能管理、智能决策、智能通信、智能仿真、智能CAD、智能制造、智能CAI、智能人机接口、模式识别、数据挖掘与数据库中的知识发现、计算机辅助创新、计算机文艺创作、机器博弈、智能机器人。就机器博弈方面,在1997年IBM的“深蓝”计算机以2胜3平1负的战绩击败了蝉联12年之久的直接国际象棋冠军加里 卡斯帕罗夫,比如先如今中的五子棋对弈,能实现人与电脑之间的下棋,电脑自动搜索棋步,还可根据人们所选的电脑难度来决定电脑的难易程度。6、 简述人工智能的发展状况人工智能的现状和发展呈现如下特点:多种途径齐头并进,多种方法写作互补;新思想、新技术不断涌现,新领域、新方向不断开括;理论研
24、究更加深入,应用研究更加广泛;研究队伍日益壮大,社会影响越来越大;以上特点展现了人工智能学科的繁荣景象和光明前景。它表明,虽然在通向其最终目标的道路上,还有不少困难、问题和挑战,但前进和发展毕竟是大势所趋。7、试编写一个描述亲属关系的PROLOG程序,然后再给出一些事实数据,建立一个小型演绎数据库。domains name=symbol. sex=symbol. age=integer.predicates person(name,sex,age) mother(name,name) father(name,name) brother(name,name) sister(name,name)
25、grandfather(name,name) grandmother(name,name)goal brother(Name1,Name2),write(Name1, is ,Name2,s brother!n ), sister(Name3,Name4),write(Name3, is ,Name4,s sister!n ), grandfather(Name5,Name6),write(Name5, is ,Name6,s grandfather!n ), grandmother(Name7,Name8),write(Name7, is ,Name8,s grandmother!n ).c
26、lauses person(alan,m,21). person(john,m,22). person(marry,w,23). person(ann,w,24). mother(alice,alan). mother(alice,john). mother(alice,marry). mother(alice,ann). mother(marry,jane). father(alan,tom). father(tom,ben). brother(Name1,Name2):-person(Name1,m,Age1),person(Name2,m,Age2), mother(Z,Name1),m
27、other(Z,Name2),Age1Age2. sister(Name3,Name4):-person(Name3,w,Age3),person(Name4,w,Age4), mother(Z,Name3),mother(Z,Name4),Age3Age4. grandfather(Name1,Name2):-father(Name1,Y),father(Y,Name2). grandmother(Name7,Name8):-mother(Name7,X),mother(X,Name8).8何为状态图和与或图?图搜索与问题求解有什么关系?状态图是描述寻找目标或路径问题的有向图,即描述一个实体
28、基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。与或图是一种系统地将问题分解为互相独立的小问题,然后分而解决的方法。与或图中有两种代表性的节点:“与节点”和“或节点”,“与节点”指所有的后续节点都有解时它才有解;“或节点”指各个后续节点均完全独立,只要其中有一个有解它就有解。关系:问题求解就是在一个图中寻找一个从初始节点到目标节点的路径问题,图搜索模拟的实际是人脑分析问题,解决问题的过程,它基于领域知识的问题求解过程。9. 综述图搜索的方式和策略。 答:图搜索方式可分为树式搜索和线式搜索。图搜索策略可分为盲目搜索和启发式搜索。10. 什么是问题的解? 什么是最
29、优解?答:能够解决问题的方法或具体做法。其中最好的解决方法即代价最小的解称为最优解。11. 什么是与或树?什么是可解节点? 什么是解树? 答:一棵树中的弧线表示所连树枝为“与”关系,不带弧线的树枝为或 关系。这棵树中既有与关系又有或关系,因此被称为与或树。 满足下列条件的节点为可解节点。 终止节点是可解节点;一个与节点可解,当且仅当其子节点全都可解;一个或节点可解,只要其子节点至少有一个可解。解树实际上是由可解节点形成的一棵子树,这棵子树的根为初始节点,叶为终止节点,且这棵子树一定是与树。12.设有三只琴键开关一字排开, 初始状态为“关、开、 关”, 问连按三次后是否会出现“开、开、开”或“关
30、、关、关”的状态?要求每次必须按下一个开关, 而且只能按一个开关。 请画出状态空间图。 解: 用(K1,K2,K3)表示三个开关的状态,取值为0时表示闭合,为1时表示打开。则初始状态为(0,1,0)。根据题设要求,一个状态I的下一个状态和I只能有一位取值不同(此即状态转换规则),据此可以画出状态空间图。(0,0,0)(0,0,1)(0,1,0)(1,0,0)(0,1,1)(1,0,1)(1,1,0)(1,1,1)从此状态图不难看出:经过连续三步有状态(0,1,0)只能到达状态(0,0,0)而不能到达状态(1,1,1),即会出现状态“关,关,关”,但不会出现“开,开,开”。13. 有一农夫带一只
31、狼、一只羊和一筐菜欲从河的左岸乘船到右岸,但受下列条件限制: (1) 船太小,农夫每次只能带一样东西过河。 (2) 如果没有农夫看管, 则狼要吃羊,羊要吃菜。 请设计一个过河方案, 使得农夫、狼、羊、菜都能不受损失地过河。画出相应的状态空间图。 提示: (1) 用四元组(农夫、狼、羊、菜)表示状态,其中每个元素都可为0或1, 用0表示在左岸, 用1表示在右岸。 (2) 把每次过河的一种安排作为一个算符,每次过河都必须有农夫, 因为只有他可以划船。 解:初始S=(0,0,0,0),目标G=(1,1,1,1)定义操作符L(i)表示农夫带东西到右岸: 定义操作符R(i)表示农夫带东西到左岸:i=0
32、农夫自己到右岸; i=0 农夫自己到左岸;i=1 农夫带狼到右岸; i=1 农夫带狼到左岸;i=2 农夫带羊到右岸; i=2 农夫带羊到左岸;i=3 农夫带菜到右岸; i=3 农夫带菜到左岸;约束状态如下:(1,0,0,X)狼、羊在左岸; (1,X,0,0)羊、菜在左岸; (0,1,1,X)狼、羊在右岸; (0,X,1,1)羊、菜在右岸;14. 请阐述状态空间的一般搜索过程。OPEN表与CLOSED表的作用是什么? 答:先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点,然后检查问题的目标状态是否出现在这些子节点中。若出现,则搜索成功,找到了问题的解;若没出现,则再按照某种搜索策略
33、从已生成的子节点中选择一个节点作为当前扩展节点。重复上述过程,直到目标状态出现在子节点中或者没有可供操作的节点为止。所谓对一个节点进行“扩展”是指对该节点用某个可用操作进行作用,生成该节点的一组子节点。 OPEN表用于存放刚生成的节点,对于不同的搜索策略,节点在OPEN表中的排序是不同的。 CLOSED表用于存放将要扩展或者已扩展的节点。15. 广度优先搜索与深度优先搜索各有什么特点? 答:广度优先搜索就是始终先在同一级节点中考查,只有当同一级节点考查完之后,才考查下一级节点。或者说,是以初始节点为根节点,向下逐级扩展搜索树。所以,广度优先策略的搜索树是自顶向下一层一层逐渐生成的。 深度优先搜
34、索就是在搜索树的每一层始终先只扩展一个子节点,不断地向纵深前进,直到不能再前进(到达叶子节点或受到深度限制) 时,才从当前节点返回到上一级节点,沿另一方向又继续前进。这种方法的搜索树是从树根开始一枝一枝逐渐形成的。深度优先搜索亦称为纵向搜索。由于一个有解的问题树可能含有无穷分枝,深度优先搜索如果误入无穷分枝(即深度无限),则不可能找到目标节点。所以,深度优先搜索策略是不完备的。另外,应用此策略得到的解不一定是最佳解(最短路径)。 广度优先搜索与深度优先搜索都属于盲目搜索。16.是五大城市间的交通示意图, 边上的数字是两城市间的距离。用图搜索技术编写程序, 求解以下问题: 解:domains p
35、=string d=integer pp=p* predicates road(p,p,d) path(p,p,pp,d) member(p,pp)clauses path(X,Y,L,D):-road(X,Y,D),L=X|Y. path(X,Y,L,D):- road(X,Z,D1),%从当前点向前走到下一点Z not(member(Z,L), path(Z,Y,Z|L,D2),D=D1+D2.%再找Z到出口Y的路径 member(X,X|_). member(X,_|T)if member(X,T). road(A,B,D):-road(B,A,D). %因为没向图 /* 交通图 */
36、road(“西安”,”北京”,1165). road(“西安”,”上海”,1511). road(“西安”,“广州” ,2129). road(“西安”,”昆明”,1942). road(“昆明”,”北京”,3179). road(“昆明”,”上海”,2677). road(“昆明”,“广州”,2216). road(“北京”,”广州”,2510). road(“上海”,”北京”,1462). road(“广州”,“上海”,1511). (1)path(“西安”,”北京”,L,D),write(L,D). (2)path(“西安”,”北京”,L,D), member(“上海”,L),write
37、(L,D). (3)path(“西安”,”北京”,L,D), member(“上海”,L),not(member(“昆明”,L), write(L,D).17. 何谓估价函数? 在估价函数中,g(x)和h(x)各起什么作用? 答:估价函数用来估计节点重要性的函数。估价函数f(x)被定义为从初始节点S0出发,约束经过节点x到达目标节点Sg的所有路径中最小路径代价的估计值。它的一般形式为: f(x)=g(x)+h(x)其中,g(x)是从初始节点S0到节点x的实际代价;h(x)是从节点x到目标节点Sg的最优路径的估计代价。 18. 局部择优搜索与全局择优搜索的相同处与区别各是什么? 答:局部择优搜索
38、与全局择优搜索的区别是,扩展节点N后仅对N的子节点按启发函数值大小以升序排序,再将它们依次放入OPEN表的首部。故算法从略。19. 传教士和野人问题。有三个传教士和三个野人一起来到河边准备渡河, 河边有一条空船,且传教士和野人都会划船, 但每次最多可供两人乘渡。河的任何一岸以及船上一旦出现野人人数超过传教士人数,野人就会把传教士吃掉。为安全地渡河,传教士应如何规划渡河方案?试给出该问题的状态图表示, 并用PROLOG语言编程求解之。 若传教士和野人的数目均为五人,渡船至多可乘三人,请定义一个启发函数, 并给出相应的搜索树。 解:首先选取描述问题状态的方法。在这个问题中,需要考虑两岸的修道士人数
39、和野人数,还需要考虑船在左岸还是在右岸。从而可用一个三元组来表示状态: S=(m, c, b) 其中,m表示左岸的修道士人数,c表示左岸的野人数,b表示左岸的船数。 右岸的状态可由下式确定:右岸修道士数:m=3-m;右岸野人数:c=3-c;右岸船数:b=1-b在这种表示方式下,m和c都可取0、1、2、3中之一,b可取0和1中之一。因此,共有442=32种状态。 这32种状态并非全有意义,除去不合法状态和修道士被野人吃掉的状态,有意义的状态只有16种: S0=(3, 3, 1) S1=(3, 2, 1) S2=(3, 1, 1) S3=(2, 2, 1) S4=(1, 1, 1) S5=(0, 3, 1) S6=(0, 2, 1) S7=(0, 1, 1) S8=(3, 2, 0) S9=(3, 1, 0) S10=(3, 0, 0) S11=(2, 2, 0) S12=(1, 1,0) S13=(0, 2, 0) S14=(0, 1, 0) S15=(0, 0, 0)有了这些状态,还需要考虑可进