最大权重连接子图在有向无环图中

时间:2011-03-25 16:07:12

标签: algorithm theory graph-theory directed-acyclic-graphs

我正在研究涉及逻辑电路的研究问题(可以表示为DAG)。 DAG中的每个节点都有一个给定的权重,可以是负数。我的目标是找到一个连接的子图,使得节点权重之和最大。

给定边缘权重的最大权重连接子图问题显然是NP难的,但我希望的是有向非循环性质以及我处理节点权重而非边缘权重的事实使得问题更容易一些。有人能指出我如何开始攻击这个问题的正确方向吗?

由于

4 个答案:

答案 0 :(得分:2)

你提到的问题是NP难,请参阅: “在分子相互作用网络中发现监管和信号电路” 作者:Trey Ideker,Owen Ozier,Benno Schwikowski和Andrew F. Siegel, 生物信息学,第18卷,第233-240页,2002年

以及本文的补充资料: http://prosecco.ucsd.edu/ISMB2002/nph.pdf

答案 1 :(得分:0)

第一种方法,为每个边分配起始节点权重的倒数,并应用最短路径算法,如Bellman-Ford。 Dijkstra的算法不起作用,因为有些边可能是负的。

第二种方法,从每个叶节点开始,向每个边添加“标签”,以跟踪所涉及的所有节点的ID和总重量。不需要标记节点,因为保证每个节点仅对叶子上开始的每个链访问一次。例如,给定以下非循环有向图(从上到下指示),其中每个节点权重1:

                         A     G
                        / \   /
                       /   \ /
                      B     C
                      |    / \
                      D   E   F
                           \ /
                            H

A和B之间的边缘将标记为{{D,B,A},3},A和C之间的边将具有两个标记{{H,E,C,A},4}和{{ H,F,C,A},4}。

在此预处理之后,找到每个根节点的最大权重路径。信息位于其出站边缘的标签中。

答案 2 :(得分:0)

你提到连接的子图应该是“最大的”。为此贪婪地选择一个顶点并使其长大,直到你无法成长为止。这确保了最大化。但是,如果您的意思是“最大”,则问题可能是NP_Complete。另外,让我提醒您,节点加权图比边加权图更通用。为前者构建的每个算法适用于以后但反之亦然并非总是如此。这很容易看到。试试自己。 我理解这个问题,我觉得它在P中。如果这是正确的那么提示就是为DAG使用一些特殊的属性(你知道,因为你研究,这似乎是一个讲课问题)。对于一般图形,这可以简化为steiner树,因此它是NP-Cmplete(实际上也适用于平面图)。

答案 3 :(得分:0)

如果给定边缘权重的最大权重连接子图问题是NP难,我认为你的问题是NP难的。您可以将节点重量问题减少到边缘权重问题。

1)Lets say that your nodes have weights wn1,wn2,wn3,....wnN; where N is # of nodes.

2)Lets also say that the edges can be represented by e1,e2,e3,...eE; E- # of edges.

The weight of the edge ei:nj->nk can be defined as F(wnj,wnk), the function being
arbitrary. For simplicity we can assume wei=wnj+wnk.

Now if we assume that all node weights are independent and non-identical, then we
can say the same about the edge weights. As a DAG with non-identical edge weights
is NP hard, your problem too is. 

Having said that, I think you should proceed in the following way:
1)Look for similarity in node weights for your particular problem. If there are any,
try to look up the literature for similar problems. 

2)If they are hard to find, I suggest you translate your node weight problem to edge 
weight one, and see how the similarity in node weights translates to edge weights
problem and see what simplification can you apply to this problem, again from 
literature.

我希望这会有所帮助。