收藏 分销(赏)

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

上传人:精**** 文档编号:12643444 上传时间:2025-11-19 格式:PPT 页数:77 大小:466.54KB 下载积分:16 金币
下载 相关 举报
Prolog语言(耐心看完-你就入门了).ppt_第1页
第1页 / 共77页
Prolog语言(耐心看完-你就入门了).ppt_第2页
第2页 / 共77页


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

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服