合取范式 (CNF)

合取范式 (CNF)合取范式(CNF)自动证明搜索我们已经讨论过逻辑可以在机器上执行有几种方法交互式定理证明自动证明搜索决策程序我们专注于最后两个命题逻辑的决策程序谓词逻辑的自动证明搜索SAT求解器有什么用?SAT-solver旨在表明

合取范式 (CNF)

自动证明搜索
我们已经讨论过逻辑可以在机器上执行
有几种方法
交互式定理证明
自动证明搜索
决策程序
我们专注于最后两个
命题逻辑的决策程序
谓词逻辑的自动证明搜索

SAT求解器有什么用?
SAT-solver 旨在表明可以满足公式。 为什么这很有用?
指定和构建产品
要指定产品所需的行为,您需要给出一组
约束:
在这种情况下,这件事应该发生。 . . ,
在那种情况下,那件事应该发生。 . . ,
要构建系统,您需要找到某种方法来满足所有约束
同时地。 SAT 求解器会告诉您这是否可能。

约束是什么样的?
在人行横道处:(红色 → 停止)∧(绿色 → 走)。 自从(α → β) ≡ (¬α ∨ β),这与
示例(人行横道)
(¬红色∨停止)∧(¬绿色∨走)
术语
文字(变量或其否定):¬red,stop,¬green,go
子句(文字的析取):(¬red ∨ stop),(¬green ∨ go)
CNF:将公式写成从句的连词

((this ∧ · · · ∧ this) → case1) ∧ ((that ∧ · · · ∧ that) → case2) ∧ . . .
is the same as
(¬(this ∧ · · · ∧ this) ∨ case1) ∧ (¬(that ∧ · · · ∧ that) ∨ case2) ∧ . . .
which is the same as
(¬this ∨ · · · ∨ ¬this ∨ case1) ∧ (¬that ∨ · · · ∨ ¬that ∨ case2) ∧ . . .
which is in CNF.

合取范式 (CNF)
提醒:术语
字面量:一个命题变量或一个的否定
条款:
文字的析取; 或者
公式⊥(表示“空析取”)
CNF-公式:
从句的连词; 或者
公式⊤(表示“空连词”)
解释为什么⊥和⊤代表“空”的析取和合取。

空析取是一个不包含文字的子句。
我们为空子句写□。
空连词是不包含从句的公式。
空子句集∅不包含子句。

特别案例
⊥ 既是子句又是公式。
当被视为从句时,⊥ 由空子句 □ 表示。
当被视为一个公式时,⊥ 由子句集 {□} 表示,因为它的 CNF 版本是唯一从句为空子句的连词。
不包含文字的子句集有两个公式不包含文字:
公式⊤由空子句集表示,∅
公式⊥由子句集{□}表示,其唯一的子句是空一个。

CNF算法
以命题公式为输入,返回 CNF 中的等效公式
我们提供声明性版本,它使用命题等价作为从左到右的重写规则
第 1 步:从输入公式中消除 ↔ 和 →:
φ ↔ ψ ≡ (φ → ψ) ∧ (ψ → φ)
φ → ψ ≡ ¬φ ∨ ψ
第 2 步:将否定推向文字:
¬¬φ ≡ φ
¬(φ ∧ ψ) ≡ ¬φ ∨ ¬ψ
¬(φ ∨ ψ) ≡ ¬φ ∧ ¬ψ
¬⊥ ≡ ⊤
¬⊤ ≡ ⊥
第 3 步:将析取分配到连词中
φ ∨ (ψ ∧ χ) ≡ (φ ∨ ψ) ∧ (φ ∨ χ)
(φ ∧ ψ) ∨ χ ≡ (φ ∨ χ) ∧ (ψ ∨ χ)
第 4 步:简化生成的 CNF 公式(可选)
将具有互补文字(例如 p 和 ¬p)的子句重写为 ⊤
重写 φ ∧ ⊤ ≡ φ, φ ∧ ⊥ ≡ ⊥, φ ∨ ⊤ ≡ ⊤, φ ∨ ⊥ ≡ φ
如果它的所有文字都已经出现在另一个子句 C 中,则删除子句 C’(包含)

今天的文章合取范式 (CNF)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/66278.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注