人工智能概论 第2章课件

上传人:我*** 文档编号:145226550 上传时间:2020-09-18 格式:PPT 页数:88 大小:406.50KB
返回 下载 相关 举报
人工智能概论 第2章课件_第1页
第1页 / 共88页
人工智能概论 第2章课件_第2页
第2页 / 共88页
人工智能概论 第2章课件_第3页
第3页 / 共88页
人工智能概论 第2章课件_第4页
第4页 / 共88页
人工智能概论 第2章课件_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《人工智能概论 第2章课件》由会员分享,可在线阅读,更多相关《人工智能概论 第2章课件(88页珍藏版)》请在金锄头文库上搜索。

1、1,第1篇 概述与工具第2章 逻辑程序设计语言,华南师范大学 教育信息技术学院 郑云翔,2,提纲,PROLOG简介 基本PROLOG Turbo PROLOG程序设计,3,PROLOG简介,Prolog(Programming in Logic的缩写)是一种逻辑编程语言 建立在逻辑学的理论基础之上,最初被运用于自然语言等研究领域,现在已广泛应用在人工智能的研究中,可以用来建造专家系统、自然语言理解、智能知识库等,同时对一些通常的应用程序的编写也很有帮助 使用它能够比其他的语言更快速地开发程序,因为它的编程方法更像是使用逻辑的语言来描述程序,4,PROLOG简介,PROLOG的特点: prolo

2、g程序没有特定的运行顺序,其运行顺序是由计算机决定的,而不是编程序的人 prolog程序中没有if、when、case、for这样的控制流程语句 prolog程序和数据高度统一 prolog程序实际上是一个智能数据库 强大的递归功能,5,PROLOG简介,Prolog语言最早是由法国马赛大学的Colmerauer和他的研究小组于1972年研制成功 早期的Prolog版本都是解释型的,自1986年美国Borland公司推出编译型Prolog,即Turbo Prolog以后,Prolog便很快在PC机上流行起来。后来又经历了PDC PROLOG、Visual Prolog不同版本的发展 PROLO

3、G有很多版本和方言: Turbo Prolog、SWI-Prolog、Visual-Prolog、Amzi-Prolog 1972年后,分支出很多方言,最主要的是Edinburgh和Aix-Marseille,6,PROLOG简介,Turbo Prolog: 由美国Prolog开发中心(Prolog Development Center, PDC)1986年开发成功,Borland公司对外发行,其1.0、2.0、2.1版本取名为Turbo Prolog,主要在IBM PC系列计算机,MS-DOS环境下运行 Turbo Prolog的开发与Turbo C类似,集成了简单的编辑、编译、调试功能,可

4、以很快上手,但是感觉回到了DOS时代,没有鼠标的帮助始终不方便,7,PROLOG简介,PDC Prolog: 1990年后,PDC推出新的版本,更名为PDC Prolog 3.0,3.2,把运行环境扩展到OS/2操作系统,并且向全世界发行。其特点包括: 编译及运行速度都很快,产生的代码非常紧凑 用户界面友好,提供了图形化的集成开发环境 提供了强有力的外部数据库系统 用户可以创建自己的专用编程语言、推理机、专家系统外壳或程序接口 提供了与其他语言(如C、Pascal、Fortran等)的接口 具有强大的图形功能,8,PROLOG简介,SWI-Prolog: 该版本规定不经过注册的开发环境,不可以

5、直接编译生成可执行文件。所以这个版本仅仅用于开发。其特点包括: 鼠标支持 拥有独立的编辑窗口,支持高亮操作 控制台窗口独立 可直接控制编译、调试的功能,9,PROLOG简介,Visual-Prolog: 基于Prolog语言的可视化集成开发环境,是PDC推出的基于Windows环境的智能化编程工具 在美国、西欧、日本、加拿大、澳大利亚等国家和地区十分流行,是国际上研究和开发智能化应用的主流工具之一 具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能,包含构建大型应用程序所需要的一切特性,10,PROLOG简介,Amzi-Prolog: 在Eclipse中集成了Prolog的模块

6、所有的编辑、编译、调试都是界面化操作 从协议上限制了使用的范围和时间,11,PROLOG简介,这些不同版本的PROLOG语言的核心部分是一样的,称为基本PROLOG,12,提纲,PROLOG简介 基本PROLOG Turbo PROLOG程序设计,13,基本PROLOG,PROLOG的语句: 事实(fact) 格式:谓词名(项表). 其中: 谓词名是以小写英文字母打头的字母、 数字、 下划线等组成的字符串 项表是以逗号隔开的项序列 项包括由常量或变量表示的简单对象以及函数、 结构和表等 即事实的形式是一个原子谓词公式,14,基本PROLOG,PROLOG的语句(续): 事实(续) 例如:stu

7、dent(john). like(mary,music).就是PROLOG中的两个合法事实 事实就是Horn子句逻辑中的无条件子句,但形式略有不同,15,基本PROLOG,PROLOG的语句(续): 事实(续) 一般表示对象的性质或关系 例如上面的两个事实就分别表示“约翰是学生”和“玛丽喜欢音乐” 作为特殊情形,一个事实也可以只有谓词名而无参量,如: abc. repeat. 等也是允许的,16,基本PROLOG,PROLOG的语句(续): 规则(rule) 格式:谓词名(项表) :-谓词名(项表),谓词名(项表). 其中: “:-”号表示“if”(也可以直接写为if),其左部的谓词是规则的结

8、论(亦称为头),右部的谓词是规则的前提(亦称为体) 表示零次或多次重复 逗号表示and(逻辑与) 规则的形式是一个逻辑蕴含式,17,基本PROLOG,PROLOG的语句(续): 规则(续) 例如: bird(X):-animal(X),has(X,feather). grandfather(X,Y):-father(X,Z),father(Z,Y). 就是PROLOG的合法规则,18,基本PROLOG,PROLOG的语句(续): 规则(续) 一般表示对象间的因果关系、蕴含关系或对应关系 如,上面第一条规则就表示“如果X是动物,并且X有羽毛,则X是鸟”;第二条规则就表示“X是Y的祖父,如果存在Z

9、,X是Z的父亲并且Z又是Y的父亲” 作为特殊情形,规则中的谓词也可以只有谓词名而无参量,如: run:-start,step1(X),step2(X),end. 也是一个合法规则,19,基本PROLOG,PROLOG的语句(续): 问题(question) 格式:?-谓词名(项表),谓词名(项表). 例如: ? - student(john). ? - like(mary,X). 就是两个合法的问题,20,基本PROLOG,PROLOG的语句(续): 问题(续) 问题也就是Horn子句逻辑中的目标子句,只是形式略有不同 问题表示用户的询问,它就是程序运行的目标 例如,上面的第一个问题的意思是“

10、约翰是学生吗?”,第二个问题的意思是“玛丽喜欢谁?” 问题可以与规则及事实同时一起给出,也可以在程序运行时临时给出,21,基本PROLOG,PROLOG的程序:由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。例如下面就是一个PROLOG程序: likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,mu

11、sic). ?-friend(john,Y).,事实,规则,问题,22,基本PROLOG,PROLOG的程序(续): 这个程序的事实描述了一些对象(包括人和事物)间的关系 规则描述了john交朋友的条件,即如果一个人喜欢读书并且喜欢音乐(或者喜欢运动和喜欢音乐),则这个人就是john的朋友 程序中的问题是“约翰的朋友是谁?”,23,基本PROLOG,PROLOG的程序(续): 规则和事实可连续排列在一起,其顺序可随意安排,但同一谓词名的事实或规则必须集中排列在一起 问题不能与规则及事实排在一起,它作为程序的目标要么单独列出,要么在程序运行时临时给出,24,基本PROLOG,PROLOG的程序(

12、续): 目标可以变化,也可以含有多个语句(上例中只有一个)。如果有多个语句,则这些语句称为子目标。例如对上面的程序,其问题也可以是: ?-likes(mary,X). 或 ?-likes(mary,music). 或 ?-friend(X,Y). 或 ?-likes(bell,sports), likes(mary,music), friend(john,X).,此时,只有各子目标均求解成功,整个目标才成功,25,基本PROLOG,PROLOG的程序(续): PROLOG程序中的事实或规则一般称为它们对应谓词的子句,例如上面程序中的前四句都是谓词likes的子句 从语句形式和程序组成来看,PR

13、OLOG就是一种基于Horn子句的逻辑程序。这种程序要求用事实和规则来求证询问,即证明所给出的条件子句和无条件子句与目标子句是矛盾的,或者说程序中的子句集是不可满足的这就是所谓的PROLOG的说明性语义,26,基本PROLOG,PROLOG的程序(续): Horn子句的描述能力很强,所以PROLOG的描述能力也很强: 当它的事实和规则描述的是某一学科的公理,那么问题就是待证的命题 当事实和规则描述的是某些数据和关系,那么问题就是数据查询语句 当事实和规则描述的是某领域的知识,那么问题就是利用这些知识求解的问题 当事实和规则描述的是某初始状态和状态变化规律,那么问题就是目标状态,27,基本PRO

14、LOG,PROLOG的程序(续): 同过程性语言相比,一个PROLOG程序,其问题就相当于主程序,其规则就相当于子程序,而其事实就相当于数据,28,基本PROLOG,PROLOG程序的运行机理: 自由变量与约束变量: 自由变量:无值的变量;约束变量:有值的变量 一个变量取了某值就说该变量约束于某值,或者说该变量被某值所约束,或者说该变量被某值实例化了 在程序运行期间,一个自由变量可以被实例化而成为约束变量;反之,一个约束变量也可被解除其值而成为自由变量,29,基本PROLOG,PROLOG程序的运行机理(续): 匹配合一:两个谓词可匹配合一,是指两个谓词的名相同,参量项的个数相同,参量类型对应

15、相同,并且对应参量项还满足下列条件之一: 如果两个都是常量,则必须完全相同 如果两个都是约束变量,则两个约束值必须相同 如果其中一个是常量,一个是约束变量,则约束值与常量必须相同 至少有一个是自由变量,30,基本PROLOG,PROLOG程序的运行机理(续): 匹配合一(续): 例如:下面的两个谓词 pre1(ob1,ob2,Z) pre1(ob1,X, Y) 只有当变量X被约束为ob2,且Y、 Z的约束值相同或者至少有一个是自由变量时,它们才是匹配合一的,31,基本PROLOG,PROLOG程序的运行机理(续): 匹配合一(续): 合一是一种操作,可使两个能匹配的谓词合一起来,即为参加匹配的

16、自由变量和常量,或者两个自由变量建立一种对应关系,使得常量作为对应变量的约束值,使得两个对应的自由变量始终保持一致(若其中一个被某值约束,则另一个也被同一值约束;反之,若其中一个的值被解除,则另一个的值也被解除),32,基本PROLOG,PROLOG程序的运行机理(续): 回溯: 在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标 如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配 上述过程详见P30-P32实例,33,PROLOG程序运行机理示例,34,基本PROLOG,PROLOG程序的运行机理(续): 回溯: 上述程序的运行是一个通过推理实现的求值过程。我们也可以使它变为证明过程。例如,把上述程序中的询问改为 friend(john,mary) 则系统会回答:yes 若将询问改为:friend(john,smith) 则系统会回答:no,35,基本PROL

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号