转换为 XOR 合取形式

Posted

技术标签:

【中文标题】转换为 XOR 合取形式【英文标题】:Converting to XOR conjunctive form 【发布时间】:2013-07-16 04:17:19 【问题描述】:

异或合取形式定义如下:(a XOR b) and (c XOR d)...等

SAT-XCF 是由可满足的先例(XOR 合取)表达式定义的语言。

我想知道 SAT-XCF 是 NP 难吗?那么,是否有一个函数能够将任何可满足的布尔表达式转换为可满足的 XOR 合取形式?

非常感谢您的贡献。

【问题讨论】:

【参考方案1】:

我认为即使对于 2 个变量,您最后一个问题的答案也是“否”。具体来说,(a OR b) 不能表示为任意数量的 XOR 表达式的 AND。最多 2 个变量中几乎没有不同的 XOR 表达式:false、true、a、b、!a、!b、(a XOR b) 和 (a XOR !b)。如果你与其中任何一个:false、true、a、b、!a、!b、(a XOR b)、(a XOR !b),你将设置为 false 的 4 种可能组合之一 (a,乙)。这只留下了与 (a OR b) 不同的表达式 true。

【讨论】:

【参考方案2】:

是的,您可以,并且有一个有效的算法。你遵循正常的代数规则模2。关于前面的评论:

A|B=A^B^AB

这种形式称为代数范式 https://en.wikipedia.org/wiki/Algebraic_normal_form

【讨论】:

以上是关于转换为 XOR 合取形式的主要内容,如果未能解决你的问题,请参考以下文章

数理逻辑命题逻辑的等值演算与推理演算 ( 命题逻辑 | 等值演算 | 主合取 ( 析取 ) 范式 | 推理演算 ) ★★

将命题转化为主析取命范式和主合取范式

利用真值表法求取主析取范式以及主合取范式的实现(C++)

决策树

Python(离散数学实验)求不超过4个命题变元任意公式的主合取范式主析取范式真值表和成真赋值

离散数学课程重点