最长路径
对于E中的每个e,我们有一个图G =(V,E),长度为l(e)的Z ^(+),正整数K和V中的两个节点s,t。
问题是G中是否有一条简单的路径,从s到t的长度至少为K?
你能否给我一个暗示我们如何证明问题属于NP? 另外,为了表明后者是NP完全的,我们怎样才能将问题减少到另一个?
修改:
因此,为了表明问题属于NP,我们是否必须绘制一个简单的并计算边长的总和?
我们是否举例说明以下内容?
我们看到从节点s到节点t的路径长度等于l((s,w))+ l((w,t))= 3 + 12 = 15,所以没有G中从s到t的简单路径至少为K.
或者它足以满足以下要求吗?
“给定一条简单的路径,我们可以很容易地检查它的长度是否至少为K(通过简单地计算其中所有边的长度之和)。因此,它在NP中。”
编辑2 :你还能解释一下为什么我们通过将所有边的长度设置为等于1来设置K = | V |来在多项式时间内将汉密尔顿路径问题减少到这个问题。 - 1?
编辑3 :假设我们遇到问题A和问题B,并且已知B是NP完全的。如果我们想表明A也是NP完全的,那么我们是否以这种方式更改A的数据,以便我们遇到与问题B相同的问题,因此我们推断出A也是NP完全的?或者我明白错了?
编辑4 :另外我们如何证明如果图形是有向的和非循环的,那么问题可以及时解决O(| V | + | E |)?
编辑5 :汉密尔顿路径的所有边长都等于1,对吧?如果我们有V个顶点,那么最长路径的长度是V-1,是吗?但在我们的问题中,边缘的长度不是特定的,K也不是固定的数字。因此,如果我们将所有边的长度设置为等于1并设置K = | V | - 1,难道我们不把问题减少到汉密尔顿路径问题吗?或者我明白了吗?
答案 0 :(得分:1)
为了证明NP中存在问题,我们需要证明它可以在多项式时间内验证。给定一个证书(在这种情况下是一个简单的路径),我们可以很容易地检查它的长度是否至少为K(通过简单地计算其中所有边的长度之和)。因此,它在NP。
从A减少到B意味着:给定A的实例,创建B的实例(更准确地说,我们对这里的多项式时间减少感兴趣)并解决它以解决原始问题。那么如何在多项式时间内将哈密顿路径问题减少到这个问题呢?它非常简单:我们可以将所有边的长度设置为1并设置K = |V| - 1
。然后我们应该尝试图(s, t), s != t
中的所有顶点对,如果此问题的解决方案对于至少一对返回true,则返回true。否则,我们应该返回false(检查我们在图形中有一个长度为|V| - 1
的路径,其中所有边的单位长度与通过其定义检查哈密顿路径存在完全相同)。