第9章逻辑程序设计精选文档.ppt
《第9章逻辑程序设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第9章逻辑程序设计精选文档.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9 9章逻辑程序设计章逻辑程序设计本讲稿第一页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言2 2本讲稿第二页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n逻辑程序设计n逻辑程序设计支持说明性程序设计范型n根据问题的高层描述来构建程序n告诉计算机“什么是真的”和“需要做什么”,而不是“怎样做”。n程序员把精力放在问题(封闭的问题世界)的描述上,而不是写一些诸如“下一步做什么”之类的底层算法指令。3 3本讲稿第三页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n逻辑程序设计中使用的逻辑n【例】用谓词表示的逻辑命题n0是自然数n2是自
2、然数n对于所有的x,如果x是自然数,则x+1也是自然数n-1是自然数natural(0)natural(2)natural(-1)forallx,natural(x)natural(successor(x)二值逻辑二值逻辑4 4本讲稿第四页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n谓词演算元素n常量:数或名称n谓词:值域为真或假的函数名n函数:区别谓词的其余函数n变量:不确定值n连接词:n量词:描述变量n标点符号:(),;(),;a为真时为真时b为真为真ab存在量词存在量词全称量词全称量词natural(0)forallx,natural(x)natural(successor
3、(x)5 5本讲稿第五页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n一阶谓词演算(first-order predicate calculus)n全称量化变量和存在量化变量仅可以指向论域中的对象,而不允许指向谓词和函数n谓词和函数的参数是项n常量n变量n函数6 6本讲稿第六页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n推理规则n【例】有如下三段论:n“所有人会死;苏格拉底是人,所以苏格拉底会死。”,abab7 7本讲稿第七页,共九十页【例】证明:Fido会死Fido是狗 所有的狗都是动物 所有的动物都会死证明n所有的狗都是动物:nFido是狗:n取式假言推理和fid
4、o/X:n所有的动物都会死:n取式假言推理和fido/Y:谓词形式谓词形式1.1.逻辑和逻辑程序逻辑和逻辑程序8 8本讲稿第八页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n推理规则n为了应用推理规则进行推理,推理机必须能够判断两个表达式是否相同(匹配)。n这种寻找项对变量的置换,使谓词一致的过程叫做合一的过程(合一算法)n项:常量、函数或其他变量n公式集F=man(X),man(socrates)中的两个公式是可合一的,置换=scorates/X是该公式集的一个合一。9 9本讲稿第九页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n推理规则n化简式(与消除):PQ=P
5、和 PQ=Qn附加式:P=PQ 和 Q=PQn析取三段论:P,P V Q=Qn取式假言推理:P,PQ=Qn拒式假言推理:Q,P Q=Pn假言三段论:P Q,Q R=P R n二难推理:P Q,P R,Q R=Rn全称固化:(x)P(x)=P(a)n存在固化:(x)P(x)=P(a)1010本讲稿第十页,共九十页1.1.逻辑和逻辑程序逻辑和逻辑程序n谓词演算n推理规则n自然演绎推理n从一组已知为真的事实出发,直接运用经典逻辑中的推理规则推出结论的过程1111本讲稿第十一页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言1212本讲稿第十二页,共九十页
6、2.Horn 2.Horn 子句子句nHorn子句是形如 的命题 n其中a只能是简单的不包含连接词的命题 na的数量可以为零n注意:Horn子句能够被用来表示大多数的逻辑命题,但不是全部 没有没有or和量词和量词所有的所有的a为真为真则则b真真b恒恒真真事实事实1313本讲稿第十三页,共九十页【例】证明:Fido会死所有的狗都是动物 Fido是狗所有的动物都会死谓词形式谓词形式子句形式子句形式2.Horn 2.Horn 子句子句隐式全称隐式全称约束约束1414本讲稿第十四页,共九十页2.Horn 2.Horn 子句子句n目标驱动n自动推理系统,反向使用Horn子句n询问(目标语句)子句体子句体
7、子句头子句头无头子句无头子句对对b的定义的定义1515本讲稿第十五页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言1616本讲稿第十六页,共九十页3.3.归结与合一归结与合一n归结(消解)n两个Horn子句n第一个Horn子句的头与第二个子句体的一个命题匹配n则第二个子句中的命题可以被替换为第一个子句的体n【例】bi匹配匹配a1717本讲稿第十七页,共九十页3.3.归结与合一归结与合一n归结过程(目标驱动)n用已知子句的头部来匹配无头子句体中的一个目标n如果成功,用已知子句的体替换被匹配的目标(归结),建立新的子句n继续用同样的方式修改目标系列n
8、这些新的目标被称为子目标n如果成功消除了所有的目标,则初始命题得证询问询问1818本讲稿第十八页,共九十页3.3.归结与合一归结与合一子句集子句集“死狗死狗”问题的归结证明问题的归结证明合一合一要匹配包含变量的语句必须令变量等于某项1919本讲稿第十九页,共九十页3 3 归结与合一归结与合一n必须解决的问题n逻辑程序系统必须使用一个高效执行的算法,规定n求解目标应用子句的顺序 2020本讲稿第二十页,共九十页3 3 归结与合一归结与合一2121本讲稿第二十一页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言2222本讲稿第二十二页,共九十页Prol
9、ogProlog语言概述语言概述nProlog(ProProgramming in LogLogic)n诞生于20世纪70年代初n法国马赛大学作为自然语言理解项目的一部分研制成功n目前,爱丁堡大学开发的Prolog版本使用最为广泛n主要应用于人工智能领域相关问题的求解n易于表达人的逻辑思维n迄今最能体现逻辑程序设计思想的逻辑编程语言n“说明式”的语言;n采用一阶谓词演算说明(描述)问题n知识库(事实和规则)的描述采用子句(Clause)形式nProlog是目前唯一广泛使用的逻辑程序设计语言2323本讲稿第二十三页,共九十页PrologProlog语言概述语言概述nSWI-Prolognhttp
10、:/www.swi-prolog.org/n安装文件(注意顺序安装)n(1)SWI-Prolog for MS-Windowsn(2)SWI-Prolog-Editornhttp:/lakk.bildung.hessen.de/netzwerk/faecher/informatik/swiprolog/indexe.html 2424本讲稿第二十四页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言n4.1 符号和数据结构n4.2 Prolog的执行n4.3 合一n4.4 Prolog的搜索策略n4.5 循环和控制结构2525本讲稿第二十五页,共九十
11、页4.1 4.1 符号和数据结构符号和数据结构n基本符号n常量n以小写字母开始的一串字母、数字、下划线或用单引号界定的一串任何可打印的ASCII字符。n变量n以大写字母开始一串字母、数字和下划线;n下划线(_)表示匿名变量;n连接词n,/and n;/orn:-/implementation2626本讲稿第二十六页,共九十页4.1 4.1 符号和数据结构符号和数据结构n基本数据结构n结构(谓词/复杂项)n vertical(line(point(X,Y),point(X,Z).2727本讲稿第二十七页,共九十页4.1 4.1 符号和数据结构符号和数据结构n基本数据结构n表(List):有限的元
12、素序列。n由方括号 之间由逗号隔开的有序元素组成。n表中的元素可以是原子、结构、或任何其它的项,包括表在内。2828本讲稿第二十八页,共九十页4.1 4.1 符号和数据结构符号和数据结构n基本数据结构n表n任何非空的表=表头(head)+表尾(tail)n表头:表的第一个元素;n表尾:除第一个元素,表的其它元素组成的表。nProlog内部谓词“|”n用于将表分解为表头和表尾;n灵活使用灵活使用|是写好是写好PrologProlog表处理程序的关键表处理程序的关键!2929本讲稿第二十九页,共九十页4.1 4.1 符号和数据结构符号和数据结构n基本数据结构n表n谓词“|”的使用3030本讲稿第三
13、十页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言n4.1 符号和数据结构n4.2 Prolog的执行n4.3 合一n4.4 Prolog的搜索策略n4.5 循环和控制结构3131本讲稿第三十一页,共九十页4.2 Prolog4.2 Prolog的执行的执行nProlog程序运行n通过提问查询知识库n使用分号(;)查询多个解(multiple answers)3232本讲稿第三十二页,共九十页内容内容n1.逻辑和逻辑程序n2.Horn子句n3.归结与合一n4.Prolog语言n4.1 符号和数据结构n4.2 Prolog的执行n4.3 合一n4.
14、4 Prolog的搜索策略n4.5 循环和控制结构3333本讲稿第三十三页,共九十页4.3 4.3 合一合一n合一n对变量初始化或者分配存储空间和值的过程n在某种意义上是将两个项等同的过程 n?-a=a.yes /常量与自己合一n?-a=b.no /常量不能与其他常量合一n?-foo(a,b)=foo(a,b).yes /结构递归合一PrologProlog中中“=”表示合一表示合一3434本讲稿第三十四页,共九十页n合一n?-X=a.X=a;/变量和常量合一no /仅此一次合一 n?-foo(a,b)=foo(X,b).X=a;/参数合一no /只有是一种可能n?-A=B.nA=_G206n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逻辑 程序设计 精选 文档
限制150内