将布尔电路转换为布尔公式的复杂性


10

给定变量上的布尔电路(仅使用NOT,AND和OR门),提取电路表示的布尔公式的最有效方法是什么?有没有针对这个问题的多时算法?ñCn


电路有什么类型的门?
列夫·雷津

1
扇入或扇出有哪些限制?如果只是单扇扇出,那么它就微不足道了:电路本身实质上就是公式的AST。
Mark Reitblatt 2011年

1
有限的扇入一般。但准确地说,可以说AND和OR具有扇入2。在文献中的许多参考文献中,我发现电路和公式可以互换使用,但是我想知道将电路转换为公式是否容易问题。
Nikhil

6
通常,您希望即使对于较小的电路,任何等效公式也可能具有指数大小。
Kristoffer Arnsfelt Hansen 2011年

4
多项式大小公式等效于电路。不知道Polysize电路()等效于。公式和电路通常在电路深度受限制时可互换使用。 P / p ø ý Ñ Ç 1NC1 P/polyNC1
卡夫

Answers:


8

如果我正确理解了您的问题,我想说您可以使用从CIRCUIT-SAT到SAT的标准简化:将每个门表示为新变量,然后以CNF形式表示整个电路,每个子句的形式为,其中v是新的变量,和用于栅式由下式给出φ,使用用于其它栅极的变量来表示的输入。这可以通过简单的遍历(线性时间,显然是最佳的)来完成。(vϕ)vϕ

例如,如果您有三个输入x 2x 3,并且AND门链接x 1x 2以及x 2x 3,而OR门链接它们的输出,则可以引入三个变量来表示gates- v 1v 2,和v 3,分别和重写公式v 1X 1X 2x1x2x3x1x2x2x3v1v2v3注意,输出变量是显式包含的。

(v1(x1x2))(v2(x2x3))(v3(v1v2))v3.

Cormen等人的算法简介。在有关NP完整性的章节中对此进行了详细说明。


CIRCUIT-SAT是否不使用扇出1门?
Mark Reitblatt 2011年

1
当然可以,但是据我所知,这不会影响缩小/转换。将每个输出表示为新变量的想法意味着您可以多次将每个输出用作输入(对应于任意大的扇出)。换句话说,此答案中给出的解决方案应适用于任意电路。
Magnus Lie Hetland

3
我的猜测是这不是要的。我认为所要的是在与电路相同的一组变量上建立一个公式。
Kristoffer Arnsfelt Hansen 2011年

1
嗯 是的,您可能是对的。在CIRCUI-SAT到CNF-SAT的情况下,引入新变量是有意义的,但在更一般的情况下不可行,我同意。
Magnus Lie Hetland

1
Cx1,x2,,xnϕ(x1,x2,,xn)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.