A multiset of literals, called a clause, is \emph{strongly satisfied} by an assignment if \emph{no} literal evaluates to false. Finding an assignment that maximises the number of strongly satisfied clauses is NP-hard. We present a simple algorithm that finds, given a multiset of clauses that admits an assignment that strongly satisfies $\rho$ of the clauses, an assignment in which at least $\rho$ of the clauses are \emph{weakly satisfied}, in the sense that an \emph{even} number of literals evaluate to false. In particular, this implies an efficient algorithm for finding an undirected cut of value $\rho$ in a graph $G$ given that a directed cut of value $\rho$ in $G$ is promised to exist. A similar argument also gives an efficient algorithm for finding an acyclic subgraph of $G$ with $\rho$ edges under the same promise.
翻译:若一个赋值使子句中\emph{无}文字取值为假,则称该赋值\emph{强满足}该文字多重集(称为子句)。寻找能最大化强满足子句数量的赋值是NP难问题。我们提出一种简单算法:给定一个子句多重集,若存在某个赋值能强满足其中$\rho$个子句,则该算法能找到一个赋值,使得其中至少有$\rho$个子句被\emph{弱满足},即子句中取值为假的文字数量为\emph{偶数}。特别地,这意味着存在一种高效算法:若已知图$G$中存在值为$\rho$的有向割,则该算法能在$G$中找到一个值至少为$\rho$的无向割。类似论证也给出一种高效算法:在相同前提下,能在$G$中找到包含$\rho$条边的无环子图。