Complexité de la conversion d'un circuit booléen en formule booléenne

10

Étant donné un circuit booléen sur variables (qui utilise uniquement les portes NON, ET et OU), quelle est la manière la plus efficace d'extraire la formule booléenne représentée par le circuit? Existe-t-il un algorithme de polytime pour ce problème?nCn

Nikhil
la source
quel type de portes le circuit a-t-il?
Lev Reyzin
1
Quelles restrictions sur le fan-in ou le fan-out? S'il ne s'agit que d'un simple fan-out, c'est trivial: le circuit lui-même est essentiellement un AST pour la formule.
Mark Reitblatt
1
Fan-in borné pour être général. Mais pour être précis, disons que ET et OU ont un fan-in 2. Dans de nombreuses références dans la littérature, je trouve qu'un circuit et des formules sont utilisés de manière interchangeable, mais je veux savoir si la conversion d'un circuit en une formule est facile problème.
Nikhil
6
En général, vous vous attendez à ce que toute formule équivalente puisse être de taille exponentielle même pour un petit circuit.
Kristoffer Arnsfelt Hansen
4
Les formules de taille polynomiale sont équivalentes à NC1 circuits C 1 . Les circuits de polysize ( P/poly ) ne sont pas connus pour être équivalents à NC1 . Les formules et les circuits sont utilisés de manière interchangeable généralement lorsque la profondeur du circuit est limitée.
Kaveh

Réponses:

8

Si je comprends bien votre question, je dirais que vous pouvez utiliser la réduction standard de CIRCUIT-SAT à SAT: Représentez chaque porte comme une nouvelle variable, puis représentez l'ensemble du circuit sous forme CNF, chaque clause ayant la forme , où v est la nouvelle variable, et la formule de la porte est donnée par ϕ , en utilisant les variables pour d'autres portes pour représenter les entrées. Cela peut se faire par une simple traversée (en temps linéaire, ce qui est clairement optimal).(vϕ)vϕ

Par exemple, si vous avez trois entrées, , x 2 et x 3 , avec des portes ET reliant x 1 et x 2 ainsi que x 2 et x 3 , et une porte OU reliant leurs sorties, vous pouvez introduire trois variables pour représenter les portes - v 1 , v 2 et v 3 , respectivement - et réécrire la formule en ( v 1( x 1x 2 ) ) X1X2X3X1X2X2X3v1v2v3Notez que la variable de sortie est incluse explicitement.

(v1(X1X2))(v2(X2X3))(v3(v1v2))v3.

Introduction aux algorithmes par Cormen et al. explique cela en détail, dans le chapitre sur NP-Completeness.

Magnus Lie Hetland
la source
CIRCUIT-SAT n'utilise-t-il pas de portes de dérivation 1?
Mark Reitblatt
1
Bien sûr, mais pour autant que je puisse voir, cela n'affecte pas la réduction / transformation. L'idée de représenter chaque sortie comme une nouvelle variable signifie que vous pouvez réutiliser chaque sortie comme entrée plusieurs fois (correspondant à un fan-out arbitrairement grand). En d'autres termes, la solution donnée dans cette réponse devrait fonctionner pour des circuits arbitraires.
Magnus Lie Hetland
3
Je suppose que ce n'est pas ce qui est demandé. Je pense que ce que l'on veut, c'est faire une formule sur le même ensemble de variables que le circuit.
Kristoffer Arnsfelt Hansen
1
Hm. Oui, vous avez probablement raison. L'introduction des nouvelles variables est logique dans le cas CIRCUIT-SAT à CNF-SAT, mais pas dans un cadre plus général - je suis d'accord.
Magnus Lie Hetland
1
CX1,X2,,Xnϕ(X1,X2,,Xn)