版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-7-10人人 工工 智智 能能Artificial Intelligence (AI)2021-7-10Prolog 语言简介语言简介 Prolog语言语言是一种以一阶谓词为基础的逻辑性语是一种以一阶谓词为基础的逻辑性语言(言(Programming in Logic) 2021-7-10Prolog语言的特点语言的特点Prolog语言的基本内容语言的基本内容简单的例子简单的例子2021-7-10Prolog语言语言(或者(或者系统)是以一阶谓词逻辑的系统)是以一阶谓词逻辑的为语法,以为语法,以Robinson的的为工具,加上为工具,加上而形成的人而形成的人工智能通用程序设计语言工智
2、能通用程序设计语言 Prolog语言的特点语言的特点 2021-7-10Horn子句集子句集消解原理消解原理深度优先深度优先Prolog系统系统2021-7-10Prolog具有下列特点具有下列特点: 是一种描述性语言。只需要告诉是一种描述性语言。只需要告诉 “ “系统做什系统做什么么”,不要告诉系统,不要告诉系统 “ “如何做如何做” 数据与程序的统一表达。提供一种统一的符数据与程序的统一表达。提供一种统一的符号结构号结构 “ “项项” ” ,数据与程序都是由项组成,数据与程序都是由项组成 2021-7-10 自动实现模式匹配与回溯。这是人工智能中最常自动实现模式匹配与回溯。这是人工智能中最
3、常用的两项操作,用的两项操作,Prolog自动实现这些操作自动实现这些操作 程序易于编写与阅读。它是面向人的自然语言程序易于编写与阅读。它是面向人的自然语言 语句句型少,语法简明。只有语句句型少,语法简明。只有三种句型三种句型 2021-7-10参考资料参考资料:雷英杰,张雷,邢清华,孙金萍。雷英杰,张雷,邢清华,孙金萍。Visual Prolog 语言教程语言教程。西安:陕西科学技术出版社,。西安:陕西科学技术出版社,2002年年2月(月(380页,页,35元)元)1 雷英杰,邢清华,孙金萍,张雷。雷英杰,邢清华,孙金萍,张雷。Visual Prolog 编程、环境及接口编程、环境及接口。北
4、京:国防工业出版社,。北京:国防工业出版社,2004年年1月(月(412页,页,36元)元)2021-7-10Prolog语言的基本内容语言的基本内容1 项项2 Prolog中的语句中的语句3 表结构表结构4 Prolog程序的结构程序的结构5 常用内部谓词常用内部谓词6 Prolog程序设计步骤程序设计步骤2021-7-10符号说明符号说明:“ := ” 表示表示“ 定义为定义为 ”“ | ” 表示表示 “ 或或 ”,可选,可选“ ” 表示表示 “ 重复或者出现多个重复或者出现多个 ”1 项项 2021-7-10::= | | 2021-7-10:= | := | | := | | 2021
5、-7-10命名命名:用小写字母或者小写字母开头的:用小写字母或者小写字母开头的小写字母小写字母数字串数字串用途用途:用于标识对象的名字、谓词(对象间的关:用于标识对象的名字、谓词(对象间的关系)或函数名系)或函数名标识符原子标识符原子例例:john, marry, classmate, teacher2021-7-10字符串原子字符串原子是用引号括起来的符号串是用引号括起来的符号串特殊原子特殊原子指一些特殊符号,如指一些特殊符号,如 +、-、*、 / 等等 2021-7-10变量变量:用于表示暂时不能命名或者不需要命用于表示暂时不能命名或者不需要命名的对象,用名的对象,用大写字母开头大写字母开
6、头 := | | 2021-7-10特殊变量特殊变量:空变量,:空变量,记作记作:“_”含义含义:我们对问题的某一个变量的值不关心:我们对问题的某一个变量的值不关心 2021-7-10 := ( )| := | | 2021-7-10复合项复合项:由一组其它对象组成的单个对象:由一组其它对象组成的单个对象例:例:函数项函数项: like(john, apple)表表: sa, sb, 1,2,3表达式表达式: (12+59)*49-96 2021-7-10项项常量常量变量变量复合项复合项原子原子数数标识符原子标识符原子字符串原子字符串原子特殊原子特殊原子(, ) 2021-7-102 Prol
7、og中的语句中的语句 事实事实: P.含义含义:无条件成立,恒为真:无条件成立,恒为真例例:like( monkey, banana)Prolog中的语句分成三种形式:中的语句分成三种形式:2021-7-10规则规则: P :- P1 , P2 , , Pn . “ “ :- ” ” 表示表示“蕴涵蕴涵” “ “ ,” ” 表示表示“合取合取”含义含义:若:若 P1 , , Pn 均为真时,均为真时,P为真为真 2021-7-10问题问题(目标)(目标)GoalGoal Q1 , Q2 , , Qm .含义含义:待回答的问题:待回答的问题, ,即即 Q1 , , Qm 同时同时为真吗?为真吗?
8、2021-7-10从消解角度来看:从消解角度来看:(事实)(事实)中,中,P是是Horn子句子句2021-7-10(规则)(规则)可以表示为可以表示为 P1P2PnP可以转化为可以转化为 P1P2PnP也是也是Horn子句,并受子句,并受全称量词全称量词约束约束2021-7-10(问题)是(问题)是 Q1Qm 受受存在量词存在量词约束,取非后约束,取非后 Q1Qm受全称受全称量词约束量词约束,是,是Horn子句子句2021-7-10Prolog三种形式的语言都是三种形式的语言都是Horn子句子句问题求解就是问题求解就是Horn子句集子句集消解消解2021-7-103 表结构表结构 表表:若干个
9、元素的有序序列:若干个元素的有序序列表中的元素表中的元素:常量、变量、项、表:常量、变量、项、表 表用表用“ ”来表示,元素之间用来表示,元素之间用逗号逗号或者或者空格空格分分开开2021-7-10例例:1, 2, 3a, b, c, d2021-7-10用符号用符号“ | ”来划分来划分表头表头(第一个元素)和(第一个元素)和表表尾尾(其余元素)(其余元素)特例特例:当只用一个元素时,当只用一个元素时,表尾表尾为空为空空表(无元素),既无表头又无表尾空表(无元素),既无表头又无表尾 2021-7-10例例:P(the, cat, sat, down).?- P( X | Y ).答案答案:X
10、=the, Y=cat, sat, down ?-P( X , Y | Z ).答案答案:X=the, Y=cat,Zsat, down 2021-7-104 Prolog程序程序的结构的结构Prolog的程序分为两部分:的程序分为两部分: 前提部分前提部分:所有事实和规则:所有事实和规则 问题部分问题部分:目标子句序列:目标子句序列 2021-7-10注意注意:这两部分不能颠倒。必须这两部分不能颠倒。必须前提部分前提部分写在写在前前面面,问题部分问题部分写在写在后面后面 2021-7-10likes(m, f).likes(m, w). (事实事实)likes(j, w).likes(j,
11、s).goal likes(m, X), likes(j, X). (问题问题)问题问题:是否:是否 m 和和 j 都喜欢什么东西?都喜欢什么东西?( ( X = ? ) ) fwsmj2021-7-10Prolog的求解过程的求解过程现在有两个问题:现在有两个问题:likes(m, X) 和和 likes(j, X))第一步第一步:第一个问题:第一个问题 likes(m, X) 去与事实匹配去与事实匹配(置换与合一),按(置换与合一),按顺序顺序得到得到 f/Xlikes(m, f).likes(m, w). likes(j, w).likes(j, s).2021-7-10第二步第二步:f
12、 代替第二个问题代替第二个问题 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)2021-7-10第三步第三步:回到第一个问题:回到第一个问题 likes(m, X) ,重新匹重新匹配,得到配,得到 w / X第四步第四步:第二个问题变成:第二个问题变成 likes(j, w)。再与事实再与事实匹配,成功匹配,成功第五步第五步
13、:答案就是:答案就是 X=wlikes(m, f).likes(m, w). likes(j, w).likes(j, s).likes(m, X)likes(j, X)2021-7-10说明说明:实际运行中,要逐个试探(搜索),失败实际运行中,要逐个试探(搜索),失败则要回溯,成功也要回溯(求出所有解)则要回溯,成功也要回溯(求出所有解)2021-7-10例例:father(a, b). a是是b的父亲的父亲father(c, d).brother(a, c). a与与c是兄弟关系是兄弟关系uncle(X, Y) :- brother(X, Z), father(Z, Y).?- uncle
14、(a, U). 问题问题: a 是谁的叔叔是谁的叔叔 ? ( U = ? )2021-7-10第一步第一步:问题:问题 uncle(a,U) 与事实逐个匹配,与事实逐个匹配,不成功不成功Prolog的求解过程的求解过程:father(a, b). father(c, d).brother(a, c).2021-7-10第二步第二步:与规则头(左部)匹配,即寻找合一者,:与规则头(左部)匹配,即寻找合一者,有有 a/X, U/Y转化为两个子问题:转化为两个子问题:brother(a, Z)和和father(Z, U)uncle(X, Y) :- brother(X, Z) , father(Z,
15、 Y).uncle(a,U)2021-7-10第一个子问题第一个子问题 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)2021-7-10Prolog的实现方法主要是:的实现方法主要是:匹配匹配与与回溯回溯匹配匹配:合一过程、消解过程:合一过程、消解过程回溯回溯:搜索,而且是深度优先搜索:
16、搜索,而且是深度优先搜索2021-7-10关于匹配的几点说明关于匹配的几点说明:第一第一、一个变量、一个变量被置换被置换后,代入了另一个后,代入了另一个项项,则称该变量为则称该变量为实例化实例化的变量的变量2021-7-10若与另一个未实例化的变量若与另一个未实例化的变量匹配匹配,则视为同一变,则视为同一变量,两者量,两者共享共享若与另一个实例化的变量若与另一个实例化的变量匹配匹配,也变成了实例化,也变成了实例化的变量,且两者的变量,且两者同值同值若与若与常量匹配常量匹配,也变成了实例化变量,并取常量,也变成了实例化变量,并取常量的值的值第二第二、一个、一个未实例化未实例化的变量可以与任何的变
17、量可以与任何项匹配项匹配:2021-7-10第三第三、常量常量只能与相同的只能与相同的常量常量匹配匹配第四第四、实例化的变量与另一个实例化的值相同的、实例化的变量与另一个实例化的值相同的变量变量匹配匹配,也可以与另一个未实例化的变量匹,也可以与另一个未实例化的变量匹配,使另一个变量实例化,且配,使另一个变量实例化,且约束值相同约束值相同2021-7-105 常用的内部谓词常用的内部谓词内部谓词内部谓词:Prolog系统本身定义的一些基本谓词系统本身定义的一些基本谓词注意注意:可以直接使用,用户不能修改:可以直接使用,用户不能修改2021-7-10算术运算算术运算算术表达式算术表达式由由操作数操
18、作数(数、变量)、(数、变量)、操作符操作符和和括括号号组成组成算术运算符号算术运算符号:“+、-、* 、/”(加减乘除)(加减乘除)2021-7-10优先级优先级:与通常的数学运算一致:与通常的数学运算一致形式形式:中缀:中缀:X+Y*Z 前缀:前缀:+(X,*(Y,Z)2021-7-10比较谓词比较谓词eq(X, Y) X=Yne(X, Y) XYgt(X, Y) XYls(X, Y) XY 2021-7-10对于对于 “ 、 ”,X,Y 可以取可以取常量常量变量变量谓词谓词表表2021-7-10第一第一、当一个变量已经、当一个变量已经实例化实例化,则可以与任意,则可以与任意未实例化的变量
19、未实例化的变量相等相等,且将其实例化(赋值,且将其实例化(赋值功能)功能)第二第二、两者均未实例化,、两者均未实例化,eq(X, Y) 恒为真,并恒为真,并视为视为同一变量同一变量对于对于“”(赋值与比较赋值与比较)的几点说明的几点说明:2021-7-10第三第三、均以实例化,由、均以实例化,由当前值来决定当前值来决定第四第四、如果为表,要求对应的、如果为表,要求对应的元素相等元素相等,才为真,才为真第五第五、如果是谓词,谓词、如果是谓词,谓词同名同名,变元个数相等,变元个数相等,对应的对应的变元相等变元相等2021-7-10输入输出谓词输入输出谓词第一第一、write(X):向向输出输出设备
20、输出实例化结果设备输出实例化结果第二第二、read(X): 当当 X 未实例化时,输入一个项未实例化时,输入一个项当当 X 在输入前已经实例化,则读入项将与在输入前已经实例化,则读入项将与 X 匹配,根据匹配的成功与否,决定其匹配,根据匹配的成功与否,决定其真假值真假值 2021-7-10谓词谓词cut与与fail(特殊谓词):特殊谓词): cut ( ! ):禁止回溯禁止回溯 fail: 强迫回溯强迫回溯2021-7-10第一第一、只允许作为一个子目标出现在程序中、只允许作为一个子目标出现在程序中第二第二、第一次遇到它时,总是立刻被、第一次遇到它时,总是立刻被满足满足,但是,但是不能被重新满
21、足不能被重新满足第三第三、用户可以使用它来控制回溯方式,切断一、用户可以使用它来控制回溯方式,切断一些不必要的回溯,提高程序运行效率些不必要的回溯,提高程序运行效率关于关于cut的几点说明的几点说明:2021-7-10关于关于 fail 的说明的说明:作为一个子目标,使作为一个子目标,使Prolog程序运行到程序运行到 fail,必定引起必定引起回溯回溯2021-7-10例例:求:求 1 到到 n 之间的和之间的和定义一个二元谓词定义一个二元谓词 sum(N, X),其中其中 X 表示和表示和答案是答案是:X=21 去掉去掉“ !”,会发生什么?,会发生什么?sum(1,1):-!.sum(N
22、,R):- N1=N-1, sum(N1, R1), R=R1+N.?- sum(6,X).2021-7-106 Prolog程序设计步骤程序设计步骤第一第一、说明事实说明事实:说明与待求解的问题有关的事:说明与待求解的问题有关的事实。例如,人物事及相互关系,对应于实。例如,人物事及相互关系,对应于叙述叙述性知识性知识对应于对应于Prolog程序的组成部分,程序的组成部分,设计步骤设计步骤分为:分为:2021-7-10第二第二、定义规则定义规则:定义个体及其相互关系的推理:定义个体及其相互关系的推理规则,反映与待求解问题有关的规则,反映与待求解问题有关的过程性知识过程性知识第三第三:确定目标(
23、问题)确定目标(问题):提出待求解的问题或:提出待求解的问题或者确定逻辑推理的目标者确定逻辑推理的目标2021-7-10程序的一般结构(组成部分)程序的一般结构(组成部分) Visual Prolog程序包括三到四个程序包括三到四个基本程序段基本程序段:第一第一、域段域段:说明谓词变量的域(类型):说明谓词变量的域(类型)第二第二、谓词段谓词段:说明非标准谓词(用户自己的:说明非标准谓词(用户自己的谓词)谓词)2021-7-10第三第三、子句段子句段:核心部分,可以写出事实与规则:核心部分,可以写出事实与规则第四第四、目标段目标段:设置内部目标:设置内部目标2021-7-10域段域段(doma
24、ins)Prolog语言中的域用于语言中的域用于区分不同变量类型的数据区分不同变量类型的数据相当于其它高级语言中的数据类型相当于其它高级语言中的数据类型2021-7-10基本标准域有:基本标准域有:char: 用单引号括起来的用单引号括起来的单个字符单个字符,例如,例如,ainteger:整数整数,范围为,范围为32767到到-32768real: 实数实数,例如,例如,86.72,5.1e+212021-7-10string: 用双引号括起来的用双引号括起来的字符序列字符序列 例例:“I am from Nanjing”2021-7-10symbol:有两种形式:有两种形式: 以小写字母开头的字母、数字和下划线以小写字母开头的字母、数字和下划线组成的组成的序列序列 用双引号括起来的用双引号括起来的字符串序列字符串序列 2021-7-10Prolog中表示成下列形式:中表示成下列形式: integerlist = integer *“integer” ” 说明表中元素的类型说明表中元素的类型“* ” ” 告诉编译系统,这是一张表告诉编译系统,这是一张表 表表:2021-7-10例例domains title , author = symbol pages = integer注注:每一个说明的最后每一个说明的最后无句号无句号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工合同范例
- 承包水电合同范例
- 专卖店合作联营合同范例
- 环保投资项目合同范例
- 加盟校合同范例
- 乡间房屋出售合同范例
- 半路装修工程合同范例
- 转厂购买设备合同范例
- 饭店调味采购合同范例
- 喂饭服务合同范例
- 运动员年终总结-汗水铸就荣耀之路
- illustrator练习试题附答案
- 《SolidWorks建模实例教程》第6章 工程图及实例
- 华为公司管理决策流程
- 《水力学》简答题和名词解释题总结
- 会议服务策划方案(12篇)
- 车辆理赔权益转让协议
- 具备履行合同所必需的设备和专业技术能力的证明材料两篇
- 部编版四年级上册《麻雀》说课课件
- 教科版小学科学三年级上册实验记录单汇编
- 劳务外包服务项目投标方案(技术方案)
评论
0/150
提交评论