人工智能实验资料报告材料70296.doc

上传人:夺命阿水 文档编号:21942 上传时间:2022-07-13 格式:DOC 页数:10 大小:285.06KB
返回 下载 相关 举报
人工智能实验资料报告材料70296.doc_第1页
第1页 / 共10页
人工智能实验资料报告材料70296.doc_第2页
第2页 / 共10页
人工智能实验资料报告材料70296.doc_第3页
第3页 / 共10页
人工智能实验资料报告材料70296.doc_第4页
第4页 / 共10页
人工智能实验资料报告材料70296.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《人工智能实验资料报告材料70296.doc》由会员分享,可在线阅读,更多相关《人工智能实验资料报告材料70296.doc(10页珍藏版)》请在课桌文档上搜索。

1、实 验 报 告实验名称PROLOG语言编程练习与图搜索问题求解课程名称人工智能与应用一、 实验目的与要求实验目的:1. 熟悉PROLOG的运行环境,进展PROLOG的根本编程练习。了解PROLOG语言中常量、变量的表示方法。PROLOG的简单程序结构,掌握分析问题、询问解释技巧;进展事实库、规如此库的编写,并在此根底上进展简单的询问。具体实验课上相关容,练习example1到example6的容。2. 图搜索问题求解。实验要求:1. 爱因斯坦的超级问题有五个房子,每个房子的颜色不同,里面分别住着不同国家的人,每个人都有自己养的不同的宠物,喜欢喝不同的饮料,抽不同牌子的烟。现在以下的一些信息:a

2、) 英国人englishman住在红色red的房子里b) 西班牙人spaniard养了一条狗dogc) 挪威人norwegian住在左边的第一个房子里d) 黄房子yellow里的人喜欢抽kools牌的香烟e) 抽chesterfields牌香烟的人与养狐狸fox的人是邻居f) 挪威人norwegian住在蓝色blue的房子旁边 g) 抽winston牌香烟的人养了一只蜗牛Snailsh) 抽Lucky Strike牌香烟的人喜欢喝桔子汁orange juicei) 乌克兰人ukrainian喜欢喝茶teaj) 日本人japanese抽parliaments牌的烟k) 抽kools牌的香烟的人与

3、养马horse的人是邻居 l) 喜欢喝咖啡coffee的人住在绿green房子里 m) 绿green房子在象牙白ivory房子的右边图中的右边n) 中间那个房子里的人喜欢喝牛奶milko) 根据以上条件,你能告诉我哪个房子里的人养斑马zebra,哪个房子里的人喜欢喝水water吗?或者你能把所有的东西都对号入座吗?2. 传教士与野人问题传教士和食人者问题The Missionaries and Cannibals Problem。在河的左岸有3个传教士、1条船和3个食人者,传教士们想用这条船将所有的成员运过河去,但是受到以下条件的限制:1传教士和食人者都会划船,但船一次最多只能装运两个;2在任

4、何岸边食人者数目都不得超过传教士,否如此传教士就会遭遇危险:被食人者攻击甚至被吃掉。此外,假定食人者会服从任何一种过河安排,试规划出一个确保全部成员安全过河的计划。二、所用仪器、设备PC机和trinc prolog编译软件三、实验原理PROLOG语言是一种以逻辑推理为根底的逻辑型程序设计语言,是一种述性语言而不是过程性语言。PROLOG语言能够自动实现模式匹配和回溯、具备递归技术,而且语法简明,可以简化复杂问题求解。四、实验方法与步骤1. 打开trinc prolog编译软件2. 新建文本并(FlieNewText Edit)3. 根据实验要求在新建的文本中输入程序代码4. 保存(Save)并

5、编译(pile)5. 在trinc prolog下输入问题显示(Prove)实验要求的结果五、求解的问题与程序1. 爱因斯坦的超级问题代码:member(X,X|Tail).member(X,Head|Tail):-member(X,Tail).%X是表Tail的成员%定义房间各种属性的谓词color(h(C,N,P,Y,D),C). %h(C,N,P,Y,D)的color是Cnation(h(C,N,P,Y,D),N). %h(C,N,P,Y,D)的nation是Npet(h(C,N,P,Y,D),P). %h(C,N,P,Y,D)的pet是Pyan(h(C,N,P,Y,D),Y). %h(

6、C,N,P,Y,D)的yan是Ydrink(h(C,N,P,Y,D),D). %h(C,N,P,Y,D)的drink的是D %定义邻居关系的谓词nextnext(A,B,A,B,C,D,E).next(B,A,A,B,C,D,E). %A和B在表中是相邻关系 next(B,C,A,B,C,D,E).next(C,B,A,B,C,D,E). %B和C在表中是相邻关系next(C,D,A,B,C,D,E).next(D,C,A,B,C,D,E). %C和D在表中是相邻关系next(D,E,A,B,C,D,E).next(E,D,A,B,C,D,E). %D和E在表中是相邻关系%定义房子位置的谓词m

7、iddle(X,_,_,X,_,_). %X在表中的中间位置first(A,A|X). %A是表X的表头%定义房子右边的关系谓词rightright(A,B,A,B,C,D,E). %表中B在A的右边right(B,C,A,B,C,D,E). %表中C在B的右边right(C,D,A,B,C,D,E). %表中D在C的右边right(D,E,A,B,C,D,E). %表中E在D的右边solve(X,TT,TTT):-%把X绑定为房间列表,此时的房间的属性还不能确定,所以都使用变量代表。X=h(C1,N1,P1,Y1,D1),h(C2,N2,P2,Y2,D2),h(C3,N3,P3,Y3,D3)

8、,h(C4,N4,P4,Y4,D4),h(C5,N5,P5,Y5,D5),%英国人englishman住在红色red的房子里。member(Z1,X), %从X列表中选择一个房间Z1color(Z1,red), %Z1的颜色是rednation(Z1,englishman), %Z1里住的人是englishman%西班牙人spaniard养了一条狗dog。member(Z2,X), %从X列表中选择一个房间Z2pet(Z2,dog), %Z2里养的宠物是dognation(Z2,spaniard), %Z2里住的人是spaniard%挪威人norwegian住在左边的第一个房子里。first(

9、Z3,X), %X列表中第一个房间Z3nation(Z3,norwegian), %Z3里住的人是norwegian%黄房子yellow里的人喜欢抽kools牌的香烟。member(Z4,X), %从X列表中选择一个房间Z4yan(Z4,kools), %Z4里抽的烟是koolscolor(Z4,yellow), %Z4的颜色是yellow%抽chesterfields牌香烟的人与养狐狸fox的人是邻居。member(Z5,X), %从X列表中选择一个房间Z5pet(Z5,fox), %Z5里养的宠物是foxnext(Z6,Z5,X), %Z5的邻居是Z6yan(Z6,chesterfield

10、s), %Z6里抽的烟是chesterfields%挪威人norwegian住在蓝色blue的房子旁边。member(Z7,X), %从X列表中选择一个房间Z7color(Z7,blue), %Z7的颜色是bluenext(Z8,Z7,X), %Z7的邻居是Z8nation(Z8,norwegian), %Z8里住的人是norwegian%抽winston牌香烟的人养了一只蜗牛Snails。member(Z9,X), %从X列表中选择一个房间Z9yan(Z9,winston), %Z9里抽的烟是winstonpet(Z9,snails), %Z9里养的宠物是snails%抽Lucky Stri

11、ke牌香烟的人喜欢喝桔子汁orange juice。member(Z10,X), %从X列表中选择一个房间Z10drink(Z10,orange juice), %Z10里喝的饮料是orange juiceyan(Z10,Lucky Strike), %Z10里抽的烟是Lucky Strike%乌克兰人ukrainian喜欢喝茶tea。member(Z11,X), %从X列表中选择一个房间Z11nation(Z11,ukrainian), %Z11里住的人是ukrainiandrink(Z11,tea), %Z11里喝的饮料是tea%日本人japanese抽parliaments牌的烟。mem

12、ber(Z12,X), %从X列表中选择一个房间Z12nation(Z12,japanese), %Z12里住的人是japaneseyan(Z12,parliaments), %Z12里抽的烟是parliaments%抽kools牌的香烟的人与养马horse的人是邻居member(Z13,X), %从X列表中选择一个房间Z13pet(Z13,horse), %Z13里养的宠物是horsenext(Z14,Z13,X), %Z13的邻居是Z14yan(Z14,kools), %Z14里抽的烟是kools%喜欢喝咖啡coffee的人住在绿green房子里。member(Z15,X), %从X列表中

13、选择一个房间Z15color(Z15,green), %Z15的颜色是greendrink(Z15,coffee), %Z15里喝的饮料是office%绿green房子在象牙白ivory房子的右边图中的右边member(Z16,X), %从X列表中选择一个房间Z16color(Z16,ivory), %Z16的颜色是ivoryright(Z16,Z17,X), %在Z16右边的房子是Z17color(Z17,green), %Z17的颜色是green%中间那个房子里的人喜欢喝牛奶milk。middle(Z18,X), %从X列表中选择一个房间Z18drink(Z18,milk), %Z18里喝

14、的饮料是milk%以上是所以的条件,下面开始回答我们的问题%找出宠物为zebra的房间。member(TT,X), %从X列表中选择一个房间TTpet(TT,zebra), %TT里养的宠物是zebra%找出喝水的房间。member(TTT,X), %从X列表中选择一个房间TTTdrink(TTT,water). %TTT里喝的饮料是water2. 传教士与野人问题代码:%船上所能够载人的状态就是可能的操作move(1,0). %表示船上有一位传教士,没有野人move(0,1). %表示船上没有传教士,有一位野人move(0,2). %表示船上没有传教士,有两位野人move(2,0). %表示

15、船上有两位传教士,没有野人move(1,1). %表示船上有一位传教士,一个野人%判断两岸的状态是否合法legal(X,Y,_):- %X为左岸,Y为右岸,_取0左岸或1右岸legal1(X), %判断左岸的状态是否合法legal1(Y). %判断有岸的状态是否合法legal1(X,Y):-X=:=0,Y=0,!. %传教士人数为0,野人的人数大于0,合法legal1(X,Y):-Y=:=0,X=0,!. %野人人数为0,传教士的人数大于0,合法legal1(X,Y):-X=Y,X=0,Y=0.%传教士数大于等于野人数,且都大于0,合法%update谓词能够完成把合理的移动作用的某个状态上,从

16、而到达新的状态。update(X,Y,0),Move,Statu1):- %船在左岸将要采取的操作。(A,B)=X, %X储存A,B两个数值(C,D)=Y, %Y储存C,D两个数值(E,F)=Move, %船上Move储存传教士E,野人F两个数值C1 is C+E, %用C1记录C+E的结果D1 is D+F, %用D1记录D+F的结果A1 is A-E, %用A1记录A-E的结果B1 is B-F, %用B1记录B-F的结果Statu1=(A1,B1),(C1,D1),1). %船到右岸后左右两岸传教士野人的人数状况update(X,Y,1),Move,Statu1):- %船在右岸将要采取

17、的操作。(A,B)=X, %X改为储存A,B两个数值(C,D)=Y, %Y改为储存C,D两个数值(E,F)=Move, %船上Move重新储存传教士E,野人F两个数值C1 is C-E, %C1重新记录C-E的结果D1 is D-F, %D1重新记录D-F的结果A1 is A+E, %A1重新记录A+E的结果B1 is B+F, %B1重新记录B+F的结果Statu1=(A1,B1),(C1,D1),0). %船到右岸后左右两岸传教士野人的人数状况%connect谓词得到正确操作船的方案connect(Statu,Statu1):- move(X,Y), %船载传教士X,野人Yupdate(S

18、tatu,(X,Y),Statu1), %更新两岸传教士野人的人数状况legal(Statu1). %判断Statu1两岸的状态是否合法member(X,X|Tail).member(X,Head|Tail):-member(X,Tail). %判断对象X是表的成员%再使用深度搜索方法就可以找到答案了findroad(X,X,L,L). %递归的边界条件findroad(X,Y,L,L1):- % L为储存的路径表connect(X,Z),not(member(Z,L),%当前状态Z不在已经储存的路径表中findroad(Z,Y,Z|L,L1). %形成递归六、讨论与结论1. 爱因斯坦的超级问

19、题用PROLOG语言解决爱因斯坦的超级问题主要是先定义谓词描述事实,再用定义的谓词描述的容,最后定义所求的谓词求解。本实验主要是运用表,对的信息与表中的进展匹配得到最后的结果。2. 传教士与野人问题图搜索问题解决传教士与野人问题,PROLOG语言能够自动实现模式匹配和回溯、具备递归技术。本实验的重点是定义递归谓词,然后是船的操作谓词,最后还有的是判断传教士是否安全的谓词,在定义完上面所述的谓词后,输入原状态和最后得到岸对面的状态,通过自动匹配,递归等得出可行方案。七、所附实验输出的结果或数据1. 爱因斯坦超级问题的输出结果(如如下图)2. 传教士与野人问题输出的结果(如如下图)八、Prolog实验课的问题程序例子中用到过哪些环境自带的谓词?1) 比拟谓词=,输出谓词write(X),否认谓词not(X)2) example2.txt中没有运用环境自带的谓词3) example3.txt中运用了输出谓词write(X),nl谓词,接口谓词fail4) example4.txt中运用了输出谓词write(X)5) example5.txt中运用了输出谓词write(X),nl谓词,接口谓词fail,截断谓词!6) Example6.txt中运用了截断谓词!7) Example7.txt中没有运用环境自带的谓词

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号