逻辑程序设计语言范型Prolog语言控制抽象.ppt
《逻辑程序设计语言范型Prolog语言控制抽象.ppt》由会员分享,可在线阅读,更多相关《逻辑程序设计语言范型Prolog语言控制抽象.ppt(62页珍藏版)》请在三一办公上搜索。
1、,2023年10月31日星期二,程序设计语言范型Programming Languages Paradigms,教师:张荣华 华北电力大学计算机系软件教研室(保定),逻辑程序设计语言范型,Prolog语言控制抽象,第三部分,第七章,Prolog语言控制抽象,第七章-3,参考文献,Learn Prolog Now!by Patrick Blackburn,Johan Bos,and Kristina Striegnitz http:/www.coli.uni-saarland.de/kris/learn-prolog-now/,Prolog语言控制抽象,第七章-4,内容,1.Prolog语言概述
2、1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-5,1.Prolog语言概述,Prolog(Programming in Logic)诞生于20世纪70年代初法国马赛大学作为自然语言理解项目的一部分研制成功目前,爱丁堡大学开发的Prolog版本使用最为广泛。迄今最能体现逻辑程序设计思想的逻辑编程语言“说明式”的语言;采用一阶谓词演算说明(描述)问题知识库(事实和规则)的描述采用子句(Clause)形式控制流机制置换、合一归结回溯、深度优先搜索反向推理,Prolog语言控制抽象,第七
3、章-6,内容,1.Prolog语言概述1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-7,1.1 Prolog的基本元素,【例1】:水平线与垂直线问题。使用两个谓词:vertical/2 和 horizontal/2,vertical(line(point(X,Y),point(X,Z).horizontal(line(point(X,Y),point(Z,Y).,vertical(line(point(1,1),point(1,3).yes,事实,查询/目标,horizontal
4、(line(point(1,1),point(2,Y).Y=1;no,horizontal(line(point(2,3),P).P=point(_G434,3);no,Prolog语言控制抽象,第七章-8,1.1 Prolog的基本元素,【例2】求解以下六个英语单词的纵横字谜问题。abalone,abandon,anagram,connect,elegant,enhance,事实,规则,Prolog语言控制抽象,第七章-9,1.1 Prolog的基本元素,Prolog程序的语句(子句)包括:(1)事实(Facts)没有体部的horn子句,即被假定为真的命题。(2)规则(Rules)有头和体的
5、horn子句,只有体部的每个项都为真,头部才为真。,father(john,jim).,grandparent(Person1,Person2):-parent(Person3,Person2),parent(Person1,Person3).,Head,Body,Prolog语言控制抽象,第七章-10,1.1 Prolog的基本元素,Prolog语句由项(term)构成常量原子(atom):Prolog的符号值以小写字母开始的一串字母、数字、下划线或用单引号界定的一串任何可打印的ASCII字符。整数变量以大写字母开始一串字母、数字和下划线;下划线(_)表示匿名变量;注意与命令式语言中变量的区
6、别。结构(谓词/复杂项)vertical(line(point(X,Y),point(X,Z).,Prolog语言控制抽象,第七章-11,1.1 Prolog的基本元素,Prolog程序运行通过提问查询知识库使用分号(;)查询多个解(multiple answers)分号有特定的语义:表示结束当前合一,回溯查找其它可满足的解。,Prolog语言控制抽象,第七章-12,内容,1.Prolog语言概述1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-13,1.2 Prolog实验环境,S
7、WI-Prolog(推荐使用!)安装文件(注意顺序安装)(1)SWI-Prolog for MS-Windows(version)(2)SWI-Prolog-Editor,Prolog语言控制抽象,第七章-14,内容,1.Prolog语言概述1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-15,2.1 项的合一,合一如果Term1和Term2是常量,那么当且仅当Term1和 Term2是相同的原子或整数;如果Term1是变量,Term2是任何类型的项,那么 Term1实例化为Ter
8、m2;注:如果Term2也是变量,互相实例化,共享值。如果Term1和Term2都是结构,两者合一,当且仅当(a)两者有相同的算符(谓词);(b)两者对应的参数匹配,即能够递归地合一;(c)变量实例化必须保持一致性;当满足前面三种情况时,两者项合一。,?-a=a.yes/常量与自己合一?-a=b.no/常量不能与其他常量合一?-foo(a,b)=foo(a,b).yes/结构递归合一?-X=a.X=a;/变量和常量合一no/仅此一次合一?-foo(a,b)=foo(X,b).X=a;/参数合一no/只有是一种可能,Prolog中的相等是基于“合一”的定义,内部共享变量,?-A=B.A=_G20
9、6B=_G206;no,Prolog语言控制抽象,第七章-17,2.1 项的合一,【思考】Prolog实现合一操作时是否使用标准的合一算法?老版本的Prolog实现:Notenoughmemorytocompletequery!现代版本的Prolog实现:,X=father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(f
10、ather(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father(father,X=father(father(father(father(father(father(.),X=father(*),SICStus Prolog,SWI Prolog,Prolog语言控制抽象,第七章-18,内容,1.Prolog语言概述1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一
11、 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-19,2.2 归结,Prolog中的推理来自Robison归结原理,在Prolog中,如果C1和C2都是子句,且C1的头部与C2的体中的一个项合一,那么就可以用C1的体取代C2里的那个项。例如:,Prolog语言控制抽象,第七章-20,内容,1.Prolog语言概述1.1 Prolog的基本元素1.2 Prolog实验环境2.合一2.1 项的合一 2.2 归结2.3 基于合一编程3.控制流,Prolog语言控制抽象,第七章-21,2.3 基于合一编程,【例1】,Prolog语言控制抽象,第七章-22,2.3 基于合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逻辑 程序设计语言 Prolog 语言 控制 抽象
链接地址:https://www.31ppt.com/p-6442110.html