人工智能PROLOG程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 PROLOG 语言编程

一、实验目的

1.加深学生对逻辑程序运行机理的理解。

2.掌握PROLOG 语言的特点、熟悉其编程环境。

3.为今后人工智能程序设计做好准备。

二、预习要求

1.复习PROLOG 语言的语法。

2.熟悉PROLOG 的语言环境。

3.阅读一些PROLOG 的程序。

三、实验内容

1、编写一个描述亲属关系的PROLOG 程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

2、编写一个路径查询程序,使其能输出图中所有路径。

提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。

3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。 (a )用Prolog 规则表述这个雇主的选择准则。

(b )用Prolog 事实描述下列申请者的情况:

史密斯住在剑桥,会开车但不会打字。

布朗住在伦敦,会开车也会打字。

简住在格拉斯哥,不会开车但会打字。

埃文斯住在伦敦,会开车也会打字。

格林住在卢顿,会开车也会打字。

(c )要求Prolog 提供一个候选人名单。

e

四、代码

1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

domains

name=symbol.

predicates

mother(name,name).

father(name,name).

grandfather(name,name).

grandmother(name,name).

sister(name,name).

aunt(name,name).

goal

grandmother(a,X),write("X=",X),nl,

father(b,Y),write("Y=",Y),nl,

sister(d,Z),write("Z=",Z),nl,

aunt(d,T),write("T=",T).

clauses

mother(a,c).

mother(a,d).

mother(c,g).

mother(c,f).

father(b,c).

father(b,d).

father(e,g).

father(e,f).

grandfather(X,Z):-father(X,Z),father(Y,Z).

grandmother(X,Z):-mother(X,Y),mother(Y,Z).

sister(X,Y):-mother(Z,X),mother(Z,Y).

aunt(X,Y):-mother(Z,Y),sister(Z,X).

2、编写一个路径查询程序,使其能输出图中所有路径。

domains

point=symbol

predicates

road(point,point).

path(point,point).

goal

path(X,Y),write(X,"-->",Y),nl,fail.

clauses

road(a,b).

road(a,c).

road(b,e).

road(b,d).

road(c,d).

road(d,e).

path(X,Y):-road(X,Y).

path(X,Y):-road(X,Z),road(Z,Y),not(road(X,Y)).

3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。

(a)用Prolog规则表述这个雇主的选择准则。

(b)用Prolog事实描述下列申请者的情况:

史密斯住在剑桥,会开车但不会打字。

布朗住在伦敦,会开车也会打字。

简住在格拉斯哥,不会开车但会打字。

埃文斯住在伦敦,会开车也会打字。

格林住在卢顿,会开车也会打字。

(c)要求Prolog提供一个候选人名单。

domains

people=symbol.skill=symbol.

predicates

ziliao(people,skill,skill,skill).

goal

ziliao(X,london,car,type),write("X=",X),nl,fail.

clauses

ziliao(smith,jianqiao,car,nottype).

ziliao(brown,london,car,type).

ziliao(jane,glasg,nocar,type).

ziliao(elven,london,car,type).

ziliao(green,ludun,car,type).

相关文档
最新文档