逻辑程序设计语言PROLOG
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CLAUSES likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,sports),likes(X,music). friend(john,X):-likes(X,reading),likes(X,music).
领域段 该段说明程序谓词中所有参量项所属的领域。 T urbo PROLOG的标准领域包括整数、实数、符号、串和符号 等, 其具体说明如下表所示。
谓词段 该段说明程序中用到的谓词的名和参量项的名(但T urbo PROLOG 的内部谓词无须说明)
子句段 该段是Turbo PROLOG程序的核心, 程序中的所有事 实和规则就放在这里, 系统在试图满足程序的目标时就 对它们进行操作。
pre1(″ob1″,″ob2″,Z) pre1(″ob1″, ″ob3″,Y)
pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X, ″ob3″)
pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X,Y)
3. 所谓回溯, 就是在程序运行期间, 当某一个子
目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话), 并撤消 其有关变量的约束值, 然后再使其重新满足。 成 功后, 再继续满足原子目标。如果失败的子目标前 再无子目标, 则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是PROLOG的一个重要机制。
?-likes(mary,X).
?-likes(mary,music).
?-friend(X,Y).
?-likes(bell,sports), likes(mary,music), friend(john,X).
2.1.3 PROLOG程序的运行机理 1. 自由变量与约束变量 2. 匹配合一 两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型对应相同, 并且对应 参量项还满足下列条件之一: (1) 如果两个都是常量, 则必须完全相同。 (2) 如果两个都是约束变量, 则两个约束值必 须相同。 (3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。 (4) 至少有一个是自由变量。
目标段 该段是放置程序目标的地方。 目标段可以只有一 个目标谓词, 例如上面的例子中就只有一个目标谓词; 也可以含有多个目标谓词, goal readint(X),Y=X+3,write(″Y=″,Y).
就有三个目标谓词。 这种目标称为复合目标。
2.2.2 数据与表达式 1. 领域
1) 整数、实数、 字符、 串和符号
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).
2. 规则(rule) 格式 〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,
〈谓词名〉(〈项表〉)}.
bird(X):-animal(X),has(X,feather). grandfather(X,Y):-
father(X,Z),father(Z,Y). run:-sBiblioteka Baiduart,step1(X),step2(X),end.
2) 结构也称复合对象, 〈函子〉(〈参量
表〉)
likes(″Tom″, sports(football, basketball, table_te nnis)).
reading(″王宏″,book(″人工智能技术导论″,″西安电 子科技大学出版社″)). friend(father(″Li″), father(″Zhao″)).
goal 〈目标语句
clauses 〈子句集〉
例 如果把上节的例子程序作为Turbo PROLOG程序, 则应改 写为:
DOMAINS name=symbol
PREDICATES likes(name,name). friend(name,name)
GOAL friend(john,Y), write(″Y=″, Y).
第2章 逻辑程序设计语言PROLOG
2.1 基本PROLOG 2.2 Turbo PROLOG程序设计
2.1 基本PROLOG
2.1.1 PROLOG的语句
1. 事实(fact) 格式 〈谓词名〉(〈项表〉).
student(john). like(mary,music). abc. repeat. 功能 一般表示对象的性质或关系。
成。问题是程序执行的起点, 称为程序的目标。
likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,musi c). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y).
则求解目标为 friend(john,Y).
likes(X,reading),likes(X,music).
2.2 Turbo PROLOG程序设计
2.2.1 程序结构
/* 〈 注 释〉 */ 〈编译指令
constants 〈常量说明
domains 〈域说明
database 〈数据库说明
predicates 〈谓词说明
功能 一般表示对象间的因果关系、蕴含关系或对 应关系。
3. 问题(question) 格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉 (〈项表〉)}.
? -student(john). ? -like(mary,X).
功能 问题表示用户的询问, 它就是程序运行的 目标。
2.1.2 PROLOG的程序 PROLOG程序一般由一组事实、 规则和问题组
领域段 该段说明程序谓词中所有参量项所属的领域。 T urbo PROLOG的标准领域包括整数、实数、符号、串和符号 等, 其具体说明如下表所示。
谓词段 该段说明程序中用到的谓词的名和参量项的名(但T urbo PROLOG 的内部谓词无须说明)
子句段 该段是Turbo PROLOG程序的核心, 程序中的所有事 实和规则就放在这里, 系统在试图满足程序的目标时就 对它们进行操作。
pre1(″ob1″,″ob2″,Z) pre1(″ob1″, ″ob3″,Y)
pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X, ″ob3″)
pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X,Y)
3. 所谓回溯, 就是在程序运行期间, 当某一个子
目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话), 并撤消 其有关变量的约束值, 然后再使其重新满足。 成 功后, 再继续满足原子目标。如果失败的子目标前 再无子目标, 则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是PROLOG的一个重要机制。
?-likes(mary,X).
?-likes(mary,music).
?-friend(X,Y).
?-likes(bell,sports), likes(mary,music), friend(john,X).
2.1.3 PROLOG程序的运行机理 1. 自由变量与约束变量 2. 匹配合一 两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型对应相同, 并且对应 参量项还满足下列条件之一: (1) 如果两个都是常量, 则必须完全相同。 (2) 如果两个都是约束变量, 则两个约束值必 须相同。 (3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。 (4) 至少有一个是自由变量。
目标段 该段是放置程序目标的地方。 目标段可以只有一 个目标谓词, 例如上面的例子中就只有一个目标谓词; 也可以含有多个目标谓词, goal readint(X),Y=X+3,write(″Y=″,Y).
就有三个目标谓词。 这种目标称为复合目标。
2.2.2 数据与表达式 1. 领域
1) 整数、实数、 字符、 串和符号
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).
2. 规则(rule) 格式 〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,
〈谓词名〉(〈项表〉)}.
bird(X):-animal(X),has(X,feather). grandfather(X,Y):-
father(X,Z),father(Z,Y). run:-sBiblioteka Baiduart,step1(X),step2(X),end.
2) 结构也称复合对象, 〈函子〉(〈参量
表〉)
likes(″Tom″, sports(football, basketball, table_te nnis)).
reading(″王宏″,book(″人工智能技术导论″,″西安电 子科技大学出版社″)). friend(father(″Li″), father(″Zhao″)).
goal 〈目标语句
clauses 〈子句集〉
例 如果把上节的例子程序作为Turbo PROLOG程序, 则应改 写为:
DOMAINS name=symbol
PREDICATES likes(name,name). friend(name,name)
GOAL friend(john,Y), write(″Y=″, Y).
第2章 逻辑程序设计语言PROLOG
2.1 基本PROLOG 2.2 Turbo PROLOG程序设计
2.1 基本PROLOG
2.1.1 PROLOG的语句
1. 事实(fact) 格式 〈谓词名〉(〈项表〉).
student(john). like(mary,music). abc. repeat. 功能 一般表示对象的性质或关系。
成。问题是程序执行的起点, 称为程序的目标。
likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,musi c). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y).
则求解目标为 friend(john,Y).
likes(X,reading),likes(X,music).
2.2 Turbo PROLOG程序设计
2.2.1 程序结构
/* 〈 注 释〉 */ 〈编译指令
constants 〈常量说明
domains 〈域说明
database 〈数据库说明
predicates 〈谓词说明
功能 一般表示对象间的因果关系、蕴含关系或对 应关系。
3. 问题(question) 格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉 (〈项表〉)}.
? -student(john). ? -like(mary,X).
功能 问题表示用户的询问, 它就是程序运行的 目标。
2.1.2 PROLOG的程序 PROLOG程序一般由一组事实、 规则和问题组