- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章逻辑程序设计语言PROLOG(蓝)选编
第2章 逻辑程序设计语言PROLOG
Prolog语言
Prolog是一种基于一阶谓词的逻辑程序设计语言,它在AI和知识库的实现技术中具有十分重要的作用。
Prolog语言是基于Horn子句的,使用归结推理,具有很强的逻辑描述能力和推理能力。
2.1 基本PROLOG
2.2 Turbo PROLOG程序设计; 2.1 基本PROLOG
2.1.1 PROLOG的语句
Prolog语言只有三种语句,分别称为事实、规则和问题。
1. 事实(fact)
格式 〈谓词名〉(〈项表〉).
student(john).
like(mary,music).
abc. //无参量
repeat. //无参量
功能 一般表示对象的性质或关系。 ; 2. 规则(rule)
格式 〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.
bird(X):-animal(X),has(X,feather).
grandfather(X,Y):-
father(X,Z),father(Z,Y).
run:-start,step1(X),step2(X),end. // 无参量
功能 一般表示对象间的因果关系、蕴含关系或对应关系。 ; 3. 问题(question)
格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.
? -student(john).
? -like(mary,X).
问题就是Horn子句逻辑中的目标子句,只是形式略有不同
功能 问题表示用户的询问, 它就是程序运行的目标。
问题可以与规则及事实一同给出,也可以在程序运行时临时给出。 ;2.1.2 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):-likes(X,sports),likes(X,music).
//描述条件
?-friend(john,Y). //目标:john和谁是朋友;
?-likes(mary,X).
或
?-likes(mary,music).
或
?-friend(X,Y).
或
?-likes(bell,sports),
likes(mary,music),
friend(john,X). //三个一起写出,中间用,隔开;PROLOG程序中的事实或规则一般称为它们对应谓词的子句,例如上面程序中的前四句都是谓词likes的子句。Prolog规定,同一谓词的子句应排在一起。从语句形式和程序组成来看,prolog就是一种基于Horn子句的逻辑程序。这种程序要求用事实和规则来求证询问,即证明所给出的条件子句和无条件子句与目标子句是矛盾的,或者说程序中的子句集是不可满足的。这就是所谓的PROLOG的说明性语义。
PROLOG语言的文法结构相当简单,描述能力很强,是一种应用相当广泛的智能程序设计语言。;2.1.3 PROLOG程序的运行机理
prolog的运行机理就是基于归结原理的演绎推理(归结原理将在第五章介绍)。
prolog程序的运行是从目标出发,并不断进行匹配、合一、归结,有时还要回溯,直到目标被完全满足或不能满足时为止。
1. 自由变量与约束变量
自由变量:无值的变量
约束变量:有值的变量
一个变量取了某值就说该变量约束于某值,或者说该变量被某值所约束,再或者说该变量被某值实例化了。在程序运行期间,一个自由变量可以被实例化成约束变量,反之,也
文档评论(0)