逻辑型程序设计语言PROLOG详细教程

逻辑型程序设计语言PROLOG详细教程

ID:41125628

大小:232.50 KB

页数:22页

时间:2019-08-17

逻辑型程序设计语言PROLOG详细教程_第1页
逻辑型程序设计语言PROLOG详细教程_第2页
逻辑型程序设计语言PROLOG详细教程_第3页
逻辑型程序设计语言PROLOG详细教程_第4页
逻辑型程序设计语言PROLOG详细教程_第5页
资源描述:

《逻辑型程序设计语言PROLOG详细教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、逻辑型程序设计语言PROLOG教程2.3.1逻辑型程序设计语言PROLOGPROLOG的语句PROLOG语言只有三种语句,分别称为事实、规则和问题。 1.事实(fact)格式:<谓词名>(<项表>).功能一般表示对象的性质或关系。其中谓词名是以小写英文字母打头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。例如:student(john).like(mary,music).表示“约翰是学生”和“玛丽喜欢音乐”。2.规则(rule)格式:<谓词名>(<项表>):-<谓词名>(<项表>){,<谓词名>(<项表>)}.功能:一般表示对象间的因果关系、蕴

2、含关系或对应关系。其中“:-”号表示“if”(也可以直接写为if),其左部的谓词是规则的结论(亦称为头),右部的谓词是规则的前提(亦称为体),{}表示零次或多次重复,逗号表示and(逻辑与),即规则的形式是一个逻辑蕴含式。例如:bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).第一条规则表示“如果X是动物,并且X有羽毛,则X是鸟”;第二条规则就表示“X是Y的祖父,如果存在Z,X是Z的父亲并且Z又是Y的父亲”。3.问题(question)格式:?-<谓词名>(<

3、项表>){,<谓词名>(<项表>)}.功能表示用户的询问,它就是程序运行的目标。例如:?-student(john).?-like(mary,X).2.3.2PROLOG程序PROLOG程序一般由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。例如下面就是一个PROLOG程序。likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X)

4、:-likes(X,sports),likes(X,music).?-friend(john,Y).可以看出,这个程序中有四条事实、两条规则和一个问题。其中事实、规则和问题都分行书写。规则和事实可连续排列在一起,其顺序可随意安排,但同一谓词名的事实或规则必须集中排列在一起。问题不能与规则及事实排在一起,它作为程序的目标要么单独列出,要么在程序运行时临时给出。这个程序的事实描述了一些对象(包括人和事物)间的关系;而规则则描述了john交朋友的条件,即如果一个人喜欢读书并且喜欢音乐(或者喜欢运动和喜欢音乐),则这个人就是john的朋友(当然,这个规则也可看作是jo

5、hn朋友的定义);程序中的问题是“约翰的朋友是谁?”当然,PROLOG程序中的目标可以变化,也可以含有多个语句(上例中只有一个)。如果有多个语句,则这些语句称为子目标。例如对上面的程序,其问题也可以是?-likes(mary,X).或?-likes(mary,music).或?-friend(X,Y).或?-likes(bell,sports),likes(mary,music),friend(john,X).等等。当然,对于不同的问题,程序运行的结果一般是不一样的。2.3.3PROLOG程序的运行机理PROLOG程序的运行是从目标出发,并不断进行匹配、合一、

6、归结,有时还要回溯,直到目标被完全满足或不能满足时为止。1.自由变量与约束变量PROLOG中称无值的变量为自由变量,有值的变量为约束变量。一个变量取了某值就说该变量约束于某值,或者说该变量被某值所约束,或者说该变量被某值实例化了。2.匹配合一两个谓词可匹配合一,是指两个谓词的名相同,参量项的个数相同,参量类型对应相同,并且对应参量项还满足下列条件之一:(1)如果两个都是常量,则必须完全相同。(2)如果两个都是约束变量,则两个约束值必须相同。(3)如果其中一个是常量,一个是约束变量,则约束值与常量必须相同。(4)至少有一个是自由变量。例如:下面的两个谓词pre1

7、("ob1","ob2",Z)pre1("ob1",X,Y)只有当变量X被约束为"ob2",且Y、Z的约束值相同或者至少有一个是自由变量时,它们才是匹配合一的。3.回溯所谓回溯,就是在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标。如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯也是PROLOG的一个重要机制。下面,我们介绍PROLOG程序的运行过程。我们仍以上

8、面的程序为例。设所给的询问是?-fri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。