【问题标题】:2-Satisfiability and Strongly connected components2-可满足性和强连通分量
【发布时间】:2015-01-22 03:48:09
【问题描述】:

我知道在有向图中应用 强连通分量,如果问题在多项式时间内可解决,我们可以检查 2-SAT 布尔可满足性

让我们假设问题是可以满足的。

问题:是否有通用算法来计算依赖 2-SAT 的解决方案?

【问题讨论】:

  • SAT-2 是否与 2-SAT 相同,即 CNF,每个子句都恰好有两个文字?
  • 没错,这是 2-SAT-CNF 形式。
  • 这与 Google 或 Code Jam 有什么关系?
  • svick,请阅读下面的 cmets。

标签: algorithm np-complete 2-satisfiability


【解决方案1】:

假设我正确理解了您的问题,是的,有一个通用算法可以通过使用可满足性问题的算法来找到解决方案(即令人满意的分配)。

假设我给变量 xi 赋值“true”(这样文字 xi 为真,而 ~xi 为false) 从原来的 2-CNF 中创建一个新的 2-CNF。如果我要对其运行可满足性(即使用带有 SCC 的东西来查找新的 CNF 是否可满足):

  1. 如果生成的 CNF 现在可满足,它会告诉您关于原始 CNF 中令人满意的分配的什么?
  2. 如果生成的 CNF仍然可满足,它会告诉您关于原始 CNF 中令人满意的分配的什么?

算法背后的想法是,如果您遇到案例 1,则将变量设为“假”,如果您遇到案例 2,则设为“真”,然后循环遍历每个变量(保留您对已分配的变量所做的分配)看着)。一旦你能回答我提出的问题,你就会理解它背后的概念。

【讨论】:

  • 感谢丹尼斯的回答。基本上,我一直在尝试将这个问题从 Google Jam 映射到 2-SAT,但有一些困难:code.google.com/codejam/contest/32016/dashboard#s=p1&a=1 也有一些限制,这是我第一次遇到这样的问题。
  • 是的,你链接的问题不是 2-SAT;你必须让每个人最多喜欢两种口味才能成为 2-SAT。我对这个问题的建议是,由于 N 有多大的限制,使所有东西都发芽或不发芽的组合不能超过 1024 种。客户不多,您可能只需遍历所有组合并找到一个有效的组合。
  • 绝对!这些限制让我很困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
相关资源
最近更新 更多