人工智能原理复习--确定性推理

news2025/7/18 7:44:48

文章目录

  • 上一篇
  • 推理概述
  • 自然演绎推理
    • 合适公式
  • 归结演绎推理
    • 归结原理
    • 归结反演
  • 提升归结效率
  • 下一篇

上一篇

人工智能原理复习–知识表示(二)

推理概述

推理就是按某种策略由已知判断推出另一判断的思维过程

分类:

  1. 演绎推理、归纳推理、默认推理
  2. 确定推理、不确定推理
  3. 单调推理、非单调推理

冲突消解策略:

  1. 按就近原则排序
  2. 按已知事实的新鲜度排序
  3. 按匹配度排序
  4. 按领域问题特点排序
  5. 按上下文限制排序
  6. 按条件个数排序
  7. 按规则的次序排序

自然演绎推理

自然演绎推理是指从一组已知的事实出发,直接运用命题逻辑或谓词逻辑中的推理规则推出结论的过程。
推理规则:

  1. P规则:在推理的任何步骤上都可引入前提,继续进行推理
  2. T规则:推理时,如果前面步骤中有一个或多个公式永真蕴含公式S,则可把S引入推理过程中。
  3. 反证法: P → Q P \rightarrow Q PQ当且仅当前真后假的时候时不可满足的
  4. 假言推理:如果P为真, P → Q P \rightarrow Q PQ,则Q为真
  5. 拒取式推理:如果Q为假, P → Q P \rightarrow Q PQ,则P也为假

注意:避免产生的两类错误:

  1. 如果Q为真,那么 P → Q P \rightarrow Q PQ, 不能推出P的真值
  2. 如果P为假,那么 P → Q P \rightarrow Q PQ, 不能推出Q的真假

合适公式

遵从下列递归定义的是合适公式
单一谓词公式是合适公式,使用 ¬ 、 ∧ 、 ∨ 、 → 、 ↔ 、 ∃ 、 ∀ \lnot、\land、\lor、\rightarrow、\leftrightarrow、\exist、\forall ¬后仍是合适公式

合适公式的性质
重点:

  1. P → Q ⇔ ¬ P ∨ Q P \rightarrow Q \Leftrightarrow \lnot P \lor Q PQ¬PQ
  2. 逆否: P → Q ⇔ ¬ Q → ¬ P P \rightarrow Q \Leftrightarrow \lnot Q \rightarrow \lnot P PQ¬Q¬P
  3. 摩根定律: ( ¬ P ∨ ¬ Q ) ⇔ ¬ ( P ∧ Q ) (\neg P \lor \neg Q) \Leftrightarrow \neg (P \land Q) (¬P¬Q)¬(PQ)
  4. 量词否定: ¬ ( ∃ x ) P ( x ) ⇔ ( ∀ x ) ( ¬ P ( x ) ) \lnot (\exist x)P(x) \Leftrightarrow (\forall x)(\lnot P(x)) ¬(x)P(x)(x)(¬P(x))任意存在互换同理
  5. 量词分配:可以将量词分配到括号里

合适公式的标准化

  1. 首先要以量词前束范式来表示合适公式,前束范式就是在前面将变量量词罗列出来,后面括号里没有任何量词的谓词公式。
  2. Skolem标准型,在前束范式的基础上,消除存在量词,而拿来保证公式的永假性的函数称为Skolem函数,无参时称为Skolem常量,从一阶逻辑公式变换到Skolem标准型不是等值变换,但是保持永假性。
  3. 要求母式(即后面的公式化为合取范式)
    • 消去多余的量词
    • 消去蕴含符号
    • 减少否定的辖域(内移否定符号)
    • 变量标准化(变量换名)(名字相同,辖域不同需要换成不同的名字)
    • 消去存在量词(Skolem变换)
    • 全称量词前束化
    • 消去全称量词
    • 把母式转化为合取范式

消去存在量词方法:

  1. 如果 ∃ \exist ∀ \forall 的辖域内
    ( ∀ z ) ( ∃ w ) [ ¬ Q ( x , z ) ∧ P ( z , w ) ] (\forall z)(\exists w)[\lnot Q(x, z) \land P(z, w)] (z)(w)[¬Q(x,z)P(z,w)]
    如果w依赖于z则可以用w = g(z)来定义这种依赖关系,用g(z)来取代约束变量w,消去存在量词 ∃ w \exist w w
    ( ∀ z ) [ ¬ Q ( x , z ) ∨ P ( z , g ( z ) ) ] (\forall z)[\lnot Q(x,z) \lor P(z, g(z))] (z)[¬Q(x,z)P(z,g(z))]
  2. 如果 ∃ \exist 在多个 ∀ \forall 的辖域内
    ( ∀ x ) ( ∀ y ) ( ∀ z ) ( ∃ w ) P ( x , y , z , w ) (\forall x)(\forall y)(\forall z)(\exist w)P(x, y, z, w) (x)(y)(z)(w)P(x,y,z,w)
    则用多元函数g(x, y, z)来取代w
    ( ∀ x ) ( ∀ y ) ( ∀ z ) ( ∃ w ) P ( x , y , z , g ( x , y , z ) ) (\forall x)(\forall y)(\forall z)(\exist w)P(x, y, z, g(x, y, z)) (x)(y)(z)(w)P(x,y,z,g(x,y,z))
  3. 如果 ∃ \exist ∀ \forall 的辖域外
    ( ∃ w ) ( ∀ z ) [ ¬ Q ( x , z ) ∨ P ( z , w ) ] (\exist w)(\forall z)[\lnot Q(x,z) \lor P(z, w)] (w)(z)[¬Q(x,z)P(z,w)]
    则用任意的常量来取代w
    ( ∃ w ) ( ∀ z ) [ ¬ Q ( x , z ) ∨ P ( z , A ) ] (\exist w)(\forall z)[\lnot Q(x,z) \lor P(z, A)] (w)(z)[¬Q(x,z)P(z,A)]

实质就是找个已知的东西将存在量词的变量取代掉,在 ∀ \forall 辖域内就是Skolem函数,之外就是常量,但是使用的函数不允许重名,同时常量符号也不允许重名。

合取范式就是用合取( ∧ \land )连接,括号内用只能是析取

**合取范式标准化例题**

归结演绎推理

自动定理证明:
一般形式: F 1 ∧ F 2 ∧ F n ⇒ W F_1 \land F_2 \land F_n \Rightarrow W F1F2FnW

反证法:将证明永真改为证明 F 1 ∧ F 2 ∧ F n ∧ ¬ W F_1 \land F_2 \land F_n \land \lnot W F1F2Fn¬W永假

子句就是仅有析取( ∨ \lor )构成的合适公式
合取范式可定义为子句的合取( ∧ \land )
在这里插入图片描述
在这里插入图片描述
合适公式 → 合取范式 → 子句集 S 合适公式 \rightarrow 合取范式 \rightarrow 子句集S 合适公式合取范式子句集S
其中一个重要的性质: 子句集 S 的不可满足性 ↔ 合适公式永假 子句集S的不可满足性 \leftrightarrow 合适公式永假 子句集S的不可满足性合适公式永假

归结原理

在这里插入图片描述
而加入归结式的子句集 S ′ S' S与原来子句集在不可满足性上式等价的
在这里插入图片描述
对子句集的消解规则:

  1. 假言推理 P , ¬ P ∨ Q ⇒ Q P, \lnot P \lor Q \Rightarrow Q P,¬PQQ
  2. 合并 P ∨ Q , ¬ P ∨ Q ⇒ Q P \lor Q, \lnot P \lor Q \Rightarrow Q PQ,¬PQQ
  3. 重言式 P ∨ Q , ¬ P ∨ ¬ Q ⇒ Q ∨ ¬ Q 或者 ( P ∨ ¬ P ) P \lor Q, \lnot P \lor \lnot Q \Rightarrow Q \lor \lnot Q 或者(P \lor \lnot P) PQ,¬P¬QQ¬Q或者(P¬P)注意并不是空
  4. 空子句 P , ¬ P ⇒ N I L P, \lnot P \Rightarrow NIL P,¬PNIL只用一个符号是才为空

子句中的文字知识原子命题公式或其取反,不带变量,这样易于判别那些子句对包含互补文字
在这里插入图片描述

子句中含有变量,不能直接发现和消去互补文字,需要对潜在的互补文字先做变量置换和合一处理。
置换项可以是常量、变量或函数 t / v (置换项后 / 源变量) ,置换就是为了让谓词公式的文字同一确定互补性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是如果子句集是永真,可满足的那么归结原理将永无休止的进行下去,得不到任何结果

归结反演

将结论取反与公式集合取,然后将这个 F ∧ ¬ W F \land \lnot W F¬W标准为子句,并合并为子句集S
在这里插入图片描述
在这里插入图片描述

归结反演也可根据归结树的结果提取有效信息
在这里插入图片描述

归结反演可实现提取问题回答
回答问题时,目标公式往往受存在量词约束,这是回答提取,就是给出使W(x)为真的x的某个值。
方法就是建立目标子句G(G是要回答问题的取反)的重言式(永真式) G ∨ ¬ G G \lor \lnot G G¬G,将这个重言式加入归结演绎过程取代原来的G,这时生成的树是修改证明树,此时树根不再是空子句,而是 ¬ G \lnot G ¬G, G被置换项取代,实现问题回答,这个取代的结果就是回答的结果。

但是重言式中的 ¬ G \lnot G ¬G (而这个 ¬ G 就和要回答问题的含义相同 \lnot G就和要回答问题的含义相同 ¬G就和要回答问题的含义相同)并不真正参与归结演绎,只是G中的变量在置换时会跟着置换, 所以为了避免在归结反演的过程中误用 ¬ G \lnot G ¬G就用特殊的符号将它代替掉如 Answer( x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn),其中 x i x_i xi ¬ G \lnot G ¬G中的变量。

在这里插入图片描述
特殊情况:

  1. 目标公式也可能会有更复杂的形式,当目标公示取反后的G中有多个合取时,这是将子句分开分别建立重言式寻求答案。
  2. 当目标公式中含有全程量词时,取反后G中就有存在量词需要用Skolmn函数,常量消除存在量词。

在这里插入图片描述
在这里插入图片描述

提升归结效率

为了快速产生空子句有一下策略:

  1. 宽度优先搜索
    会归结出许多无用的子句,既浪费时间又浪费空间,但是当问题有解时能找到最短归结路径,他是一种完备的归结策略。对大问题会组合爆炸,但对小问题是较好的归结策略。

  2. 支持集策略
    要求每次归结都要有目标公式的否定所得到的子句或它们的后裔,完备的归结策略,虽然会限制子句集元素的剧增,但是会增加空子句所在的深度

  3. 删除策略
    在归结过程中把子句集中无用的子句删除掉

    • 纯文字:如果子句集中不存在与其互补的文字可以将这整个子句删掉
      例如 S = { P ∨ Q ∨ R , ¬ Q ∨ R , Q , ¬ R } S = \{ P \lor Q \lor R, \lnot Q \lor R, Q, \lnot R\} S={PQR,¬QR,Q,¬R}其中P没有与其互补的可以将 P ∨ Q ∨ R P \lor Q \lor R PQR删掉
    • 包孕:对于子句C1和C2 如果C1经过置换是C2的子集,就说C1包孕于C2. 将C1删掉对整个子句集的不可满足性没有影响
    • 重言式:如果子句中含有重言式就可以删掉重言式。

    按照这个规则删除的是完备的。

  4. 单文字子句策略
    单文字就是子句中只有一个文字,要求每次参与归结至少有一个是单文字,单文字可以有效减少文字数,所以有较高的归结效率,但是这个策略是不完备的,当子句集是不可满足时,不一定可以归结出空子句。

  5. 线性输入策略
    要求每次参与归结至少应该有一个是初始子句集的子句,可以提高效率,但是是不完备的。

下一篇

未完待续

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

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

相关文章

单页应用的架构与设计:打造高效可扩展的 Web 应用(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

『运行心得』机柜断电事件的排除与解决

本文描述了一起机房机柜断电事件引发的故障排除和解决过程。 当办公楼机房发生断电后,经过排查发现可能是空气开关短路导致。尽管重新合上空气开关后设备恢复正常,但断电事件再次发生,电工怀疑空气开关老化导致电路故障,并将电源…

python 实现链表

链表基础知识 链表是在物理内存中不连续,数据通过链表中的指针来链接到下一个元素。 链表由一系列节点组成,节点在运行时动态生成,节点一般包括两个部分:存储数据的数据域,存储下一个节点的指针域 链表的常用操作&a…

使用Docker安装部署Swagger Editor并远程访问编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

基于pyltp的依存句法分析

代码是两年多前网上找的,能运行。先记在这里,以防以后用到 import os from pyltp import Segmentor, Postagger, Parser, NamedEntityRecognizer, SementicRoleLabeller # pip install pyltp -i https://pypi.tuna.tsinghua.edu.cn/simple 可以先下载好…

Shopee买家通系统,智能下单新体验

Shopee买家通系统带来了一场智能下单的革命,为用户提供了更便捷的购物体验。通过简单的准备工作,您即可使用该系统完成自动下单,省去繁琐步骤,轻松实现购物愉悦。 账号准备,注册无忧 首先,准备一个具备下单…

C++的编译链接

文章目录 1、前置条件2、预处理/预编译2、编译3、汇编5、链接 1、前置条件 # 操作系统版本 cat /proc/version Linux version 3.10.0-1160.95.1.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Jul 24 …

iOS 开发高效率工具包:10 大必备工具

​ 作为 iOS 开发人员,拥有合适的工具可以极大地提高您的工作效率和工作质量。无论您是刚刚起步还是已经开发 iOS 应用程序多年,以下是每个 iOS 开发人员都应该了解的 10 大必备工具。 让我们开始 Xcode Xcode 是用于 iOS 开发的官方 IDE(…

JavaScript中的for循环你用对了吗?

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-for循环 目录 循环结构 循环思想(三要素) 实现…

ElasticSearch知识体系详解

1.介绍 ElasticSearch是基于Lucene的开源搜索及分析引擎,使用Java语言开发的搜索引擎库类,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。 它可以被下面这样准确的形容: 一个分布式的实时文档存储&#xf…

CSS特效023:文字聚光灯效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

LoadRunner性能测试从零开始

目录 第1章 软件性能测试 1.1 什么是软件的性能 1.1.1 软件 1.1.2 软件性能的产生 1.1.3 功能与性能的关系 1.1.4 用户眼里的软件性能 1.1.5 软件人员眼里的软件性能 1.1.6 以空间换时间 1.1.7.以时间换空间 1.2 软件性能测试 1.2.1 性能测试在软…

EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-LSTM-Multihead-Attent…

解决错误代号0x80240438丢失的全面指南,分析0x80240438错误问题

在使用电脑的过程中,我们常常遇到一些复杂的问题,并期待找到最佳解决方案。其中,与“0x80240438”相关的问题是一个值得深入探讨的主题。今天就和大家探讨错误代码0x80240438的问题,都有什么解决办法有效的解决错误代码0x80240438…

Everything结合内网穿透搭建在线资料库并实现随时随地远程访问

Everythingcpolar搭建在线资料库,实现随时随地访问 文章目录 Everythingcpolar搭建在线资料库,实现随时随地访问前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前…

必须收藏!十五个设计灵感网站

设计师必备的灵感网站是每个设计师都应该关注的一部分。它们是设计师在设计过程中获得灵感和创造力的好地方。 在这里,我将介绍一些值得关注的灵感网站,涵盖不同类型的设计,包括UI设计、平面设计、网站设计等。我希望这些网站能给你带来一些…

【Android】使用intent.putExtra()方法在启动Activity时传递数据

食用方法 在Android中,你可以使用Intent对象来在启动Activity时传递数据。以下是一个示例,展示了如何在startActivity时传递数据到被启动的Activity: 在启动Activity的地方,创建一个Intent对象,并使用putExtra()方法…

【HTTP协议】简述HTTP协议的概念和特点

🎊专栏【网络编程】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🌺概念🌺特点🎄请求协议🎄响应协议…

Spinnaker 基于 jenkins 触发部署

jenkins job 触发部署 将 Jenkins 设置为 Spinnaker 中的持续集成 (CI) 系统可让您使用 Jenkins 触发管道、向管道添加 Jenkins 阶段或向管道添加脚本阶段。 前置要求: 已在kubernetes中部署spinnaker已准备可用的jenkins实例 启用 jenkins触发器 官方文档&…

洛谷 [AGC032B] Balanced Neighbors

分析 首先明确图的定义,图点集边集,其中点必须要有一个,图不可以是空图。(虽然和这道题没关系) 正着想不明白那就反着来(正难则反)。 假设目前所有边都是连上的,可以发现每个点的…