Question 17
In the MIN-2-SAT problem, we are given a 2-CNF formula and an integer , and the objective is to decide whether there exists an assignment for that satisfies at most clauses.
Consider the following branching algorithm for the problem.
If there is a variable that occurs only positively in , observe that there exists an optimal assignment that sets it to . Similarly, if there is a variable that occurs only positively in , there exists an optimal assignment that sets it to . Once we perform this preprocessing, assuming that have clauses remaining, we have the following guarantee:
Every variable has at least one positive and one negated occurrence.
Now we can branch exhaustively on the settings of variables. The overall algorithm is summarized in the following pseudocode:
MINSAT(phi,k): if there is a variable x that occurs only as a positive literal: set x to 0 if there is a variable x that occurs only as a negated literal: set x to 1
if phi is empty: return YES if phi is not empty and k <= 0: return NO
Let x be any variable that occurs in phi. return MINSAT(phi|[x = TRUE],k-1) OR MINSAT(phi|[x = FALSE],k-1)Which of the following statements is true?
In both branches of the algorithm, at least one clause is falsified.
In both branches of the algorithm, at least one clause is satisfied.
In both branches of the algorithm, at least two clauses are falsified.
In both branches of the algorithm, at least two clauses are satisfied.