轻松从3SAT简化为哈密顿路径问题


19

Sipser的书“计算理论简介”在第286页中从3SAT到汉密尔顿路径问题有所减少。

有更简单的减少方法吗?

简单来说,我的意思是减少(对于学生而言)更容易理解。

有没有使用线性变量的减少量?

Sipser的减少使用变量,其中是从句的数量,是变量的数量。换句话说,可能的是减少从尺寸吹到。有一个简单的约简,其中约简的输出大小与它的输入大小成线性关系吗?O(kn)knsO(s2)

如果不可能,是否有原因?这是否意味着复杂性/算法的未知结果?


只是要清楚一点:您是否需要将3SAT实例映射到HP实例的归约函数,还是要归纳“ NPC中的3SAT”的证据?到“ HP在NPC中?”?(我想第一个)。您能概述一下您所引用的证明吗?我们中有些人可能没有这本书。
拉斐尔

@Raphael,我希望从3SAT减少到HamPath。
卡夫

Sipser的减少是长期使用的小工具,我不想在此不再赘述。您可以将第一个问题解释为:有一个简单的归约吗?
卡夫

2
@Kaveh我发现这里的演讲幻灯片很容易理解cbcb.umd.edu/~carlk/bioinfo-lectures/sat.pdf他们将3sat减少到Ham。循环,火腿。骑车到火腿。路径。它们很方便地成为“从3sat减少到Hamilton路径的第一击”,但可能无法回答您的第二个问题。
2012年

1
@Kaveh:一个很好的问题,尤其是“这是否意味着复杂性/算法的未知结果?” 部分:-)。我不是专家,但是我想在cstheory上询问它。
2012年

Answers:


7

众所周知,从3SAT到有向哈密顿路径(dHAMPATH)的约简中的顶点数可以很容易地减少为,其中是变量数,是子句数,因此,构造的图实例与原始3SAT实例的大小呈线性关系。O(n+k)nk

在原始归约中,我们有开始顶点和结束顶点,子句的个顶点,变量的个长度为列表。这样的想法是,我们不必为每个变量构造长度为列表,我们可以根据变量在所有子句中出现的数量来构造列表。由于子句中变量出现的总数为,因此为。kn4k4k3kO(n+k)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.