智能编程语言ppt课件

上传人:我*** 文档编号:148365728 上传时间:2020-10-19 格式:PPT 页数:126 大小:1,000.50KB
返回 下载 相关 举报
智能编程语言ppt课件_第1页
第1页 / 共126页
智能编程语言ppt课件_第2页
第2页 / 共126页
智能编程语言ppt课件_第3页
第3页 / 共126页
智能编程语言ppt课件_第4页
第4页 / 共126页
智能编程语言ppt课件_第5页
第5页 / 共126页
点击查看更多>>
资源描述

《智能编程语言ppt课件》由会员分享,可在线阅读,更多相关《智能编程语言ppt课件(126页珍藏版)》请在金锄头文库上搜索。

1、1,智能控制基础,Shanghai University, Shanghai, P.R.China,7.智能控制语言Prolog,7 智能控制语言 Prolog,7.1 什么是Prolog语言,7.2 Prolog入门-事实,7.3 Prolog入门-查询,7.4 Prolog入门-规则,7.5 Prolog入门-算术,7.6 Prolog入门-内部谓词,7.7 Prolog入门-递归和表,7.8 Prolog入门-截断,7 智能控制语言 Prolog,7.1 什么是Prolog语言,7.2 Prolog入门-事实,7.3 Prolog入门-查询,7.4 Prolog入门-规则,7.5 Pro

2、log入门-算术,7.6 Prolog入门-内部谓词,7.7 Prolog入门-递归和表,7.8 Prolog入门-截断,Prolog (Programming in LOGic的缩写)是一种逻辑编程语言。它建立在 逻辑学 的理论基础之上, 最初被运用于 自然语言 等研究领域。现在它已被广泛的应用在 人工智能 的研究中,它可以用来建造 专家系统 、自然语言理解、智能知识库等。同时它对一些通常的应用程序的编写也很有帮助。使用它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。,什么是Prolog?,7.1 什么是Prolog语言,Prolog语言(或者系统)是以一

3、阶谓词逻辑的Horn 子句集为语法,以Robinson的消解原理为工具,加上深度优先的控制策略而形成的人工智能通用程序设计语言,Prolog的理论基础,7.1 什么是Prolog语言,Horn子句集,消解原理,深度优先,Prolog系统,Prolog的理论基础,7.1 什么是Prolog语言,Prolog的发展历史?,7.1 什么是Prolog语言,Prolog语言最早由Aix-Marseille大学的Alain Colmerauer与Phillipe Roussel等人于60年代末研究开发。,第一个Prolog编译器是David Warren编写的。,Prolog一直在北美和欧洲被广泛使用。

4、日本政府曾经为了建造智能计算机而用Prolog来开发第五代计算机系统,80年代Borland开发的Turbo Prolog,进一步普及了Prolog的使用,1995年确定了ISO Prolog标准,Prolog很适合于开发有关人工智能方面的程序,例如:专家系统、自然语言理解、定理证明以及许多智力游戏。曾经有人预言Prolog将成为下一代计算机的主要语言,为什么要用Prolog开发程序?,7.1 什么是Prolog语言,理论上来说使用c语言可以编制任何种类的程序,甚至连Prolog语言都是使用c语言编写的。不过对于急于开发应用程序的用户,最关心的是如何最经济最有效率的开发程序,Prolog提供了

5、一个选择的余地,Prolog程序的特点,7.1 什么是Prolog语言,Prolog程序没有特定的运行顺序,其运行顺序是由电脑决定的,而不是编程序的人,从这个意义上来说,prolog程序不是真正意义上的程序。所谓程序就是按照一定的步骤运行的计算机指令,而prolog程序的运行步骤不由人来决定。它更像一种描述型的语言,用特定的方法描述一个问题,然后由电脑自动找到这个问题的答案。,既然程序的运行方式有电脑自己决定,当然就用不到这些控制流程的语句了。通常情况下,程序员不需要了解程序的运行过程,只需要注重程序的描述是否全面,不过Prolog也提供了一些控制流程的方法,这些方法和其他语言中的方法有很大的

6、区别。,Prolog程序的特点,7.1 什么是Prolog语言,Prolog程序中没有if、when、case、for这样的控制流程语句。,11,在prolog程序中,是很难分清楚哪些是程序,哪些是数据的。事实上,prolog中的所有东西都有相同的形式,也就是说数据就是程序,程序就是数据。,c语言中程序和数据是分开的!,Prolog程序的特点,7.1 什么是Prolog语言,prolog程序和数据高度统一,Prolog程序的特点,7.1 什么是Prolog语言,递归是一种非常简洁的方式,它能够有效的解决许多难题。在prolog中,递归的功能得到了充分的体现,prolog程序实际上是一个智能数据

7、库,prolog的原理就是关系数据库,它是建立在关系数据库的基础上的。使用prolog可以很方便的处理数据。,强大的递归功能,和其他的语言一样,最好的学习方法是实践。本课程将使用swi Prolog的解释器来向大家介绍几个具体的应用程序的编写过程。,首先你应该拥有一个Prolog的解释器,你可以在互联网上找到它。关于解释器的使用,请参阅相关的使用说明文档,建议使用amzi prolog 或者swi prolog来运行课程中出现的程序。,进入prolog世界,7.1 什么是Prolog语言,假设你所扮演的角色是一个三岁的小女孩,你想睡觉了,可是没有毛毯(nani)你就不能安心的睡觉。所以你必须在

8、那个大房子中找到你的毛毯,这就是你的任务,角色扮演游戏-小女孩找毛毯,7.1 什么是Prolog语言,7 智能控制语言 Prolog,7.1 什么是Prolog语言,7.2 Prolog入门-事实,7.3 Prolog入门-查询,7.4 Prolog入门-规则,7.5 Prolog入门-算术,7.6 Prolog入门-内部谓词,7.7 Prolog入门-递归和表,7.8 Prolog入门-截断,事实(facts)是prolog中最简单的谓词(predicate)。它和关系数据库中的记录十分相似。,7.2 Prolog入门-事实,谓词:Prolog语言的基本组成元素,可以是一段程序、一个数据类型

9、或者是一种关系。它由谓词名和参数组成。两个名称相同而参数的数目不同的谓词是不同的谓词。,事实 X = office ; X = hall ; X = dining room ; X = cellar ; no.,问题5: 列出所有的房间,最后的no表示找不到更多的答案了。,7.3 Prolog入门-查询,角色扮演游戏-小女孩找毛毯,?- location(Thing, kitchen). Thing = apple ; Thing = broccoli ; Thing = crackers ; no.,问题6:看看kitchen中都有些什么?,7.3 Prolog入门-查询,?- locati

10、on(Thing, Place). Thing = desk Place = office ; Thing = apple Place = kitchen ; Thing = flashlight Place = desk ; . no,问题7:查询所有的物体及其位置?,这里我们使用了两个变量 Thing 和 Place,【角色扮演游戏-小女孩找毛毯】,当Prolog试图与某一个目标匹配时,例如:location,它就在数据库中搜寻所有用location定义的子句,当找到一条与目标匹配时,它就为这条子句作上记号。当用户需要更多的答案时,它就从那条作了记号的子句开始向下查询。,7.3 Prolo

11、g入门-查询,查询的工作原理,我们来看一个例子,用户询问:location(X,kitchen),Prolog找到数据库中的第一条location子句,并与目标比较。 目标 location(X, kitchen) 子句#1 location(desk, office) 匹配失败 ,因为第二个参数不同,一个是kitchen,一个是office。,7.3 Prolog入门-查询,查询的工作原理,于是Prolog继续比较第二个子句。 目标 location(X, kitchen) 子句#2 location(apple, kitchen) 这回匹配成功,而变量X的值就被绑定成了apple。,?-

12、location(X, kitchen). X = apple,7.3 Prolog入门-查询,查询的工作原理,如果用户输入分号(;),Prolog就开始寻找其他的答案。首先它必须释放(unbinds)变量X。然后从上一次成功的位置的下一条子句开始继续搜索。这个过程叫做回溯(backtracking)。在本例中就是第三条子句。,匹配失败,直到第六条子句时匹配又成功了 。,目标 location(X, kitchen) 子句#3 location(flashlight, desk),目标 location(X, kitchen) 子句#6 location(broccoli, kitchen),

13、结果变量X又被绑定为broccoli,解释器显示:,X = broccoli,再度输入分号,X又被解放,开始新的搜索。又找到了,X = crackers,这回再没有新的子句能够匹配了,于是Prolog回答no,表示最后一次搜索失败了。,Prolog的目标有四个端口用来控制运行的流程:,7.3 Prolog入门-查询,Prolog的四个端口,一开始使用Call端口进入目标,如果匹配成功就到了exit端口,如果失败就到了fail端口,如果用户输入分号,则又从redo端口进入目标。,失败(fail):表示再找不到更多的满足目标的子句了,调用(call): 开始使用目标搜寻子句,退出(exit):目标

14、匹配成功,在成功的子句上作记号,并绑定变量,重试(redo):试图重新满足目标,首先释放变量,并从上次的记号开始搜索,在命令窗口输入trace后,可以查看输入查询命令location(X,kitchen).时的具体查询步骤,括号中的数字表示当前正在考虑的子句,7.3 Prolog入门-查询,Prolog的四个端口,?- location(X, kitchen). CALL: - location(X, kitchen) EXIT:(2) location(apple, kitchen) X = apple; REDO: location(X, kitchen) EXIT:(6) locatio

15、n(broccoli, kitchen) X = broccoli ; REDO: location(X, kitchen) EXIT:(7) location(crackers, kitchen) X = crackers ; FAIL - location(X, kitchen) no,把简单的查询连接起来可组成一些较复杂的查询。如果我们想知道厨房里能吃的东西,就可以向Prolog进行如下的询问:,7.3 Prolog入门-查询,Prolog的复杂(混合)查询,简单的查询只有一个目标,而混合查询可以把这些目标连接起来,从而进行较为复杂的查询。上面的连接符号,是并且的意思。用语言来描述就是“

16、寻找满足条件的X,条件是:X在厨房里,并且X能吃。”上面的查询只有找到某一个X的值,使得两个目标都成立时,才算查询成功。,查询结果中没有broccoli,因为我们没有把它定义为可吃的东西。,?- location(X, kitchen), edible(X). X = apple ; X = crackers ; no,?- location(X, kitchen), edible(X).,再来看一个有两个变量的复杂查询的例子,7.3 Prolog入门-查询,?- door(kitchen, R), location(T,R). R = office T = desk ; R = office T = computer ; R = cellar T = washing machine ; no,上面的查询用逻辑的语言来解释就是:“找房间R,使得从厨房到房间R有门相连,并且把房间R中的物品T(这里是房间R的所有物品)也找出来。”,Prol

展开阅读全文
相关资源
相关搜索

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

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