最新逻辑程序设计语言PROLOG课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新逻辑程序设计语言PROLOG课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 逻辑 程序设计语言 PROLOG 课件
- 资源描述:
-
1、 2.1 2.1 基本基本PROLOG PROLOG 2.1.1 PROLOG2.1.1 PROLOG的语句的语句 1.1.事实事实(fact)(fact)格式格式 谓词名谓词名(项表项表).).student(john).student(john).like(mary,music).like(mary,music).abc.abc.repeat.repeat.功能功能 一般表示对象的性质或关系。一般表示对象的性质或关系。3.3.回溯回溯 所谓回溯所谓回溯,就是在程序运行期间就是在程序运行期间,当某一个子当某一个子目标不能满足目标不能满足(即谓词匹配失败即谓词匹配失败)时时,控制就返回到控制就
2、返回到前一个已经满足的子目标前一个已经满足的子目标(如果存在的话如果存在的话),),并撤消并撤消其有关变量的约束值其有关变量的约束值,然后再使其重新满足。然后再使其重新满足。成成功后功后,再继续满足原子目标。如果失败的子目标前再继续满足原子目标。如果失败的子目标前再无子目标再无子目标,则控制就返回到该子目标的上一级目则控制就返回到该子目标的上一级目标标(即该子目标谓词所在规则的头部即该子目标谓词所在规则的头部)使它重新匹配。使它重新匹配。回溯也是回溯也是PROLOGPROLOG的一个重要机制。的一个重要机制。likes(bell,sports).likes(bell,sports).likes
3、(mary,music).likes(mary,music).likes(mary,sports).likes(mary,sports).likes(jane,smith).likes(jane,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).?-fri
4、end(john,Y).?-friend(john,Y).则求解目标为则求解目标为 friend(john,Y).friend(john,Y).新目标新目标 likes(X,reading),likes(X,music).likes(X,reading),likes(X,music).2.2 Turbo PROLOG2.2 Turbo PROLOG程序设计程序设计2.2.1 2.2.1 程序结构程序结构 /*注注 释释 */编译指令编译指令 constants constants 常量说明常量说明 domains domains 域说明域说明 database database 数据库说明数据
5、库说明 predicates predicates 谓词说明谓词说明 goal goal 目标语句目标语句 clauses clauses 子句集子句集 例例 如果把上节的例子程序作为如果把上节的例子程序作为Turbo PROLOGTurbo PROLOG程序程序,则应改则应改写为:写为:DOMAINSDOMAINS name=symbol name=symbol PREDICATES PREDICATES likes(name,name).likes(name,name).friend(name,name)friend(name,name)GOAL GOAL friend(john,Y),w
6、rite(Y=,Y).friend(john,Y),write(Y=,Y).CLAUSES CLAUSES likes(bell,sports).likes(bell,sports).likes(mary,music).likes(mary,music).likes(mary,sports).likes(mary,sports).likes(jane,smith).likes(jane,smith).friend(john,X):-likes(X,sports),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).frie
7、nd(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,reading),likes(X,music).领域段领域段该段说明程序谓词中所有参量项所属的领域。该段说明程序谓词中所有参量项所属的领域。Turbo PROLOGTurbo PROLOG的标准领域包括整数、实数、符号、串和符的标准领域包括整数、实数、符号、串和符号等号等,其具体说明如下表所示。其具体说明如下表所示。谓词段谓词段 该段说明程序中用到的谓词的名和参量项的名该段说明程序中用到的谓词的名和参量项的名(但但Turbo PROLOG Turbo PROL
8、OG 的内部谓词无须说明的内部谓词无须说明)子句段子句段 该段是该段是Turbo PROLOGTurbo PROLOG程序的核心程序的核心,程序中的所有事程序中的所有事实和规则就放在这里实和规则就放在这里,系统在试图满足程序的目标时就系统在试图满足程序的目标时就对它们进行操作。对它们进行操作。目标段目标段 该段是放置程序目标的地方。该段是放置程序目标的地方。目标段可以只有一目标段可以只有一个目标谓词个目标谓词,例如上面的例子中就只有一个目标谓词;例如上面的例子中就只有一个目标谓词;也可以含有多个目标谓词也可以含有多个目标谓词,如如 goalgoal readint(X),Y=X+3,write
9、(Y=,Y).readint(X),Y=X+3,write(Y=,Y).就有三个目标谓词。就有三个目标谓词。这种目标称为复合目标。这种目标称为复合目标。2.2.2 2.2.2 数据与表达式数据与表达式1.1.领域领域 1)标准领域标准领域 整数、实数、整数、实数、字符、字符、串和符号串和符号 2)结构结构 结构也称复合对象结构也称复合对象,一般形式为一般形式为 函子函子(参量表参量表)likes(Tom,sports(football,basketball,table_tennis).reading(王宏王宏,book(人工智能技术导论人工智能技术导论,西安电子科技西安电子科技大学出版社大学出
10、版社).friend(father(Li),father(Zhao).复合对象在程序中的说明复合对象在程序中的说明,需分层进行。需分层进行。例如例如,对于上面的谓词对于上面的谓词 likes(Tom,sports(football,likes(Tom,sports(football,basketball,table_tennis).basketball,table_tennis).在程序中可说明如下:在程序中可说明如下:domainsdomains name=symbol name=symbol sy=symbol sy=symbol sp=sports(sy,sy,sy)sp=sports(
11、sy,sy,sy)predicates predicates likes(name,sp)likes(name,sp)3)3)表表 表的一般形式表的一般形式 x1,x2,x1,x2,xn,xn 其中其中xi(i=1,2,xi(i=1,2,n),n)为为PROLOGPROLOG的项的项,一般要求同一个一般要求同一个表的元素必须属于同一领域。不含任何元素的表称为空表表的元素必须属于同一领域。不含任何元素的表称为空表,记为记为 。1,2,31,2,3 apple,orange,banana,grape,caneapple,orange,banana,grape,cane PROLOG,PROGRAM
12、MING,in logicPROLOG,PROGRAMMING,in logic a,ba,b,c,dc,d,e e name(LiMing),age(20),sex(male),addr(xian)name(LiMing),age(20),sex(male),addr(xian)表的说明方法是在其组成元素的说明符后加一个星号表的说明方法是在其组成元素的说明符后加一个星号*。如:如:domainsdomains lists=string lists=string*predicates predicates pl(lists)pl(lists)例如,谓词例如,谓词 p(p(name(Liming
13、),age(20)name(Liming),age(20)则需这样说明则需这样说明:domains domains rec=seg rec=seg*seg=name(string);age(integer)seg=name(string);age(integer)predicates predicates p(rec)p(rec)2.2.常量与变量常量与变量 Turbo PROLOGTurbo PROLOG的常量有整数、实数、的常量有整数、实数、字符、字符、串、符号、结构、表和文件这八种数据类型。同串、符号、结构、表和文件这八种数据类型。同理理,Turbo PROLOG,Turbo PROLO
14、G的变量也就有这八种取值。另的变量也就有这八种取值。另外外,变量名要求必须是以大写字母或下划线开头变量名要求必须是以大写字母或下划线开头的字母、数字和下划线序列的字母、数字和下划线序列,或者只有一个下划或者只有一个下划线。线。这后一种变量称为无名变量。这后一种变量称为无名变量。3.3.算术表达式算术表达式 Turbo PROLOGTurbo PROLOG提供了五种最基本的算术运算:加、减、提供了五种最基本的算术运算:加、减、乘、除和取模乘、除和取模,相应运算符号为相应运算符号为+、-、*、/、modmod。这五种运算的顺序为:这五种运算的顺序为:*、/、modmod优先于优先于+、-。数学中的
15、算术表达式数学中的算术表达式 PROLOGPROLOG中的算术表达式中的算术表达式 x+yz x+yz X+YX+Y*Z Z ab-c/d ab-c/d A A*B-C/DB-C/D u mod v U mod V u mod v U mod V Y=X+5 X=X+1 4.4.关系表达式关系表达式 Turbo PROLOGTurbo PROLOG提供了六种常用的关系运算提供了六种常用的关系运算,即小于、即小于、小于或等于、等于、大于、大于或等于和不等于小于或等于、等于、大于、大于或等于和不等于,其运其运算符依次为算符依次为 ,=,=,数学中的关系式数学中的关系式 Turbo PROLOGTu
16、rbo PROLOG中的关系式中的关系式 X+1Y X+1Y X+1=YX+1=Y XY XY XY XY brother(Name1,Name2):-brother(Name1,Name2):-person(Name1,man,Age1),person(Name1,man,Age1),person(Name2,man,Age2),person(Name2,man,Age2),mother(Z,Name1),mother(Z,Name1),mother(Z,Name2),mother(Z,Name2),Age1Age2.Age1Age2.“=”的用法的用法 :比较符比较符和和约束符约束符 p(
展开阅读全文