【问题标题】:3SAT solving though DNF simplification?3SAT 通过 DNF 简化解决?
【发布时间】:2015-09-13 14:00:02
【问题描述】:

我想到了一种通过以下方法解决 3SAT 问题的算法:

1) 取cnf方程中至少有一个共同变量的所有子句。找到所有这样的组合并将它们放入名为“Intersection”的列表中。 “Intersection”列表现在包含交叉子句组。

2) 接下来,我们将特定“Intersection”组中的所有子句转换为 DNF。由于至少有一个变量是共同的,我认为它不会在指数时间内出现。

3) 接下来,我们将获得的所有 DNF 转换为单个 DNF,因为它们在原始方程中都用 AND 门分隔。

4) 如果得到的 DNF 中有一个子句,则方程是可满足的,否则方程是不可满足的。这是因为不相交的子句(没有任何共同变量的子句)不会影响整个方程,最后如果我们将那些与获得的 DNF 进行“与”,它只会将变量相乘并添加到现有的条款(如果有的话)。

我的问题是:

这个算法的运行时间是多少,这是否证明了与 P=NP 相关的任何事情,因为我认为这个算法非常有效。我之前的算法一直被别人失望,所以这次请花点时间分析一下算法,因为这是我的努力。

【问题讨论】:

  • 我找到了解决 P=NP 问题的您的问题的答案:它太小,无法放入这个marg.. err.. 评论框.. 42. 再见@Clay Millennium Awards Ceremony ..

标签: algorithm runtime time-complexity sat p-np


【解决方案1】:

我正是使用这个算法来制作扫雷求解器。

在实践中,当变量分散开时(就像在典型的扫雷关卡中一样),它的运行速度非常快。

但是,对于一个难的 3-SAT 问题,在第 2 步和第 3 步中展开到单个 DNF 最终会花费指数时间,因为每次我们组合子句时,潜在术语的数量都会随着条款。

因此,总而言之,对于某些 SAT 问题,这是一种非常有用的方法,但在最坏情况下的性能呈指数级增长,因此 P=NP 无话可说。

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2012-04-30
    • 2021-09-25
    相关资源
    最近更新 更多