在DAG中找到重新收敛扇出的来源

时间:2018-07-13 11:33:06

标签: algorithm depth-first-search directed-acyclic-graphs

如果我们有这样的图形:

c17_graph(b)

重新发现节点是节点10和11。
通过收敛节点,我的意思是该节点的父节点来自公共源节点。

在给定图中,节点10的父节点是节点7、8,它们都将节点6作为源节点(重新收敛的源)
对于节点11,源节点将是节点4。

我的问题是,如果我们知道DAG中哪些节点是收敛节点,那么我们如何找到其父节点的源节点?

对于我的图形结构,我使用geekforgeeks上的邻接列表表示形式

我已经尝试过:

 if(Node is reconvergent_node)
 for each parents of Node
      Do DFS(0, parents[i]) // depth first search from primary source till we reach the parent node 
  if the paths from 0 to parents[i] (which extracted from DFS) have common node mark that node as source node  

此算法正确吗?虽然我还没有得到正确的结果...

如果是正确的话,我认为仅限于最多两个父节点的重新收敛节点。
如果我们有reconvergent_node,它有五个父节点,以使parent [1,2]具有相同的源节点,而parent [3,4,5]具有不同的源节点呢? 在这种情况下我该怎么办?

欢迎任何建议。
谢谢

0 个答案:

没有答案