证明NP完整性

时间:2016-05-05 06:57:07

标签: algorithm reduction np np-complete np-hard

给定图形的任意两个顶点之间的m个最短路径。确定我们是否可以选择k个最短路径,使其联合覆盖所有边缘。

我确信减少必须来自封面,但我没有办法如何将其减少到这个问题。请帮帮我

2 个答案:

答案 0 :(得分:2)

提示:请看下面的图表。从A到B有很多不同的最短路径。你能用这样的图形和一组路径编码集合覆盖吗? (好吧,你可能需要稍微修改图表,但这是一般的想法)。

   o     o     o     o     o     o     o     o     o     o     o     o     o
  / \   / \   / \   / \   / \   / \   / \   / \   / \   / \   / \   / \   / \
A     o     o     o     o     o     o     o     o     o     o     o     o     B
  \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /   \ /
   o     o     o     o     o     o     o     o     o     o     o     o     o

答案 1 :(得分:1)

更新也不知道套装也是NP-complete。没有必要做任何事情来使原件适合精确的套装,所以我做的wlog假设是没有必要的。但我也意识到我的证据的基本思想是错误的:它表明当前问题是另一个问题的一个特例,这使得它更容易,而不是更难。完整而正确的答案由https://math.stackexchange.com/q/2047262 mjqxxxx给出。

让我们w.l.o.g。假设没有单个顶点属于多于1个路径(即路径对应于不同的顶点集)。

然后这个问题是完全封面问题(NP-complete)扩展到找到所有精确的封面而不是只有任何一个(和然后检查其中一个是否有确切的k元素 - 这种检查在一般情况下有点棘手)。 https://en.wikipedia.org/wiki/Exact_cover https://en.wikipedia.org/wiki/Set_cover_problem

X包含图的所有顶点,集合S包含与给定路径集对应的顶点集。