我想为100000个文字实现2-SAT问题。所以会有200000个顶点。所以我坚持从每个顶点得到一个所有可到达顶点的数组,O(200000^2)
的空间复杂度是不可行的所以请为此提出一个解决方案。请详细说明有效实施2-SAT问题。
答案 0 :(得分:5)
来自wikipedia:
... 2 - 可满足性可以在多项式时间内求解。当观察到Aspvall, Plass & Tarjan (1979)时,当且仅当实例的每个变量属于蕴涵图的不同强连接组件而不是相同变量的否定时,才能解决2可满足性实例。由于强连通分量可以通过基于深度优先搜索的算法在线性时间内找到,因此相同的线性时间限制也适用于2可满足性。
我不会假装理解该段落的大部分内容,但似乎是可用于解决2-SAT问题的算法,并且在引用的内容中进行了描述文件( A linear-time algorithm for testing the truth of certain quantified boolean formulas )。它显然可以在线购买,价格约为20美元。我不确定这是否有用,但它确实存在!
答案 1 :(得分:1)
这整个线程有点搞砸了。是的,人们可以在线性时间内解决2-sat,但是没有 - 你无法解决这么多变量。解决2-sat的时间与暗示的数量呈线性关系,对于20万个变量可达到(200000 * 199999)/ 2,此外如果使用此解决方案,则需要大约相同的内存量。还有另一种解决方案(不使用速度较慢但不需要太多内存的强连接组件)。