湖南大学人工智能实验2报告

更新时间:2023-04-17 18:29:02 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人工智能

1 实验二使用Prolog的一阶逻辑推理实验 201208070124 易雪媛智能1201

一、实验目的

1.学会使用Prolog语言;

2.用Prolog语言巩固一阶逻辑知识;

3.能够使用prolog语言实现一阶逻辑的证明;

二、实验的硬件、软件平台

1.硬件:计算机

2.软件:操作系统:WINDOWS 2000

3.应用软件:Prolog

三、实验内容及步骤

熟悉prolog语言的使用并实现对于一阶逻辑推理的证明

关于prolog语言:此实验中提到的语言使用来讲解:

例如:p(b). p(a) :- p(b). p(a) :- p(c)

分别表示:p(b)为真;

由p(b)为真可以推出p(a)为真;

由p(c)为真可以推出p(a)为真.

其中语句之间‘,’表示且,‘;’表示或,‘.’表示语句结束;

likes(bell,sports).表示bell喜欢sports。

实验步骤:

1. 对于a,b,c,d四种输入情况,验证|?- p(a).的真假;

a. p(b). p(a) :- p(b). p(a) :- p(c)

推理分析:

事实:p(b)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真.

结论:p(a)为真.

人工智能

2 运行结果:

b. p(c). p(a) :- p(b). p(a) :- p(c).

推理分析:

事实:p(c)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真.

结论:p(a)为真.

运行结果:

c. p(b). p(a) :- p(b) ,p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真且p(c)为真可以推出p(a)为真.

结论:p(a)为假.因为p(b)未知.

运行结果:

d. p(c). p(a):- p(b) ; p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真或p(c)为真可以推出p(a)为真.

结论:p(a)为真.

运行结果:

2.验证 ?-friend(john,Y).

likes(bell,sports).

likes(mary,music).

likes(mary,sports).

人工智能

3 likes(jane ,smith).

friend(john,X):-likes(X,reading),likes(X,music).

friend(john,X):-likes(X,sports),likes(X,music).

推理分析:

推理:1.如果X喜欢音乐,而且喜欢阅读,那么X是john的朋友。

2.如果X喜欢音乐,而且喜欢运动,那么X是john的朋友。

相关事实:mary喜欢音乐也喜欢运动。

结论:mary是john的朋友。

运行结果:

3.验证 likes(bill,X)

likes(ellen,tennis).

likes(john,football).

likes(tom,baseball).

likes(eric,swimming).

likes(mark,tennis).

likes(bill,X):-likes(tom,X).

推理分析:

推理:如果tom喜欢X,则bill喜欢X。

相关事实:tom喜欢baseball

结论:bill喜欢baseball

运行结果:

4.构建与,或,非,异或表达,并验证。

and(X,Y):-X,Y.

or(X,Y):-X;Y.

no(X):-xor(X,true).

xor(X,Y):-X\==Y.

推理分析:

推理:X,Y都为真时and(X,Y)为真。

人工智能

X,Y有一个为真时or(X,Y)为真。

X为真时no(X)为真。

X不等于Y时,异或xor(X,Y)为真。

运行结果:

5.已知兄弟sib(X, Y)的定义如下

sib(X, Y):- p(Z, X), p(Z, Y), X \== Y.

5.1:定义堂兄弟co(X, Y);

5.2; 定义二代堂兄弟sco(X, Y),X,Y的父母是堂兄弟。

并做验证。

p(ye,ba).

p(ye,shu).

p(ba,er).

p(shu,ge).

p(er,bob).

p(ge,tom).

sib(X, Y):- p(Z, X), p(Z, Y), X \== Y.

co(X ,Y):- sib(A, B), p(A, X), p(B, Y), X\==Y, A\==B.

sco(X, Y):- co(A, B), p(A, X), p(B, Y), X\==Y, A\==B.

推理分析:

推理:当X不等于Y,且Z是XY的父亲,则XY为兄弟。

当X不等于Y,A不等于B,且A是X的父亲,B是Y的父亲,AB 是兄弟,则XY为堂兄弟。

当X不等于Y,A不等于B,且A是X的父亲,B是Y的父亲,AB是堂兄弟,则XY为堂兄弟。

相关事实:ye是ba和shu的父亲,ba是er的父亲,shu是ge的父亲,er是bob的父亲,ge是tom的父亲。

结论:er和ge是堂兄弟,bob和tom是二代堂兄弟。

运行结果:

4

人工智能

5

5.自动实现搜索算法-回溯,判断JOHN 是谁的朋友

TOM 喜欢TALK,BILL 喜欢游泳,BILL 喜欢谈话;若X 既喜欢TALK,有喜欢SWIM,则JOHN 是X 的朋友。

likes(tom,talk).

likes(bill,swimming).

likes(bill,talk).

friend(X,Y):-likes(X,talk),likes(X,swimming).

推理分析:

推理:当X 喜欢talk ,且喜欢swimming ,则X 是Y 的朋友。

相关事实:bill 喜欢talk ,且喜欢swimming 。

结论:bill 是JOHN 的朋友。

运行结果:

人工智能

6

6.谁是盗窃犯问题:某人被盗,公安局派出所派出5个侦察员去调查。研究案情时:

侦察员A 说:“赵与钱中至少有一人作案”;

侦察员B 说:“钱与孙中至少有一人作案”;

侦察员C 说:“孙与李中至少有一人作案”;

侦察员D 说:“赵与孙中至少有一人与此案无关”;

侦察员E 说:“钱与李中至少有一人与此案无关”。

如果这5个侦察员的话都是可信的,试编程求出谁是盗窃犯,并给出Prolog. 程序。

rule1(X,Y):-(X=true);(Y=true).

rule2(X,Y):-(X=true);(Y=true).

rule3(X,Y):-(X=true);(Y=ture).

rule4(X,Y):-(X=false);(Y=false).

rule5(X,Y):-(X=false);(Y=false).

bool(true).

bool(false).

solution([Zhao,Qian,Sun,Li]):-bool(Zhao),bool(Qian),bool(Sun),bool(Li),rule1(Zhao,Qian),rule2(Qian,Sun),rule3(Sun,Li),rule4(Zh ao,Sun),rule5(Qian,Li).

推理分析:

首先定义谓词:

F(x) 表示 x 作案

则已知的前提可以表示为:∧

(1) F(Zhao) ∨ F(Qian)

人工智能

7

(2) F(Sun) ∨

F(Qian)

(3) F(Sun) ∨ F(Li)

(4) F (Zhao) ∨ F (Sun)

(5) F (Qian) ∨ F (Li)

待求解的问题为:

(6) F (x) ∨ Ans(x)

上面已经是子句集,直接进行归结:

(7) Ans(Qian) ∨ F(Zhao)

(8) Ans(Qian) ∨ F(Sun)

(9) Ans(Qian) ∨ F(Qian)

(10) Ans(Qian)

所以Qian 是罪犯。

另一方面,还可以进行如下归结:

(11) Ans(Sun) ∨ F(Qian)

(12) Ans(Sun) ∨ F(Li)

(13) Ans(Sun) ∨ F(Sun)

(14) Ans(Sun)

所以,Sun 也是罪犯。 同时根据(4)和(5)可知:Zhao 和Li 不是罪犯。 运行结果:




本文来源:https://www.bwwdw.com/article/x2lq.html

Top