机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 12254|回复: 0
打印 上一主题 下一主题

PROLOG语言编程

[复制链接]

173

主题

181

帖子

1053

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1053
跳转到指定楼层
楼主
发表于 2016-3-10 08:59:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

实验一 PROLOG语言编程
一、实验目的
1.加深学生对逻辑程序运行机理的理解。
2.掌握PROLOG语言的特点、熟悉其编程环境。
3.为今后人工智能程序设计做好准备。
二、预习要求
1.复习PROLOG语言的语法。
2.熟悉PROLOG的语言环境。
3.阅读一些PROLOG的程序。
三、实验内容
1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。
提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。
2、编写一个路径查询程序,使其能输出图中所有路径。
提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。







3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。
(a)用Prolog规则表述这个雇主的选择准则。
(b)用Prolog事实描述下列申请者的情况:
   史密斯住在剑桥,会开车但不会打字。
   布朗住在伦敦,会开车也会打字。
   简住在格拉斯哥,不会开车但会打字。
   埃文斯住在伦敦,会开车也会打字。
   格林住在卢顿,会开车也会打字。
(c)要求Prolog提供一个候选人名单。

四、代码
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).




Visual_Prolog实验.doc (458.5 KB, 下载次数: 0)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-5-14 11:26 , Processed in 0.059124 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表