这个NP难吗?我无法证明。


11

我有一个问题,我想这很困难,但是我无法证明。

这是一个层图,其中层0是最高层,层L是最低层。

层之间有一些有向边,边(A,B)表示节点A可以覆盖节点B。当A可以覆盖B时,从A到B的任何路径上的每个节点都可以覆盖B,B可以覆盖本身。

最后是一组节点S。我需要选择另一组节点ANS,并确保对于S中的每个节点q,在ANS中都存在一个节点p,并且p覆盖q。

对于每个节点,都有一个成本,我需要使ANS集的总成本最小。

这是一个NP难题吗?我认为是这样,但我无法证明这一点。

你可以帮帮我吗?

非常感谢你。


在图中的任何路径中,上层节点的成本都更高。

是的,NP确实确实很难。看一下退出类似最小集覆盖问题。en.wikipedia.org/wiki/Set_cover_problem

定向边缘是否有任何限制,例如边缘仅将较高层的节点连接到较低层的节点?我可以澄清一下,同一层中的节点之间没有边缘吗?
justhalf 2013年

@justhalf不,同一层中的节点之间没有边缘。谢谢您:)
qin.sun 2013年

Answers:


6

是的,这个问题绝对是NP难题。由于您需要证明,因此我将发布此答案。

如果您点击此链接http://en.wikipedia.org/wiki/Set_cover_problem,它说最小集覆盖问题的优化版本是NP-Hard。

链接中的问题:

给定一组元素{1,2,...,m}(称为Universe)和n个集合的集合S,它们的并集等于宇宙,则集合覆盖问题是确定S的最小子集,其并集等于宇宙。例如,考虑宇宙U = {1,2,3,4,5},集合S = {{1,2,3},{2,4},{3,4},{4, 5}}。显然,S的并集是U。但是,我们可以使用以下较少的集合来覆盖所有元素:{{1、2、3},{4、5}}

您可以将其与您的问题联系起来,如下所示:

S是覆盖输入集中至少一个节点的节点集。这可以通过在输入集的节点上沿边缘方向相反的方向执行DFS来找到。

现在,链接中描述的问题是您问题的特例,其中每个节点的成本相等,并且您只想最小化节点(集合)的数量。

因此,在一般情况下,您的问题甚至更难解决,因此是NP Hard。


我认为这对于OP的定义是正确的,但是他也从未指定您是否可以“覆盖”与该节点位于同一层的边缘的节点。如果是这样,那么问题似乎有些不同。否则,如果您只能通过更高层的边缘覆盖节点,那么它的确似乎等同于设置覆盖优化
roliu 2013年

@roliu是否可以覆盖同一层节点有什么关系。据我所知的问题是,我们有与A覆盖B.到B装置节点A之间的路径的有向图

嗯,我不确定。这很奇怪,因为我认为OP中的几乎所有信息实际上都不有用。这些层似乎无关紧要,传递性也是如此。我主要是在等待OP澄清他实际上是不同的意思。特别是,您可以证明它不仅至少与固定封面一样硬,而且实际上是等效的。因为OP问题中的任何最小覆盖都将仅包含其输入集中的相邻节点S。也许有负成本之类的东西……
roliu 2013年
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.