我知道MAX2SAT一般是NP-TEMPLED,但我想知道是否已知某些限制案件是在P.肯定是语言

$ l_k:={\ phi \,| \,\ phi \,\ text {是2sat的一个实例,它具有满足k个条款的分配。} $

可以在 $ o(n ^ k)$ 中通过蛮力搜索来解决,因为对于每种语言 $ k $ 是固定的。但是,我想知道指定了一小部分的情况。任何级分都会产生np难的问题吗?具体而言,我想知道满足2SAT实例的至少一半条款的情况。

从3SAT到MAX2SAT的Regraphe I Seaks从3SAT中的每个条款构造10个条款,使得在这十个中,当满足原始的3SAT子句时,恰好7满足于最多6当未满足原始条款时满足。因此,在这种减少中, $ 7/10 $ 工作,但 $ 1/2 $ 不会因为不满意的真相而3SAT实例的分配仍然可以产生2SAT的实例,该实例具有满足超过一半的条款。我想到了另一个建筑或向2SAT的实例添加额外的条款,但到目前为止我一直没有成功。

有帮助吗?

解决方案

您可以始终满足至少一半的条款:对于每个变量 $ x $ ,查找包含 $ x $ 以及包含 $ \ lnot x $ 的子句的数量。选择满足最多条款的人。删除包含 $ x $ $ \ lnot x $ 的子句。重复其他变量。

因为每个 $ x $ 我们满足至少一半的删除条款,我们满足整体条款的一半。

另一方面,它也很紧:让 $ \ Alpha> \ FRAC 12 $ 是我们可以给出答案的条款的分数。让 $ \ beta> \ frac 12 $ 是我们可以在特定子句中满足的最大分数。然后我们可以添加条款,以便 $ \ beta $ (对于新子句)成为 $ \ alpha $ < / span>:

  • 如果 $ \ beta <\ alpha $ ,那么我们可以添加clauses $(x_i \ lor \ lnot x_i) $ ,直到 $ \ beta> \ alpha $ (因为这些条款始终为真, $ \ beta $ 增加)。
  • 如果 $ \ beta> \ alpha $ ,我们可以添加clauses $(x_i)$ $(\ lnot x_i)$ ,直到 $ \ beta <\ alpha $ (因为恰好是条款的一半是真的, $ \ beta $ 减少)。

我没有检查,但是得到 $ o(\ frac 1m)$ 差异(即查找确切的条款数量),我认为它足够了要添加 $ o(m)$ 条款。换句话说,如果我们可以解决一些 $ \ alpha> \ frac 12 $ ,我们可以检查任何 $ \ β$ 是否<跨度类=“数学容器”> $ \ beta $ 条款的分数可以满足,因此我们可以在多项式时间中解决MAX2SAT。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top