人工智能导论——谓词公式化为子句集详细步骤

news2024/11/13 13:16:05


在谓词逻辑中,有下述定义:
原子(atom)谓词公式是一个不能再分解的命题。
原子谓词公式及其否定,统称为文字(literal)。 P P P称为正文字, ¬ P \neg P ¬P称为负文字。 P P P ¬ P \neg P ¬P为互补文字。
任何文字的析取式称为子句(clause)。任何文字本身也是子句。
由子句构成的集合称为子句集。
不包含任何文字的子句称为空子句,表示为NIL。
由于空子句不含有文字,它不能被任何解释满足,所以,空子句是永假的、不可满足的。
在谓词逻辑中,任何一个谓词公式都可以通过应用等价关系及推理规则化成相应的子句集,从而能够比较容易地判定谓词公式的不可满足性。下面结合一个具体的例子,说明把谓词公式化为子句集的步骤。

[例] 将下列谓词公式化为子句集:
( ∀ x ) { ( ∀ y ) P ( x , y ) → ¬ ( ∀ y ) [ Q ( x , y ) → R ( x , y ) ] } \mathbf{(\forall x)\{(\forall y)P(x,y) \rightarrow \neg(\forall y)[Q(x,y) \rightarrow R(x,y)]\}} (∀x){(∀y)P(x,y)¬(∀y)[Q(x,y)R(x,y)]}

(1) 消去谓词公式中的 “ → ” “\rightarrow” “ ↔ ” “\leftrightarrow”
利用谓词公式的等价关系:
P → Q ⟺ ¬ P ∨ Q P ⟷ Q ⟺ ( P ∨ Q ) ∨ ( ¬ P ∨ ¬ Q ) \mathbf{P \rightarrow Q \Longleftrightarrow \neg P \lor Q} \\ \mathbf{P\longleftrightarrow Q \Longleftrightarrow(P \lor Q) \lor (\neg P \lor \neg Q)} PQ¬PQPQ(PQ)(¬P¬Q)
上列等式等价变化为:
( ∀ x ) { ¬ ( ∀ y ) P ( x , y ) ∨ ¬ ( ∀ y ) [ ¬ Q ( x , y ) ∨ R ( x , y ) ] } \mathbf{(\forall x)\{\neg (\forall y)P(x,y)\lor \neg(\forall y)[\neg Q(x,y)\lor R(x,y)]\}} (∀x){¬(∀y)P(x,y)¬(∀y)[¬Q(x,y)R(x,y)]}

(2)把否定符号移到紧靠谓词的位置上
利用谓词公式的等价关系:
双重否定律: ¬ ( ¬ P ) ⟺ P \mathbf{\neg(\neg P)\Longleftrightarrow P} ¬(¬P)P
德摩根律: ¬ ( P ∧ Q ) ⟺ ¬ P ∨ ¬ Q \mathbf{\neg(P \land Q)\Longleftrightarrow \neg P \lor \neg Q} ¬(PQ)¬P¬Q
        ¬ ( P ∨ Q ) ⟺ ¬ P ∧ ¬ Q \mathbf{\neg(P \lor Q)\Longleftrightarrow \neg P \land \neg Q} ¬(PQ)¬P¬Q
量词转换律: ¬ ( ∀ x ) P ⟺ ( ∃ x ) ¬ P \mathbf{\neg(\forall x)P \Longleftrightarrow(\exists x)\neg P} ¬(∀x)P(∃x)¬P
          ¬ ( ∃ x ) P ⟺ ( ∀ x ) ¬ P \mathbf{\neg(\exists x)P \Longleftrightarrow(\forall x)\neg P} ¬(∃x)P(∀x)¬P

把否定符号移到紧靠谓词的位置上,减少了否定符号的辖域。
上列等式变换为:
( ∀ x ) { ( ∃ y ) ¬ P ( x , y ) ∨ ( ∃ y ) [ Q ( x , y ) ∨ ¬ R ( x , y ) ] } \mathbf{(\forall x)\{(\exists y)\neg P(x,y)\lor(\exists y)[Q(x,y)\lor \neg R(x,y)]\}} (∀x){(∃y)¬P(x,y)(∃y)[Q(x,y)¬R(x,y)]}

(3)变量标准化
所谓变量标准化就是重新命名变元,使每个量词采用不同的变元,从而使不同量词的约束变元有不同的名字。这是因为在任一量词辖域内,受到该量词约束的变元为一哑元(虚构变量),它可以在该辖域内被另一个没有出现过的任意变元统一代替,而不改变谓词公式的值。

( ∀ x ) P ( x ) ≡ ( ∀ y ) P ( y ) ( ∃ x ) P ( x ) ≡ ( ∃ y ) P ( y ) \mathbf{(\forall x)P(x)\equiv (\forall y)P(y)}\\ \mathbf{(\exists x)P(x)\equiv (\exists y)P(y)} (∀x)P(x)(∀y)P(y)(∃x)P(x)(∃y)P(y)
上面等价变换为:
( ∀ x ) { ( ∃ y ) ¬ P ( x , y ) ∨ ( ∃ z ) [ Q ( x , z ) ∧ ¬ R ( x , z ) ] } \mathbf{(\forall x)\{(\exists y)\neg P(x,y)\lor(\exists z)[Q(x,z)\land \neg R(x,z)]\}} (∀x){(∃y)¬P(x,y)(∃z)[Q(x,z)¬R(x,z)]}
(4)消去存在量词
分两种情况:
一种情况是存在量词不出现在全称量词的辖域内。此时只要用一个新的个体常量替换受该存在量词约束的变元,就可以消去存在量词。因为如原谓词公式为真,则总能找到一个个体常量,替换后仍然使谓词公式为真。这里的个体常量就是不含变量的 S k o l e m Skolem Skolem函数。

另一种情况是存在量词出现在一个或者多个全称量词的辖域内。此时要用 S k o l e m Skolem Skolem函数替换受该存在量词约束的变元,从而消去存在量词。这里认为所存在的y依赖于x值,它们的依赖关系由Skolem函数所定义。

对于一般情况:
( ∀ x 1 ) ( ∀ x 2 ) . . . ( ∀ x n ) ( ∃ y ) P ( x 1 , x 2 , . . . , x n , y ) \mathbf{(\forall x_1)(\forall x_2)...(\forall x_n)(\exists y)P(x_1,x_2,...,x_n, y)} (x1)(x2)...(xn)(∃y)P(x1,x2,...,xn,y)
存在量词 y y y S k o l e m Skolem Skolem函数记为:
y = f ( x 1 , x 2 , . . . , x n ) \mathbf{y=f(x_1,x_2,...,x_n)} y=f(x1,x2,...,xn)
可见, S k o l e m Skolem Skolem函数把每个 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn值,映射到存在的那个 y y y

S k o l e m Skolem Skolem函数代替每个存在量词量化的变量的过程称为 S k o l e m Skolem Skolem化。 S k o l e m Skolem Skolem函数所使用的函数符号必须是新的。

对于上面的例子,存在量词 ( ∃ y ) (\exists y) (y) ( ∃ z ) (\exists z) (z)都位于全称量词 ( ∀ x ) (\forall x) (x)的辖域内,所以都需要用 S k o l e m Skolem Skolem函数代替。设 y y y z z z S k o l e m Skolem Skolem函数分别记为 f ( x ) f(x) f(x) g ( x ) g(x) g(x),则替换后得到
( ∀ x ) { ¬ P ( x , f ( x ) ) ∨ [ Q ( x , g ( x ) ) ∧ ¬ R ( x , g ( x ) ) ] } \mathbf{(\forall x)\{\neg P(x, f(x))\lor[Q(x, g(x))\land \neg R(x, g(x))]\}} (∀x){¬P(x,f(x))[Q(x,g(x))¬R(x,g(x))]}
(5)化为前束形
所谓前束形,就是把所有的全称量词都移到公式的前面,使每个量词的辖域都包括公式后的整个部分,即:
前束形 = ( 前缀 ) { 母式 } \pmb{前束形=(前缀)\{母式\}} 前束形=(前缀){母式}
其中,(前缀)是全称量词串,{母式}是不含量词的谓词公式。

对上面的例子,因为只有一个全称量词,而且已经位于公式的最左边,所以,这一步不需要做任何工作。
(6)化为 S k o l e m Skolem Skolem标准形
S k o l e m Skolem Skolem标准形的一般形式是:
( ∀ x 1 ) ( ∀ x 2 ) . . . ( ∀ x n ) M \mathbf{(\forall x_1)(\forall x_2)...(\forall x_n)M} (x1)(x2)...(xn)M
其中, M M M是子句的合取式,称为 S k o l e m Skolem Skolem标准形的母式。

一般利用:
P ∨ ( Q ∧ R ) ⇔ ( P ∨ Q ) ∧ ( P ∨ R ) P ∧ ( Q ∨ R ) ⇔ ( P ∧ Q ) ∨ ( P ∧ R ) \mathbf{P \lor(Q\land R) \Leftrightarrow(P\lor Q)\land (P\lor R)}\\ \mathbf{P \land(Q\lor R) \Leftrightarrow(P\land Q)\lor (P\land R)} P(QR)(PQ)(PR)P(QR)(PQ)(PR)
把谓词公式化为 S k o l e m Skolem Skolem标准形。

对于上面的例子,有
( ∀ x ) { [ ¬ P ( x , f ( x ) ) ∨ Q ( x , g ( x ) ) ] ∧ [ ¬ P ( x , f ( x ) ) ∨ ¬ R ( x , g ( x ) ) ] } \mathbf{(\forall x)\{[\neg P(x, f(x))\lor Q(x, g(x))]\land[\neg P(x,f(x))\lor \neg R(x,g(x))]\}} (∀x){[¬P(x,f(x))Q(x,g(x))][¬P(x,f(x))¬R(x,g(x))]}
(7)略去全称量词
由于公式中所有变量都是全称量词量化的变量,因此,可以省略全称量词。母式中的变量仍然认为是全称量词量化的变量。
对于上面的例子,有:
[ ¬ P ( x , f ( x ) ) ∨ Q ( x , g ( x ) ) ] ∧ [ ¬ P ( x , f ( x ) ) ∨ ¬ R ( x , g ( x ) ) ] \mathbf{[\neg P(x, f(x))\lor Q(x, g(x))]\land [\neg P(x, f(x))\lor \neg R(x, g(x))]} [¬P(x,f(x))Q(x,g(x))][¬P(x,f(x))¬R(x,g(x))]

(8)消去合取词,把母式用子句集表示
对于上面的例子,有:
{ ¬ P ( x , f ( x ) ) ∨ Q ( x , g ( x ) ) , ¬ P ( x , f ( x ) ) ∨ ¬ R ( x , g ( x ) ) } \mathbf{\{\neg P(x, f(x))\lor Q(x, g(x)), \neg P(x, f(x))\lor \neg R(x, g(x)) \}} {¬P(x,f(x))Q(x,g(x)),¬P(x,f(x))¬R(x,g(x))}

(9)子句变量标准化,即使每个子句中的变量符号不同
谓词公式的性质有:
( ∀ x ) [ P ( x ) ∧ Q ( x ) ] ≡ ( ∀ x ) P ( x ) ∧ ( ∀ y ) Q ( y ) \mathbf{(\forall x)[P(x)\land Q(x)]\equiv (\forall x)P(x)\land(\forall y)Q(y)} (∀x)[P(x)Q(x)](∀x)P(x)(∀y)Q(y)
对于上面的例子,有:
{ ¬ P ( x , f ( x ) ) ∨ Q ( x , g ( x ) ) , ¬ P ( y , f ( y ) ) ∨ ¬ R ( y , g ( y ) ) } \mathbf{\{\neg P(x, f(x))\lor Q(x, g(x)), \neg P(y, f(y))\lor \neg R(y, g(y)) \}} {¬P(x,f(x))Q(x,g(x)),¬P(y,f(y))¬R(y,g(y))}
显然,在子句集中各子句之间是合取关系。

下面举个课本上的例子熟练下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL实战作业示例:从离线文件生成数据库

前言 MySQL实战的课后作业,作业内容具体见 https://bbs.csdn.net/topics/611904749 截至时间是 2023年2月2日,按时提交的同学有一位。确实这次的作业非常有挑战性,作业用到的内容没有百分之百的学过,需要大家进行深入而有效的搜索…

【MyBatis】高级映射多对一,一对多和延迟加载

数据库准备:1. 多对一:多个学生对应一个班级(学生表是主表, 班级表是副表)多种实现方式, 常见的包括三种第一种方式&#xff1a; 一条sql语句, 级联属性映射// StudentMapper.xml // 一条sql语句, 级联属性映射 <resultMap id"studentResultMap" type"Studen…

Java当中的AQS

一、什么是AQS AQS的全称是:AbstractQueuedSynchronizer AQS是java当中的一个抽象类&#xff0c;用来构建锁和同步器。 例如我们常见的ReentrantLock&#xff0c;Semaphore等等都是通过AQS来构建的。 AQS的原理 如果被请求的共享资源没有被占用&#xff0c;那么就把请求资源…

spring boot集成xxl job

目录 1.xxl job介绍 2.搭建说明 (1)配置调度中心 (2)配置执行器 (3).执行 1.xxl job介绍 官网地址:分布式任务调度平台XXL-JOB XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 2.搭建说明 环境搭建主要分为两个部分…

《深入浅出计算机组成原理》学习笔记 Day19

冒险和预测&#xff08;三&#xff09;乱序执行参考乱序执行 尽管代码生成的指令是顺序的&#xff0c;但是如果后面的指令和前面的指令独立&#xff0c;完全不需要等待前面的指令运算完成&#xff0c;可以先执行。 这种解决方案称为乱序执行&#xff08;Out-of-Order Executi…

程序加载与运行过程中的资源分配与管理

目录 程序的加载 程序的内存空间 程序入口地址 BSS段初始化 程序运行过程中的堆栈管理 栈内存管理 变量的作用域&#xff1a; 栈溢出攻击原理 Linux堆内存管理 查看进程内存布局 内存分配器 内存块合并 top chunk 程序的运行分两种情况&#xff1a;一种是在有操作…

矩阵理论复习(九)

A为正规矩阵时&#xff0c;A的奇异值是A的特征值的模。A为半正定Hermite矩阵时&#xff0c;A的奇异值是A的特征值。 最佳逼近解 最小二乘解 矩阵的单边逆 A是左可逆的充要条件是A为列满秩矩阵 A是左可逆的充要条件是NA{0} 投影矩阵N(A)R(I-A),N(I-A)R(A) A是右可逆的充要…

腾讯电子签小程序跳转(app 跳小程序,小程序跳小程序) Api

腾讯电子签 官网地址&#xff1a;腾讯电子签跳转 api 文档 let id‘yDw9jUUgyg34gq97U7WZ9b1rWEBV******’ let name ‘张**’ let phone ‘MTQ3NDU3Oidioidkl’ let path pages/guide?fromSFY&toMVP_CONTRACT_COVER&id${id}&name${name}&phone${phone} wx…

Echarts解决左右上下边距问题( 两种方法)

第007个点击查看专栏目录文章目录示例效果示例源代码&#xff08;共88行&#xff09;相关资料参考相应的设置参数&#xff08;方法1&#xff09;相应的设置参数&#xff08;方法2&#xff09;专栏介绍示例效果 没有添加grid之前&#xff08;有grid的默认值来控制&#xff09; …

Web 3 财富分配方式

文章作者&#xff1a;Andrew Beal每个星期四&#xff0c;Forta 基金会团队都会在 Zoom 上聚会&#xff0c;享受虚拟欢乐时光。我还没有亲自见过我的一些同事&#xff0c;所以这是我唯一一次了解他们在办公室之外的身份。每个人都有故事要讲&#xff0c;你只需要问。规则是 “我…

Canal安装和配置

Canal安装和配置1.开启MySQL主从1.1.开启binlog1.2.设置用户权限2.安装Canal2.1.创建网络2.2.安装Canal2.3.查看canal是否与mysql建立连接下面我们就开启mysql的主从同步机制&#xff0c;让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能&#xff0c;因此…

wamp内置mysql和学习后端下载mysql相冲突问题

文章目录前言1.将后端的mysql放入wamp路径下2.打包代码文件3&#xff0c;查询wamp集合环境换mysql的办法成功way前言 尝试了各种能够兼容两者的办法都失败了 所以一气之下把wamp内的mysql删了&#xff0c;使前后端都使用一个mysql 1.将后端的mysql放入wamp路径下 将后端的mysq…

【6s965-fall2022】量化 Quantization Ⅱ

什么是线性量化 rS(q−Z)r S(q - Z)rS(q−Z) 式中&#xff0c;SSS是比例因子&#xff0c;通常是一个浮点数&#xff1b;qqq是rrr的量化后的表示&#xff0c;是一个整数&#xff1b;ZZZ也是一个整数&#xff0c;把qqq中和ZZZ相同的整数映射到rrr中零&#xff0c;因此ZZZ是零点偏…

24_mimikatz

mimikatz 一、介绍 二、修改注册表抓取明文密码 当目标为win10或2012R2以上时&#xff0c;默认在内存缓存中禁止保存明文密码&#xff0c;但可以通过修改注册表的方式抓取明文。 重启或用户重新登录后可以成功抓取 reg add HKLM\SYSTEM\CurrentControlSet\Control\Security…

Java设计模式总结

java常用七种设计模式总结单例模式单例模式的实现第 1 种&#xff1a;懒汉式单例第 2 种&#xff1a;饿汉式单例工厂方法模式一&#xff0c;简单工厂模式二、工厂方法模式三、抽象工厂模式建造者模式策略模式模板方法责任链模式代理模式适配器模式观察者模式单例模式 单例模式…

第三届腾讯Light技术公益创造营启动

简介 腾讯Light技术公益创造营通过持续探索技术与公益的结合&#xff0c;已经打造出了包括推进公众参与中华白海豚保育的公益计划、使用AI技术助力新生儿黄疸诊断的“高危儿拯救计划”等一批优秀项目 全面升级的第三届腾讯Light技术公益创造营在海南海口正式启动&#xff0c;…

Redis 分布式锁实现详解

一、概述分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享资源的最小粒度从线程升级成…

Go练手==若依go语言版本开发day01

代码地址&#xff1a;ry-vue-go: 使用GO开发若依后台 启动方式&#xff1a; pycharm打开项目后点击main.go启动后端 打开文件夹浏览器后&#xff0c;点击ruoyi-ui下的z_start_ui.bat启动前端 数据库 mysql 缓存redis ORM框架 GORM WEB框架 GIN 今日实现功能 mysql连接池U…

python采集《狂飙》评论,看看是什么让它如此火爆

前言 大家早好、午好、晚好吖 ❤ ~ “是非面前稍不留神&#xff0c;就会步入万丈深渊&#xff0c;唯有坚守信仰&#xff0c;才能守得初心” 2023年首部爆款剧集《狂飙》迎来大结局&#xff0c;今天我们就来采集一下评论,看看为什么它这么火爆 开发环境: python 3.8 pycharm …

计算机网络-TCP如何保证传输可靠性

TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP协议如何确保传输的可靠性的? 确保传输可靠性的方式 TCP协议保证数据传输可靠性的方式主要有&#xff1a; 1.校验和 2.序列号 3.确认应答 4.超时重传 5.连接管理 6.流量控制 7.拥塞控制 1.校验和 发送方&a…