Complexité du calcul de la parité de la formule CNF à lecture double opposée (


11

Dans une formule CNF opposée en lecture deux, chaque variable apparaît deux fois, une fois positive et une fois négative.

Je m'intéresse au problème , qui consiste à calculer la parité du nombre d'assignations satisfaisantes d'une formule CNF opposée lue deux fois.Rtw-Opp-CNF

Je n'ai pas pu trouver de référence sur la complexité d'un tel problème. Le plus proche que j'ai pu trouver est que la version de comptage est # P -complète (voir la section 6.3 de cet article ).#Rtw-Opp-CNF#P

Merci d'avance pour votre aide.


Mise à jour du 10 avril 2016

  • Dans cet article , le problème est montré comme P- complet, cependant la formule produite par la réduction de 3 SAT n'est pas en CNF, et dès que vous essayez de le reconvertir en CNF, vous obtenez un formule à lire trois fois.Rtw-Opp-SATP3SAT
  • La version monotone est présentée comme P- complète dans cet article . Dans un tel article, Rtw-Opp-CNF est rapidement mentionné à la fin de la section 4: Valiant dit qu'il est dégénéré. Il n'est pas clair pour moi ce que signifie exactement être dégénéré, ni ce que cela implique en termes de dureté.Rtw-Mon-CNFPRtw-Opp-CNF

Mise à jour du 12 avril 2016

Il serait également très intéressant de savoir si quelqu'un a déjà étudié la complexité du problème . Étant donné une formule CNF opposée lue deux fois, un tel problème demande de calculer la différence entre le nombre d'assignations satisfaisantes ayant un nombre impair de variables définies sur vrai et le nombre d'assignations satisfaisantes ayant un nombre pair de variables définies sur vrai. Je n'ai trouvé aucune littérature à ce sujet.ΔRtw-Opp-CNF


Mise à jour du 29 mai 2016

Comme l'a souligné Emil Jeřábek dans son commentaire, il n'est pas vrai que Valiant ait déclaré que le problème est dégénéré. Il a seulement dit qu'une version plus restreinte de ce problème, Pl-Rtw-Opp-3CNF , est dégénérée. En attendant, je ne sais toujours pas ce que signifie exactement dégénéré, mais au moins maintenant, il semble clair que c'est synonyme de manque de puissance expressive.Rtw-Opp-CNFPl-Rtw-Opp-3CNF


⊕Rtw-Opp-CNF est aussi dur que ⊕Rtw-Mon-CNF. Vous pouvez créer le gadget de négation: (i0 v x0 v x1) (x1 v x2) (i1 v x0 v x2). Si i0 = i1, alors poids = 0 (en modulo 2). Sinon, poids = 1.

Je ne trouve pas de réduction de ⊕Rtw-Mon-CNF à ⊕Rtw-Opp-CNF, mais j'ai trouvé un algorithme polynomial pour résoudre ⊕Rtw-Opp-CNF. Donc ⊕Rtw-Opp-CNF est plus simple.

Je ne trouve aucune mention de ⊕Rtw-Opp-CNF dans le journal de Valiant. Il affirme que ⊕Pl-Rtw-Opp-3CNF est "dégénéré", mais cela implique plusieurs restrictions supplémentaires.
Emil Jeřábek

@ EmilJeřábek: Vous avez certainement raison. J'ai été induit en erreur par mon ignorance de la signification de "dégénéré" , et j'ai appliqué le même type de raisonnement qui est normalement appliqué en présence de résultats d'exhaustivité: si un certain problème est complet pour une classe, la suppression des restrictions de celui-ci préserve évidemment l'intégralité. Même si je ne sais toujours pas exactement ce que signifie "dégénéré" , il est au moins clair pour moi maintenant que ce terme est en quelque sorte synonyme de faiblesse (c'est-à-dire manque de pouvoir expressif), d'où le raisonnement susmentionné ne peut pas être appliqué. J'ai corrigé la question en conséquence.
Giorgio Camerani

1
@Maciej: Vraiment? Comment fonctionne votre algorithme polynomial?
Giorgio Camerani

Réponses:


3

Il s'avère que chaque formule opposée à lecture double a un nombre pair d'affectations satisfaisantes. En voici une belle preuve, même si l'on pourrait probablement éliminer la terminologie de la théorie des graphes.

Soit une formule CNF de lecture opposée. Sans perte de généralité, aucune clause ne contient à la fois une variable et sa négation.ϕ

Considérons le graphe dont l'ensemble de sommets est les clauses de ϕ , et pour chaque variable x , nous ajoutons un bord (non orienté) qui est incident sur les deux clauses contenant x . Notre hypothèse WLOG en ϕ dit que ce graphique n'a pas d'auto-boucles. De plus, pensez à étiqueter chaque arête par la variable qui la définit; de cette façon, nous pouvons distinguer les bords parallèles.Gϕxxϕ

Une orientation de est un graphe orienté dont les arêtes sont formées par l' affectation d' une direction à chaque bord dans G . Appelez une orientation de G admissible si chaque sommet de G a une arête sortante. Il est facile de voir que les affectations satisfaisant à φ sont en correspondance biunivoque avec les orientations admissibles de G .GGG GϕG

Maintenant, je prétends que le nombre d'orientations admissibles de est pair. L'argument est "par involution": je construis une carte Φ avec les propriétés suivantes:GΦ

  1. est totalement défini (chaque orientation admissible est cartographiée quelque part)Φ
  2. envoie les orientations admissibles aux orientations admissiblesΦ
  3. est une involution ( Φ Φ est l'identité)ΦΦΦ
  4. n'a pas de points fixesΦ

Une fois que ceux - ci sont établis, nous pouvons observer que les orbites de ont une taille 2 et partitionner les orientations admissibles de G . Il s'ensuit que le nombre d'orientations admissibles est pair.ΦG

Pour définir , soit G une orientation admissible, et envisagez de casser G en ses composants fortement connectés. Φ envoie alors G à l'orientation formée en inversant toutes les arêtes au sein des composants fortement connectés. Les propriétés sont ensuite directement vérifiées:ΦGGΦG

  1. Chaque graphe orienté peut être partitionné en composants fortement connectés.
  2. Considérons le "DAG des composants fortement connectés" dans ; appelons-le le graphique quotient. Notez que Φ ( G ) aura la même structure de quotient, car Φ n'affecte pas les arêtes entre les CCS, et les graphes fortement connectés restent fortement connectés lors de l'inversion de toutes leurs arêtes. De plus, si un SCC a plus d'un sommet, tous ses sommets constitutifs ont un bord entrant. Si un SCC n'a qu'un seul sommet et n'est pas une source dans le quotient, alors tous ses sommets constitutifs ont un bord entrant. Donc pour montrer Φ ( G )GΦ(G)ΦΦ(G)G
  3. Φ(G)G
  4. G

Belle observation! Une façon plus simple de voir cela (comme vous le dites, "éliminer la terminologie de la théorie des graphes") consiste à observer que si une affectation a satisfait F alors l'affectation a '(x) = 1-a (x) satisfait également F. Cela peut être montré facilement par induction sur le nombre de variables de F.
holf

Φ01203101200310

x¬xy¬z¬yz(1,1,1)(0,0,0)

ΦMxyxxyM

@Emil: Ah oui, tu as raison. Si je comprends bien votre suggestion, vous dites rompre l'orientation en composants fortement connectés et inverser les bords dans les composants. Je pense que cela fonctionne. Je mettrai à jour ma réponse en conséquence. Merci beaucoup!!
Andrew Morgan

0

Je ne sais pas si mon idée est compréhensible, je vais donc expliquer sur l'exemple de Giorgio:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Je dois d'abord changer cela sur le formulaire DNF:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Cela devrait donner la même réponse. Et peu importe si je calcule le nombre de solutions modulo 2 pour cela:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

ou pour cela:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)

Je choisis donc le second. J'ai des implicants:

i0(x1x2x3)

i1(¬x1¬x3x4)

i2(¬x4x5)

i3(¬x2¬x5¬x6)

Maintenant, je construis un système d'équations:

j0j1=1

j0j3=1

j0j1=1

j2j3=1

j3=1

x6


Si ma pensée est OK, alors la réponse est "non". Bien sûr, je suppose que la variable se produit une fois en positif et une fois en négation.
Maciej

x4j1j2j3j2j1j0

-1

Rtw-Opp-CNFf(X)g(X)f(X)g(X)f(X)g(X)

i0i1i2...in1

ijx0x1¬x2

2ki0i1i2...in1

i0i1i2...in1

ab=ab(ab)

1) a toutes les variables,

2) chaque variable se produit exactement une (si la variable se produit deux fois, alors nous avons positif et négatif dans un implicant, donc cela donnera 0).

x0i0x0i1

j0j1=1

j0j1i0i1i0j0j02l


Rtw-Opp-CNF

@AndrewMorgan Mais une formule avec une clause unique contenant toutes les variables exactement une fois ne serait pas une formule lue deux fois. La restriction est exactement deux fois, pas au plus deux fois.
Giorgio Camerani

x6(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)x6

(x1x2)(x1¯)(x2¯)(x1x2)(x1¯x2¯)(x1)(x1¯)(x2)(x2¯)

@AndrewMorgan OK, maintenant je vois. Cependant, considérez que dans la famille de cas que vous vouliez dire, le nombre d'affectations satisfaisantes semble rester égal. La question posée par Maciej dans son commentaire s'avère difficile.
Giorgio Camerani
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.