[人工智能] 第3章 基于谓词逻辑的知识表示与机器推理技术_消去存在量词的两种情况-程序员宅基地

技术标签: 人工智能  

3.2 谓词逻辑简介

3.2.1 基于命题逻辑的知识表示

用大写字母来表示命题
特定命题----命题常量
抽象命题(含未知参数x)----命题变量
从符号上无法表达不同对象的相同特征 >> 发展了谓词逻辑

3.2.2 谓词逻辑

谓词形如P(x1,x2,…,xn)
命题函数:谓词公式
如果一个谓词公式中所有的个体变量都被量化,或者所有的变量都用常量代替,这时谓词公式就变成了一个命题
在这里插入图片描述

3.2.3 基于谓词逻辑的知识表示

任意+蕴含
存在+合取

3.3 自然演绎推理

从一组用谓词公式表示的事实出发,利用常用的逻辑等价式对公式进行等价变换,再使用推理定律以及推理规则推出结论,这一过程称之为自然演绎推理

逻辑等价式/推理定律

优点:证明的过程比较自然,容易理解
缺点:容易出现中间结论的组合爆炸,针对复杂实际推理问题时效率较低

3.4 归结演绎推理

归结反演本质上是一种反证法,即要证明命题Q在前提F下为真,只需要证明反命题恒假

3.4.1 子句集

文字:原子谓词公式及其否定
原子谓词公式称为正文字
原子谓词公式的否定称为负文字
任何文字的析取式称为子句
如果一个子句包含n个文字,则称为n文字子句
只含一个文字的子句称为单元子句
不包含任何文字的子句称为空子句 表示:Nil
(空子句永假)
由子句构成的集合称为子句集。子句集中子句和子句之间的关系是合取关系,所以,子句集就是一个合取范式

求谓词公式的子句集步骤P74
消去存在量词,同时要进行变量替换:
一种情况是存在量词不在全称量词的辖域内,此时消去存在量词,并用一个新的个体常量符号代替原存在量词辖域内的约束变量(Skolem常量)
另一种情况是存在量词出现在全称量词的辖域内,此时消去存在量词,并用一个全称量词约束的变量的函数代替存在量词辖域内的约束变量(Skolem函数)

小结
Skolem标准型与原公式一般不等价
一个公式的子句集就是该公式的Skolem标准型的另一种表达形式
消去存在量词的过程使谓词公式的子句集与原谓词公式并不等价
在不可满足性上谓词公式和它的子句集是等价的,即如果谓词公式不可满足,则其子句集也一定不可满足,反之亦然
定理3.1定理3.2定理3.3

3.4.2 命题逻辑中的归结原理

P77
互补文字
归结式
亲本子句
消解基

归结的结果不受顺序的影响

定理3.4 归结式是其亲本子句的逻辑结果
在这里插入图片描述
推论1和2
归结反演方法:可以用证明子句集的不可满足性的方法,证明原谓词公式的否定是不可满足的,从而证明原谓词公式是永真

利用归结反演方法证明定理的具体步骤:P78

3.4.3 替换与合一

替换是形如θ={t1/x1,t2/x2,…,tn/xn}的有限集合
F根据θ进行替换称为F在θ下的特例

一个谓词公式的任何例都是它的逻辑结论

替换的符合θ·λ P79
例3.11 P79

合一
一个公式集的合一不是唯一的
最一般合一
差异集

求最一般合一的算法 P81
最一般合一也不是唯一的
合一算法是完备的,也可以判断公式集的最一般合一是否存在

3.4.4 谓词逻辑中的归结原理

二元归结式/归结式的亲本子句/归结文字
定义3.23 因子/单因子
在这里插入图片描述
在这里插入图片描述

3.4.6 归结策略

广度优先搜索策略进行归结 相同层之间两两归结

归结策略的完备性

深度优先搜索策略是先产生第一层的归结项,然后用某些第一层或0层的子句进行归结,得到第二层的归结项,以此类推

在这里插入图片描述
删除策略是完备的。即对于不可满足的子句集,使用删除策略进行归结,最终必导出空子句。

目标公式否定所得的子句及其后裔字句组成的字句集即为支持集

支持集策略实际是一种目标制导的反向推理。

支持集策略是完备的。

线性归结策略:在归结过程中,除第一次归结都用给定的子句集中的子句外,其后每次归结则至少要有一个亲本子句是上次归结的结果

线性归结策略是完备的,高效的。

单元归结策略:在归结过程中,每次参加归结的两个亲本子句中必须至少有一个为单元子句

单元归结策略是不完备的,但效率高

祖先过滤形策略:参加归结的两个子句,要么至少有一个是初始子句集中的子句,要么一个是另一个的祖先
是完备的
是线性输入策略的改进

3.5 归结原理与Prolog语言

Prolog语言就是以Horn子句逻辑为基础的程序设计语言

Prolog程序的运行是一种从问题语句(目标语句)开始的线性归结过程

Prolog
规则和事实可连续排列在一起, 其顺序可随意安排, 但同一谓词名的事实或规则必须集中排列在一起

问题不能与规则及事实排在一起, 它作为程序的目标要么单独列出, 要么在程序运行时临时给出

其问题就相当于主程序,其规则就相当于子程序,其事实就相当于数据

特点:
推理方式为反向推理
控制策略是深度优先,且有回溯机制

正向推理:F-规则
反向推理:B-规则
所谓双向演绎推理,即分别从基于事实的F-规则正向推理出发,也从基于目标的B-规则逆向推理出发,同时进行双向演绎推理。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hahastephanie/article/details/113401934

智能推荐

Python 入门的60个基础练习_练习python基础语法-程序员宅基地

文章浏览阅读4.2w次,点赞329次,收藏2.7k次。Python 入门的60个基础练习_练习python基础语法

iOS6和iOS7代码的适配(2)——status bar_ios7 statusbar-程序员宅基地

文章浏览阅读1w次。用Xcode5运行一下应用,第一个看到的就是status bar的变化。在iOS6中,status bar是系统在处理,应用_ios7 statusbar

gdb调试时No symbol "var" defined in current context && No Register_no registers调试显示-程序员宅基地

文章浏览阅读2.1k次。问题描述:,在gdb调试程序输出变量:p var,会提示No symbol "var" in current context.原因:程序编译时开启了优化选项,那么在用GDB调试被优化过的程序时,可能会发生某些变量不能访问,或是取值错误码的情况。这个是很正常的,因为优化程序会删改程序,整理程序的语句顺序,剔除一些无意义的变量等,所以在GDB调试这种程序时,运行时的指令和你所编写指_no registers调试显示

IDGeneratorUtil 主键id生成工具类_idgeneratorutils.generateid()-程序员宅基地

文章浏览阅读3.4k次。import java.util.Random;import org.drools.util.UUIDGenerator;/** * * * 类名称:GenerateIdUtil * 类描述: 主键生成工具类 * @author chenly * 创建时间:Jul 10, 2012 8:10:43 AM * 修改人: * 修改时间:Jul 10, 2012 8..._idgeneratorutils.generateid()

关于汇编 BX 和 BLX 跳转指令_汇编blx-程序员宅基地

文章浏览阅读5k次。BX:跳转到寄存器reg给出的目的地址处,如:BX R2BLX:跳转到寄存区reg给出的目的地址处并将返回地址存储到LR(R14)使用这两个指令时有一点特别需要注意:跳转的目的地址必须是奇数,若不是奇数则在后面加1,如某函数的起始地址是0x80000f00,则要跳转到此函数则应该跳转到0x80000f01处!否则会进入硬件错误中断!..._汇编blx

前端vue,打包整合进后端springboot的resources里面后,运行只要刷新就报404_前端项目放入resource-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏4次。vue打包后,其实就剩index.html和一堆静态资源,页面的加载和替换都是通过刷新index.html种的dom来实现的(应该是这样,可能表述不是很好),所以做个重定向就可以了。(博主是这么解决的,网上还有很多人是各种路径错误,大家可以尝试下自己是哪个原因)import org.springframework.boot.web.server.ConfigurableWebServerFa..._前端项目放入resource

随便推点

添加远程github仓库时报错 Warning: Permanently added the RSA host key for IP address 52.74.223.119_cmd warning: permanently added-程序员宅基地

文章浏览阅读9.7k次。1.问题展示2.解决方案1.任意窗口, 打开git bash2.命令行界面, 输入cd C:3.cat ~/.ssh/id_rsa.pub正常下面应该显示一大串公钥如果没有,显示如下图, 则进行下一步, 创建公钥4.创建公钥, 输入 ssh-keygen5.然后一直下一步, 直到出现6.再次输入cat ~/.ssh/id_rsa.pub下面一大串数字便是公钥,复制这些字符串, 打开github, 点击头像, 打开settings, 打开SSH and GPG Keys_cmd warning: permanently added

SQL*Plus 使用技巧1-程序员宅基地

文章浏览阅读154次。[code="java"]1. SQL/Plus 常用命令 a. help [topic] 查看命令的使用方法,topic表示需要查看的命令名称。 如: help desc; b. host 该命令可以从SQL*Plus环境切换到操作系统环境,以便执行操作系统命名。 c. host [command] 在sql*plus环境中执行操作系统命令,如:host notepad.exe..._sql+plus的使用方法

域控服务器搭建与管理论文,校园网络服务器的配置与管理 毕业论文.doc-程序员宅基地

文章浏览阅读441次。该文档均来自互联网,如果侵犯了您的个人权益,请联系我们将立即删除!**学校毕 业 论 文**学校园网络服务器的配置与管理姓 名: **学 号: **指导老师:系 名:专 业: 计算机网络技术班 级:二0一一年十二月十五日摘 要随着网络技术的不断发展和Internet的日益普及,许多学校都建立了校园网络并投入使用,这无疑对加快信息处理,提高工作效..._服务器配置与应用论文

mysql单实例多库与多实例单库_数据库单实例和多实例-程序员宅基地

文章浏览阅读1k次。一、单实例多库:一个mysql实例,创建多个数据目录。规划:实例路径:/usr/local/mysql数据目录路径:(1)/usr/local/mysql/data(2)/usr/local/mysql/data2步骤:安装mysql。配置my.cnf文件。初始化各个数据库。用mysqld_multi启动。1、安装mysql。平常安装。2、m..._数据库单实例和多实例

MFC解决找不到MFC90.DLL的问题_microsoft v90.debugmfc-程序员宅基地

文章浏览阅读6.3k次。今天装了第三方的MFC软件库Xtreme ToolkitPro v15.0.1,听说搞MFC的人都知道它的强大,我刚学习,所以装了一个,然后想运行一下它自带的例子看看。出现一个“找不到mfc90.dll“的问题,百度一下,记录如下:vs2008已经打过sp1补丁,编译C++程序会提示找不到mfc90.dll文件的错误,但是如果是release版的话就能正常运行csdn看到解决方案,粘贴_microsoft v90.debugmfc

XeLaTeX-中文排版解决方案_latex 中文排版 texlive-程序员宅基地

文章浏览阅读2.1k次。以前使用CJK进行中文的排版,需要自己生成字体库,近日,出现了XeTeX,可以比较好的解决中文字体问题,不需要额外生成LaTeX字体库,直接使用计算机系统里的字体,本文以在Linux下为例说明XeTeX的使用。操作系统: UbuntuTeX:除了texlive包外,还需要安装的包是texlive-xetex。字体:可以使用fc-list查看你自己的字体库,注意字体的完整名称,在XeTe..._latex 中文排版 texlive