跳转到内容

计算机科学家逻辑/命题逻辑/Horn 子句

来自维基教科书,开放的书籍,开放的世界

Horn 子句

[编辑 | 编辑源代码]

在本节中,我们将介绍一类特殊的公式,它们对逻辑编程特别感兴趣。此外,事实证明,这些公式允许对可满足性进行有效的测试。

如果公式是 CNF 且每个析取最多包含一个正文字,则该公式为 Horn 公式。Horn 子句是最多包含一个正文字的子句。

         

         

               

       

其中 是重言式,而 是不可满足的公式。

用子句形式可以写成

在逻辑编程的语境下,这写成


  


         


对于 Horn 公式,存在一种有效的算法来测试公式  的可满足性。


判定 Horn 公式的可满足性


  1. 如果存在一种形式的子公式 ,则标记 的每个出现。
  2. 应用以下规则,直到没有规则适用为止
    • 如果 是一个子公式,并且 都已标记,而 未标记,则标记 的每个出现。
    • 如果 是一个子公式,并且 都已标记,则 **停止:不可满足**
  3. **停止:可满足** 赋值 当且仅当 已标记,是一个模型。

定理 6

[edit | edit source]

上述算法是正确的,并在 步之后停止,其中 是公式中原子数量。

作为直接结果,我们看到,如果一个 Horn 公式没有形式为 的子公式,则它是可满足的。

Horn 公式允许唯一的最小模型,即 的唯一最小模型,如果对于每个模型 和 F 中的每个原子 B 成立:如果 ,那么 。注意,这种唯一的最小模型性质不适用于非 Horn 公式:例如, 显然是非 Horn 的。 是一个最小模型,并且 也是,因此我们有两个最小模型。

问题 20(命题逻辑)

[编辑 | 编辑源代码]

为一个命题逻辑公式, 中出现的原子公式的子集。令 为将 中所有出现的原子公式 替换为 所得的公式。例如:。证明或反驳:存在一个 使得

  1. ,使得 等价于一个 Horn 公式 (即 )。

问题 21(命题逻辑)

[edit | edit source]

将标记算法应用于以下公式 F。

哪个是最小模型?




问题 22(命题逻辑)

[编辑 | 编辑源代码]

判断哪些 CNF 是 Horn 公式,并将它们转换为蕴含式的合取形式



华夏公益教科书