Prolog语言(耐心看完,你就入门了).ppt

上传人(卖家):hwpkd79526 文档编号:5713655 上传时间:2023-05-05 格式:PPT 页数:77 大小:192KB
下载 相关 举报
Prolog语言(耐心看完,你就入门了).ppt_第1页
第1页 / 共77页
Prolog语言(耐心看完,你就入门了).ppt_第2页
第2页 / 共77页
Prolog语言(耐心看完,你就入门了).ppt_第3页
第3页 / 共77页
Prolog语言(耐心看完,你就入门了).ppt_第4页
第4页 / 共77页
Prolog语言(耐心看完,你就入门了).ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

1、2023-5-5人人 工工 智智 能能Artificial Intelligence(AI)2023-5-5Prolog 语言简介语言简介 Prolog语言语言是一种以一阶谓词为基础的逻辑性语是一种以一阶谓词为基础的逻辑性语言(言(Programming in Logic)2023-5-5Prolog语言的特点语言的特点Prolog语言的基本内容语言的基本内容简单的例子简单的例子2023-5-5Prolog语言语言(或者(或者系统)是以一阶谓词逻辑的系统)是以一阶谓词逻辑的为语法,以为语法,以Robinson的的为工具,加上为工具,加上而形成的人而形成的人工智能通用程序设计语言工智能通用程序设

2、计语言 Prolog语言的特点语言的特点 2023-5-5Horn子句集子句集消解原理消解原理深度优先深度优先Prolog系统系统2023-5-5Prolog具有下列特点具有下列特点:是一种描述性语言。只需要告诉是一种描述性语言。只需要告诉“系统做什系统做什么么”,不要告诉系统,不要告诉系统“如何做如何做”数据与程序的统一表达。提供一种统一的符数据与程序的统一表达。提供一种统一的符号结构号结构“项项”,数据与程序都是由项组成,数据与程序都是由项组成 2023-5-5 自动实现模式匹配与回溯。这是人工智能中最常自动实现模式匹配与回溯。这是人工智能中最常用的两项操作,用的两项操作,Prolog自动

3、实现这些操作自动实现这些操作 程序易于编写与阅读。它是面向人的自然语言程序易于编写与阅读。它是面向人的自然语言 语句句型少,语法简明。只有语句句型少,语法简明。只有三种句型三种句型 2023-5-5参考资料参考资料:1 雷英杰,张雷,邢清华,孙金萍。雷英杰,张雷,邢清华,孙金萍。Visual Prolog 语言教程语言教程。西安:陕西科学技术出版社,。西安:陕西科学技术出版社,2002年年2月(月(380页,页,35元)元)2 雷英杰,邢清华,孙金萍,张雷。雷英杰,邢清华,孙金萍,张雷。Visual Prolog 编程、环境及接口编程、环境及接口。北京:国防工业出版社,。北京:国防工业出版社,

4、2004年年1月(月(412页,页,36元)元)2023-5-5Prolog语言的基本内容语言的基本内容1 项项2 Prolog中的语句中的语句3 表结构表结构4 Prolog程序的结构程序的结构5 常用内部谓词常用内部谓词6 Prolog程序设计步骤程序设计步骤2023-5-5符号说明符号说明:“:=”表示表示“定义为定义为”“|”表示表示“或或”,可选,可选“”表示表示“重复或者出现多个重复或者出现多个”1 项项 2023-5-5::=|2023-5-5:=|:=|:=|2023-5-5命名命名:用小写字母或者小写字母开头的:用小写字母或者小写字母开头的小写字母小写字母数字串数字串用途用途

5、:用于标识对象的名字、谓词(对象间的关:用于标识对象的名字、谓词(对象间的关系)或函数名系)或函数名标识符原子标识符原子例例:john,marry,classmate,teacher2023-5-5字符串原子字符串原子是用引号括起来的符号串是用引号括起来的符号串特殊原子特殊原子指一些特殊符号,如指一些特殊符号,如 +、-、*、/等等 2023-5-5变量变量:用于表示暂时不能命名或者不需要命用于表示暂时不能命名或者不需要命名的对象,用名的对象,用大写字母开头大写字母开头:=|2023-5-5特殊变量特殊变量:空变量,:空变量,记作记作:“_”含义含义:我们对问题的某一个变量的值不关心:我们对问

6、题的某一个变量的值不关心 2023-5-5:=()|:=|2023-5-5复合项复合项:由一组其它对象组成的单个对象:由一组其它对象组成的单个对象例:例:函数项函数项:like(john,apple)表表:sa,sb,1,2,3表达式表达式:(12+59)*49-96 2023-5-5项项常量常量变量变量复合项复合项原子原子数数标识符原子标识符原子字符串原子字符串原子特殊原子特殊原子(,)2023-5-52 Prolog中的语句中的语句 事实事实:P.含义含义:无条件成立,恒为真:无条件成立,恒为真例例:like(monkey,banana)Prolog中的语句分成三种形式:中的语句分成三种形

7、式:2023-5-5规则规则:P :-P1,P2,Pn.“:-”表示表示“蕴涵蕴涵”“,”表示表示“合取合取”含义含义:若:若 P1,Pn 均均为真时,为真时,P为真为真 2023-5-5问题问题(目标)(目标)GoalGoal Q1,Q2,Qm .含义含义:待回答的问题:待回答的问题,即即 Q1,Qm 同时同时为真吗?为真吗?2023-5-5从消解角度来看:从消解角度来看:(事实)(事实)中,中,P是是Horn子句子句2023-5-5(规则)(规则)可以表示为可以表示为 P1P2PnP可以转化为可以转化为 P1P2PnP也是也是Horn子句,并受子句,并受全称量词全称量词约束约束2023-5

8、-5(问题)是(问题)是 Q1Qm 受受存在量词存在量词约束,取非后约束,取非后 Q1Qm受全称受全称量词约束量词约束,是,是Horn子句子句2023-5-5Prolog三种形式的语言都是三种形式的语言都是Horn子句子句问题求解就是问题求解就是Horn子句集子句集消解消解2023-5-53 表结构表结构 表表:若干个元素的有序序列:若干个元素的有序序列表中的元素表中的元素:常量、变量、项、表:常量、变量、项、表 表用表用“”来表示,元素之间用来表示,元素之间用逗号逗号或者或者空格空格分分开开2023-5-5例例:1,2,3a,b,c,d2023-5-5用符号用符号“|”来划分来划分表头表头(

9、第一个元素)和(第一个元素)和表表尾尾(其余元素)(其余元素)特例特例:当只用一个元素时,当只用一个元素时,表尾表尾为空为空空表(无元素),既无表头又无表尾空表(无元素),既无表头又无表尾 2023-5-5例例:P(the,cat,sat,down).?-P(X|Y).答案答案:X=the,Y=cat,sat,down?-P(X,Y|Z).答案答案:X=the,Y=cat,Zsat,down 2023-5-54 Prolog程序程序的结构的结构Prolog的程序分为两部分:的程序分为两部分:前提部分前提部分:所有事实和规则:所有事实和规则 问题部分问题部分:目标子句序列:目标子句序列 2023

10、-5-5注意注意:这两部分不能颠倒。必须这两部分不能颠倒。必须前提部分前提部分写在写在前前面面,问题部分问题部分写在写在后面后面 2023-5-5likes(m,f).likes(m,w).(事实事实)likes(j,w).likes(j,s).goal likes(m,X),likes(j,X).(问题问题)问题问题:是否:是否 m 和和 j 都喜欢什么东西?都喜欢什么东西?(X=?)fwsmj2023-5-5Prolog的求解过程的求解过程现在有两个问题:现在有两个问题:likes(m,X)和和 likes(j,X))第一步第一步:第一个问题:第一个问题 likes(m,X)去与事实匹配去

11、与事实匹配(置换与合一),按(置换与合一),按顺序顺序得到得到 f/Xlikes(m,f).likes(m,w).likes(j,w).likes(j,s).2023-5-5第二步第二步:f 代替第二个问题代替第二个问题 likes(j,X)中的中的 X,则得则得 likes(j,f)。再与事实匹配,不能匹配,再与事实匹配,不能匹配,失败,则回溯,忘掉刚才的匹配失败,则回溯,忘掉刚才的匹配likes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2023-5-5第三步第三步:回到第一个问题:回到第一个问题 likes(m,X

12、),重新匹重新匹配,得到配,得到 w/X第四步第四步:第二个问题变成:第二个问题变成 likes(j,w)。再与事实再与事实匹配,成功匹配,成功第五步第五步:答案就是:答案就是 X=wlikes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2023-5-5说明说明:实际运行中,要逐个试探(搜索),失败实际运行中,要逐个试探(搜索),失败则要回溯,成功也要回溯(求出所有解)则要回溯,成功也要回溯(求出所有解)2023-5-5例例:father(a,b).a是是b的父亲的父亲father(c,d).brother(a,c).a

13、与与c是兄弟关系是兄弟关系uncle(X,Y):-brother(X,Z),father(Z,Y).?-uncle(a,U).问题问题:a 是谁的叔叔是谁的叔叔?(U=?)2023-5-5第一步第一步:问题:问题 uncle(a,U)与事实逐个匹配,与事实逐个匹配,不成功不成功Prolog的求解过程的求解过程:father(a,b).father(c,d).brother(a,c).2023-5-5第二步第二步:与规则头(左部)匹配,即寻找合一者,:与规则头(左部)匹配,即寻找合一者,有有 a/X,U/Y转化为两个子问题:转化为两个子问题:brother(a,Z)和和father(Z,U)un

14、cle(X,Y):-brother(X,Z),father(Z,Y).uncle(a,U)2023-5-5第一个子问题第一个子问题 brother(a,Z)与事实匹配,得到与事实匹配,得到c/Z代人第二个子问题,有代人第二个子问题,有 father(c,U)。与事实匹配,与事实匹配,得到得到 d/U,即,即 U=d,解是:解是:a是是d 的叔叔的叔叔father(a,b).father(c,d).brother(a,c).brother(a,Z)father(Z,U)2023-5-5Prolog的实现方法主要是:的实现方法主要是:匹配匹配与与回溯回溯匹配匹配:合一过程、消解过程:合一过程、消解

15、过程回溯回溯:搜索,而且是深度优先搜索:搜索,而且是深度优先搜索2023-5-5关于匹配的几点说明关于匹配的几点说明:第一第一、一个变量、一个变量被置换被置换后,代入了另一个后,代入了另一个项项,则称该变量为则称该变量为实例化实例化的变量的变量2023-5-5若与另一个未实例化的变量若与另一个未实例化的变量匹配匹配,则视为同一变,则视为同一变量,两者量,两者共享共享若与另一个实例化的变量若与另一个实例化的变量匹配匹配,也变成了实例化,也变成了实例化的变量,且两者的变量,且两者同值同值若与若与常量匹配常量匹配,也变成了实例化变量,并取常量,也变成了实例化变量,并取常量的值的值第二第二、一个、一个

16、未实例化未实例化的变量可以与任何的变量可以与任何项匹配项匹配:2023-5-5第三第三、常量常量只能与相同的只能与相同的常量常量匹配匹配第四第四、实例化的变量与另一个实例化的值相同的、实例化的变量与另一个实例化的值相同的变量变量匹配匹配,也可以与另一个未实例化的变量匹,也可以与另一个未实例化的变量匹配,使另一个变量实例化,且配,使另一个变量实例化,且约束值相同约束值相同2023-5-55 常用的内部谓词常用的内部谓词内部谓词内部谓词:Prolog系统本身定义的一些基本谓词系统本身定义的一些基本谓词注意注意:可以直接使用,用户不能修改:可以直接使用,用户不能修改2023-5-5算术运算算术运算算

17、术表达式算术表达式由由操作数操作数(数、变量)、(数、变量)、操作符操作符和和括括号号组成组成算术运算符号算术运算符号:“+、-、*、/”(加减乘除)(加减乘除)2023-5-5优先级优先级:与通常的数学运算一致:与通常的数学运算一致形式形式:中缀:中缀:X+Y*Z 前缀:前缀:+(X,*(Y,Z)2023-5-5比较谓词比较谓词eq(X,Y)X=Yne(X,Y)XYgt(X,Y)XYls(X,Y)XY 2023-5-5对于对于“、”,X,Y 可以取可以取常量常量变量变量谓词谓词表表2023-5-5第一第一、当一个变量已经、当一个变量已经实例化实例化,则可以与任意,则可以与任意未实例化的变量未

18、实例化的变量相等相等,且将其实例化(赋值,且将其实例化(赋值功能)功能)第二第二、两者均未实例化,、两者均未实例化,eq(X,Y)恒为真,并恒为真,并视为视为同一变量同一变量对于对于“”(赋值与比较赋值与比较)的几点说明的几点说明:2023-5-5第三第三、均以实例化,由、均以实例化,由当前值来决定当前值来决定第四第四、如果为表,要求对应的、如果为表,要求对应的元素相等元素相等,才为真,才为真第五第五、如果是谓词,谓词、如果是谓词,谓词同名同名,变元个数相等,变元个数相等,对应的对应的变元相等变元相等2023-5-5输入输出谓词输入输出谓词第一第一、write(X):向向输出输出设备输出实例化

19、结果设备输出实例化结果第二第二、read(X):当当 X 未实例化时,输入一个项未实例化时,输入一个项当当 X 在输入前已经实例化,则读入项将与在输入前已经实例化,则读入项将与 X 匹配,根据匹配的成功与否,决定其匹配,根据匹配的成功与否,决定其真假值真假值 2023-5-5谓词谓词cut与与fail(特殊谓词):特殊谓词):cut(!):禁止回溯禁止回溯 fail:强迫回溯强迫回溯2023-5-5第一第一、只允许作为一个子目标出现在程序中、只允许作为一个子目标出现在程序中第二第二、第一次遇到它时,总是立刻被、第一次遇到它时,总是立刻被满足满足,但是,但是不能被重新满足不能被重新满足第三第三、

20、用户可以使用它来控制回溯方式,切断一、用户可以使用它来控制回溯方式,切断一些不必要的回溯,提高程序运行效率些不必要的回溯,提高程序运行效率关于关于cut的几点说明的几点说明:2023-5-5关于关于 fail 的说明的说明:作为一个子目标,使作为一个子目标,使Prolog程序运行到程序运行到 fail,必定引起必定引起回溯回溯2023-5-5例例:求:求 1 到到 n 之间的和之间的和定义一个二元谓词定义一个二元谓词 sum(N,X),其中其中 X 表示和表示和答案是答案是:X=21 去掉去掉“!”,会发生什么?,会发生什么?sum(1,1):-!.sum(N,R):-N1=N-1,sum(N

21、1,R1),R=R1+N.?-sum(6,X).2023-5-56 Prolog程序设计步骤程序设计步骤第一第一、说明事实说明事实:说明与待求解的问题有关的事:说明与待求解的问题有关的事实。例如,人物事及相互关系,对应于实。例如,人物事及相互关系,对应于叙述叙述性知识性知识对应于对应于Prolog程序的组成部分,程序的组成部分,设计步骤设计步骤分为:分为:2023-5-5第二第二、定义规则定义规则:定义个体及其相互关系的推理:定义个体及其相互关系的推理规则,反映与待求解问题有关的规则,反映与待求解问题有关的过程性知识过程性知识第三第三:确定目标(问题)确定目标(问题):提出待求解的问题或:提出

22、待求解的问题或者确定逻辑推理的目标者确定逻辑推理的目标2023-5-5程序的一般结构(组成部分)程序的一般结构(组成部分)Visual Prolog程序包括三到四个程序包括三到四个基本程序段基本程序段:第一第一、域段域段:说明谓词变量的域(类型):说明谓词变量的域(类型)第二第二、谓词段谓词段:说明非标准谓词(用户自己的:说明非标准谓词(用户自己的谓词)谓词)2023-5-5第三第三、子句段子句段:核心部分,可以写出事实与规则:核心部分,可以写出事实与规则第四第四、目标段目标段:设置内部目标:设置内部目标2023-5-5域段域段(domains)Prolog语言中的域用于语言中的域用于区分不同

23、变量类型的数据区分不同变量类型的数据相当于其它高级语言中的数据类型相当于其它高级语言中的数据类型2023-5-5基本标准域有:基本标准域有:char:用单引号括起来的用单引号括起来的单个字符单个字符,例如,例如,ainteger:整数整数,范围为,范围为32767到到-32768real:实数实数,例如,例如,86.72,5.1e+212023-5-5string:用双引号括起来的用双引号括起来的字符序列字符序列 例例:“I am from Nanjing”2023-5-5symbol:有两种形式:有两种形式:以小写字母开头的字母、数字和下划线以小写字母开头的字母、数字和下划线组成的组成的序列

24、序列 用双引号括起来的用双引号括起来的字符串序列字符串序列 2023-5-5Prolog中表示成下列形式:中表示成下列形式:integerlist=integer*“integer”说明表中元素的类型说明表中元素的类型“*”告诉编译系统,这是一张表告诉编译系统,这是一张表 表表:2023-5-5例例domains title,author=symbol pages=integer注注:每一个说明的最后每一个说明的最后无句号无句号“.”2023-5-5谓词段谓词段(predicates)说明用户自己定义的说明用户自己定义的谓词谓词说明谓词变元的说明谓词变元的域域2023-5-5谓词名谓词名:由小

25、写字母开头,由字母、数字和下划线组成由小写字母开头,由字母、数字和下划线组成(标识符原子标识符原子)谓词变元的类型谓词变元的类型 标准域标准域 域段中说明的其它域域段中说明的其它域2023-5-5例:例:domains person=symbolpredicates father(person)或者或者 father(symbol)alphabet_position(char,integer)谓词后面谓词后面无句号无句号 “.”2023-5-5子句段子句段(clauses)由事实与规则组成由事实与规则组成说明说明:每一个事实或规则后面必须每一个事实或规则后面必须有句号有句号“.”2023-5-

26、5例:例:clauseslikes(tom,football).classify(X,negative):-X0.2023-5-5目标段目标段(goal)必须书写一个目标段,作为源码的一部分(内部必须书写一个目标段,作为源码的一部分(内部目标)目标)外部目标外部目标2023-5-5例例goallikes(tom,X).2023-5-5注释注释:多行注释多行注释:/*/(C/C+中采用的符号)中采用的符号)单行注释单行注释:%(Matlab中采用的符号)中采用的符号)2023-5-5Visual Prolog 程序的基本结构:程序的基本结构:domains(说明变量类型,无句号)说明变量类型,无句号)predicates.(说明谓词,无句号)说明谓词,无句号)clauses.(程序段,必须有句号)程序段,必须有句号)goal (目标或问题,必须有句号)目标或问题,必须有句号)2023-5-53 例子例子

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Prolog语言(耐心看完,你就入门了).ppt)为本站会员(hwpkd79526)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|