Quelle est la complexité de Median-SAT?

14

Soit une formule CNF avec n variables et m clauses. Soit t { 0 , 1 } n une affectation de variable et f φ ( t ) { 0 , , m } compte le nombre de clauses satisfaites par une affectation de variable à φ . Définissez ensuite Median-SAT comme le problème du calcul de la valeur médiane de f φ ( t ) sur tout t } n . Par exemple, si φφnmt{0,1}nfφ(t){0,,m}φfφ(t)t{0,1}nφest une tautologie alors la solution à Median-SAT sera car indépendamment de l'affectation chaque clause sera satisfaite. Cependant, dans le cas de ¯ S A T, la solution de Median-SAT pourrait être comprise entre 0 etmSAT¯0 .m1

Cette question s'est posée lorsque je réfléchissais à deux extensions naturelles de SAT, MAX-SAT et #SAT, et quelle serait la difficulté du problème résultant si elles étaient réunies. Pour MAX-SAT, nous devons trouver une affectation de variable particulière pour maximiser le nombre de variables satisfaites par . Pour #SAT, nous devons compter le nombre d'affectations qui satisfont tous les mφm clauses de . Cette variante se termine principalement comme une extension de #SAT (et en fait de #WSAT ), mais conserve une partie de la saveur de MAX-SAT en ce que nous comptons le nombre de clauses satisfaites plutôt que de simplement décider si elles sont toutes satisfaites ou ne pas.φ

Ce problème semble plus difficile que #SAT ou #WSAT. Pour chaque affectation de variable, #SAT décide du problème booléen de savoir si cette affectation satisfait ou non, alors que Median-SAT détermine "dans quelle mesure" φ est satisfait en termes de nombre de clauses auxquelles une affectation satisfait.φφ

Je me rends compte que ce problème est quelque peu arbitraire; le calcul du nombre moyen ou mode de clauses satisfaites par chaque affectation de variable semble capturer la même qualité. De nombreux autres problèmes le sont probablement aussi.

Ce problème a-t-il été étudié, peut-être sous un autre aspect? Est-ce difficile par rapport à #SAT? Il n'est pas clair pour moi a priori que Median-SAT soit même contenu dans FPSPACE, bien qu'il semble être contenu dans FEXPTIME.

Huck Bennett
la source
3
C'est dans : pour chaque k m on peut compter le nombre d'affectations satisfaisant au moins k clauses en utilisant un oracle #P. FP#PFPSPACEkmk
Colin McQuillan
1
@Colin en fait une réponse?
Suresh Venkat
Yes, this would make a good answer. Could you elaborate on how to query the #P oracle to check whether km clauses are satisfied? I couldn't figure out how to do it efficiently.
Huck Bennett
@Tsuyoshi, what is your definition of SAT? Are we allowing repetition of clauses? or literals and/or variables in a given clauses? Because if you do not allow repetition of literals and/or variables in a given clauses you cannot have a CNF formula that is a tautology..
Tayfun Pay
@Tayfun - J'ai en fait posé cette question, Tsuyoshi a aidé avec une modification mineure. Vous avez raison sur une tautologie dans une formule CNF nécessitant des littéraux répétés. Toute variante SAT serait intéressante, CNF-SAT sans répétition var dans les clauses (auquel cas les tautologies sont impossibles), ou peut-être CIRCUIT-SAT plus généralement. Je ne pense pas que ce choix change la saveur de la question.
Huck Bennett

Réponses:

13

Étant donné une instance de SAT, un entier et une affectation de variable, nous pouvons décider en temps polynomial si exactement k clauses sont satisfaites, simplement en comptant le nombre de clauses qui sont satisfaites et en testant si ce nombre est égal à k . Par conséquent, nous pouvons calculer le nombre total d'assignations de variables satisfaisant exactement k clauses en utilisant un oracle #P .kkkk

Ainsi, comme Max-SAT, Median-SAT peut être calculé en temps polynomial en utilisant un oracle Cela montre que le problème est en F P # PF P S P A C E .#PFP#PFPSPACE

Colin McQuillan
la source
You're absolutely right. This is a very clean argument, and I guess pretty obvious from the definition of #P. I learned something.
Huck Bennett
1
Let me elaborate on this a little more: Colin's saying that because we can determine in polynomial time whether a particular variable assignment satisfies k clauses that we can nondeterministically guess a variable assignment and then count how many accepting paths (i.e. accepting variable assignments) this query had using the #P oracle (by definition of #P). By iterating through k=1 to m, we can count the median number of clauses satisfied in FP#P.
Huck Bennett
3

This problem can be solved using lgm+1 invocations of an oracle for MAJSAT.

Let M(φ) denote the desired median value for φ. For fixed k, define the formula ψk so it is true for assignment x iff x satisfies at least k of the clauses of φ. Notice that given φ in CNF form and given k, you can easily construct ψk in CNF form in polynomial time.

Now suppose we had an oracle for MAJSAT. Querying it on the formula ψk would tell us whether the majority of assignments make the formula ψk true, or equivalently, whether M(φ)k. So, to learn M(φ), apply binary search (start with k=m/2, then increase or decrease k according to the results from the oracle). After lgm+1 iterations, the binary search reveals the value of M(φ). Each iteration requires one query to our oracle for MAJSAT.

D.W.
la source