Prolog语言(耐心看完-你就入门了)剖析

上传人:艳*** 文档编号:242962922 上传时间:2024-09-12 格式:PPT 页数:77 大小:192KB
返回 下载 相关 举报
Prolog语言(耐心看完-你就入门了)剖析_第1页
第1页 / 共77页
Prolog语言(耐心看完-你就入门了)剖析_第2页
第2页 / 共77页
Prolog语言(耐心看完-你就入门了)剖析_第3页
第3页 / 共77页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,人 工 智 能,Artificial Intelligence (AI),2024/9/12,Prolog,语言简介,Prolog,语言,是一种以一阶谓词为基础的逻辑性语言(,Pro,gramming in,Log,ic,),2024/9/12,Prolog,语言的特点,Prolog,语言的基本内容,简单的例子,2024/9/12,Prolog,语言,(或者,系统)是以一阶谓词逻辑的,Horn,子句集,为语法,以,Robinson,的,消解原理,为工具,加上,深度优先的控制策略,而形成的人工智能通用程序设计语言,Prolog,语言的特点,2024/9/12,Horn,子句集,消解原理,深度优先,Prolog,系统,2024/9/12,Prolog,具有下列特点,:,是一种描述性语言。只需要告诉 “,系统做什么,”,不要告诉系统 “,如何做,”,数据与程序的统一表达。提供一种统一的符号结构 “,项,” ,数据与程序都是由项组成,2024/9/12,自动实现模式匹配与回溯。这是人工智能中最常用的两项操作,,Prolog,自动实现这些操作,程序易于编写与阅读。它是面向人的自然语言,语句句型少,语法简明。只有,三种句型,2024/9/12,参考资料,:,雷英杰,张雷,邢清华,孙金萍。,Visual Prolog,语言教程,。西安:陕西科学技术出版社,2002年2月(380页,,35,元),雷英杰,邢清华,孙金萍,张雷。,Visual Prolog,编程、环境及接口,。北京:国防工业出版社,2004年1月(412页,36元),2024/9/12,Prolog,语言的基本内容,1,项,2,Prolog,中的语句,3,表结构,4,Prolog,程序的结构,5,常用内部谓词,6,Prolog,程序设计步骤,2024/9/12,符号说明,:,“,:=,”,表示,“ 定义为 ”,“,|,”,表示,“ 或 ”,可选,“, ,”,表示,“ 重复或者出现多个 ”,1,项,2024/9/12,项的定义,:,:= ,|,|,2024/9/12,:=,|,:=,|,|,:= | | ,2024/9/12,命名,:用小写字母或者小写字母开头的,小写字母数字串,用途,:用于标识对象的名字、谓词(对象间的关系)或函数名,标识符原子,例,:,john, marry, classmate, teacher,2024/9/12,字符串原子,是用引号括起来的符号串,特殊原子,指一些特殊符号,如,+,、,-,、,*,、,/,等,2024/9/12,变量,:,用于表示暂时不能命名或者不需要命名的对象,用,大写字母开头,:= | | ,2024/9/12,特殊变量,:空变量,,记作,:“,_,”,含义,:我们对问题的某一个变量的值不关心,2024/9/12, :=,(, , ,),|, , ,:= | | ,2024/9/12,复合项,:由一组其它对象组成的单个对象,例:,函数项,:,like(john, apple),表,: ,sa,sb, 1,2,3,表达式,:,(12+59)*49-96,2024/9/12,项,常量,变量,复合项,原子,数,标识符原子,字符串原子,特殊原子,(, ,), ,2024/9/12,2,Prolog,中的语句,事实,:,P.,含义,:无条件成立,恒为真,例,:,like( monkey, banana),Prolog,中的语句分成三种形式:,2024/9/12,规则,:,P,:-,P,1, P,2, ,P,n,.,“,:-,”,表示“,蕴涵,”,“,,,” 表示“,合取,”,含义,:若,P,1, ,P,n,均,为真时,,P,为真,2024/9/12,问题,(目标),Goal,Q,1, Q,2, ,Q,m,.,含义,:待回答的问题,即,Q,1, ,Q,m,同时为真吗?,2024/9/12,从消解角度来看:,(事实),中,,P,是,Horn,子句,2024/9/12,(规则),可以表示为,P,1,P,2,P,n,P,可以转化为,P,1,P,2,P,n,P,也是,Horn,子句,并受,全称量词,约束,2024/9/12,(问题)是,Q,1,Q,m,受,存在量词,约束,取非后,Q,1,Q,m,受全称,量词约束,,是,Horn,子句,2024/9/12,Prolog,三种形式的语言都是,Horn,子句,问题求解就是,Horn,子句集,消解,2024/9/12,3,表结构,表,:若干个元素的有序序列,表中的元素,:常量、变量、项、表,表用“, ,”来表示,元素之间用,逗号,或者,空格,分开,2024/9/12,例,:,1, 2, 3,a, b, c, d,2024/9/12,用符号“,|,”来划分,表头,(第一个元素)和,表尾,(其余元素),特例,:,当只用一个元素时,,表尾,为空,空表(无元素),既无表头又无表尾,2024/9/12,例,:,P(the, cat, sat, down).,?- P(,X,|,Y,).,答案,:,X,=the,Y,=cat, sat, down,?-P(,X,Y,|,Z,).,答案,:,X,=the,Y,=,cat,,,Z,sat, down,2024/9/12,4,Prolog,程序,的结构,Prolog,的程序分为两部分:,前提部分,:所有事实和规则,问题部分,:目标子句序列,2024/9/12,注意,:,这两部分不能颠倒。必须,前提部分,写在,前面,,,问题部分,写在,后面,2024/9/12,likes(m, f).,likes(m, w). (,事实),likes(j, w).,likes(j, s).,goal,likes(m, X), likes(j, X). (,问题),问题,:是否,m,和,j,都喜欢什么东西?,(,X = ?,),f,w,s,m,j,2024/9/12,Prolog,的求解过程,现在有两个问题:,likes,(m, X),和,likes,(j, X)),第一步,:第一个问题,likes,(m, X),去与事实匹配(置换与合一),按,顺序,得到 ,f/X,likes(m, f).,likes(m, w).,likes(j, w).,likes(j, s).,2024/9/12,第二步,:,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),2024/9/12,第三步,:回到第一个问题,likes,(m, X) ,,重新匹配,得到 ,w / X,第四步,:第二个问题变成,likes,(j, w)。,再与事实匹配,成功,第五步,:答案就是,X=w,likes(m, f).,likes(m, w).,likes(j, w).,likes(j, s).,likes(m, X),likes(j, X),2024/9/12,说明,:,实际运行中,要逐个试探(搜索),失败则要回溯,成功也要回溯(求出所有解),2024/9/12,例,:,father(a, b).,a,是,b,的父亲,father(c, d).,brother(a, c).,a,与,c,是兄弟关系,uncle(X, Y) :- brother(X, Z), father(Z, Y).,?- uncle(a, U).,问题,:,a,是谁的叔叔 ?,(,U = ?,),2024/9/12,第一步,:问题,uncle,(a,U,),与事实逐个匹配,不成功,Prolog,的求解过程,:,father(a, b).,father(c, d).,brother(a, c).,2024/9/12,第二步,:与规则头(左部)匹配,即寻找合一者,有 ,a/X, U/Y,转化为两个子问题:,brother,(a, Z),和,father,(Z, U),uncle(X, Y) :-,brother(X, Z) ,father(Z, Y).,uncle(a,U,),2024/9/12,第一个子问题,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),2024/9/12,Prolog,的实现方法主要是:,匹配,与,回溯,匹配,:合一过程、消解过程,回溯,:搜索,而且是深度优先搜索,2024/9/12,关于匹配的几点说明,:,第一,、一个变量,被置换,后,代入了另一个,项,,则称该变量为,实例化,的变量,2024/9/12,若与另一个未实例化的变量,匹配,,则视为同一变量,两者,共享,若与另一个实例化的变量,匹配,,也变成了实例化的变量,且两者,同值,若与,常量匹配,,也变成了实例化变量,并取常量的值,第二,、一个,未实例化,的变量可以与任何,项匹配,:,2024/9/12,第三,、,常量,只能与相同的,常量,匹配,第四,、实例化的变量与另一个实例化的值相同的变量,匹配,,也可以与另一个未实例化的变量匹配,使另一个变量实例化,且,约束值相同,2024/9/12,5 常用的内部谓词,内部谓词,:,Prolog,系统本身定义的一些基本谓词,注意,:可以直接使用,用户不能修改,2024/9/12,算术运算,算术表达式,由,操作数,(数、变量)、,操作符,和,括号,组成,算术运算符号,:“+、-、* 、/”(加减乘除),2024/9/12,优先级,:与通常的数学运算一致,形式,:中缀:,X+Y*Z,前缀:+(,X,*(Y,Z),2024/9/12,比较谓词,eq(X, Y) X=Y,ne(X, Y) XY,gt(X, Y) XY,ls(X, Y) XY,2024/9/12,对于 “ 、 ”,,X,Y,可以取,常量,变量,谓词,表,2024/9/12,第一,、当一个变量已经,实例化,,则可以与任意未实例化的变量,相等,,且将其实例化(赋值功能),第二,、两者均未实例化,,eq(X, Y),恒为真,并视为,同一变量,对于,“”(,赋值与比较,),的几点说明,:,2024/9/12,第三,、均以实例化,由,当前值来决定,第四,、如果为表,要求对应的,元素相等,,才为真,第五,、如果是谓词,谓词,同名,,变元个数相等,对应的,变元相等,2024/9/12,输入输出谓词,第一,、,write(X):,向,输出,设备输出实例化结果,第二,、,read(X):,当,X,未实例化时,输入一个项,当,X,在输入前已经实例化,则读入项将与,X,匹配,根据匹配的成功与否,决定其,真假值,2024/9/12,谓词,cut,与,fail(,特殊谓词):,cut ( ! ):,禁止回溯,fail:,强迫回溯,2024/9/12,第一,、只允许作为一个子目标出现在程序中,第二,、第一次遇到它时,总是立刻被,满足,,但是不能被重新满足,第三,、用户可以使用它来控制回溯方式,切断一些不必要的回溯,提高程序运行效率,关于,cut,的几点说明,:,2024/9/12,关于,fail,的说明,:,作为一个子目标,使,Prolog,程序运行到,fail,,,必定引起,回溯,2024/9/12,例,:求,1,到,n,之间的和,定义一个二元谓词,sum(N, X),,,其中,X,表示和,答案是,:,X=21,去掉“,!,”,会发生什么?,sum(1,1):-!.,sum(N,R):- N1=N-1, sum(N1, R1), R=R1+N.,?- sum(6,X).,2024/9/12,6,Prolog,程序设计步骤,第一,、,说明事实,:说明与待求解的问题有关的事实。例如,人物事及相互关系,对应于,叙述性知识,对应于,Prolog,程序的组成部分,,设计步骤,分为:,2024/9/12,第二,、,定义规则,:定义个体及其相互关系的推理规则,反映与待求解问题有关的,过程性知识,第三,:,确定目标(问题),:提出待求解的问题或者确定逻辑推理的目标,2024/9/12,程序的一般结构(组成部分),Visual Prolog,程序包括三到四个,基本程序段,:,第一,、,域段,:说明谓词变量的域(类型),第二,、,谓词段,:说明非标准谓词(用户自己的谓词),2024/9/12,第三,、,子句段,:核心部分,可以写出事实与规则,第四,、,目标段,:设置内部目标,2024/9/12,域段,(,domains),Prolog,语言中的域用于,区分不同变量类型的数据,相当于其它高级语言中的数据类型,2024/9/12,基本标准域有:,char,:,用单引号括起来的,单个字符,,例如,,a,integer,:,整数,,范围为32767到-32768,real,:,实数,,例如,86.72,5.1,e+21,2024/9/12,string,:,用双引号括起来的,字符序列,例,:“,I am from,Nanjing,”,2024/9/12,symbol,:,有两种形式:,以小写字母开头的字母、数字和下划线组成的,序列,用双引号括起来的,字符串序列,2024/9/12,Prolog,中表示成下列形式:,integerlist,= integer *,“,integer,”,说明表中元素的类型,“,*,” 告诉编译系统,这是一张表,表,:,2024/9/12,例,domains,title , author =,symbol,pages =,integer,注,:,每一个说明的最后,无句号,“,.,”,2024/9/12,谓词段,(,predicates),说明用户自己定义的,谓词,说明谓词变元的,域,2024/9/12,谓词名,:,由小写字母开头,由字母、数字和下划线组成(,标识符原子,),谓词变元的类型,标准域,域段中说明的其它域,2024/9/12,例:,domains,person =,symbol,predicates,father(person),或者,father(,symbol,),alphabet_position(,char,integer,),谓词后面,无句号,“,.,”,2024/9/12,子句段,(,clauses),由事实与规则组成,说明,:,每一个事实或规则后面必须,有句号,“,.,”,2024/9/12,例:,clauses,likes(tom, football),.,classify(X, negative):- X0,.,2024/9/12,目标段,(,goal),必须书写一个目标段,作为源码的一部分(内部目标),外部目标,2024/9/12,例,goal,likes(tom, X).,2024/9/12,注释,:,多行注释,:/* */,(,C/C+,中采用的符号),单行注释,:%,(,Matlab,中采用的符号),2024/9/12,Visual Prolog,程序的基本结构:,domains,(,说明变量类型,无句号),predicates,. (,说明谓词,无句号),clauses,. (,程序段,必须有句号),goal,(,目标或问题,必须有句号),2024/9/12,3,例子,2024/9/12,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!