蕴涵图是一个有向图,其中每个节点都分配为true或false,任何边u -> v
都暗示if u is true then v is true
。
我知道一个简单的O(n^2)
算法可以在一般蕴涵图中找到一个赋值,而O(n)
算法用于某些特殊情况(比如 2-SAT 问题)。
所以我想知道是否有O(n)
算法找到任何蕴涵图的分配?
答案 0 :(得分:1)
使用Tarjan strongly connected components方法可以找到令人满意的蕴涵图分配,因为该方法适用于所有蕴涵图,而不仅仅是通过转换2-SAT实例生成的蕴涵图。该方法由少量图形转换步骤组成,所有这些步骤都需要与输入大小成线性的时间。因此整个算法需要O(n)运行时间。