如果我们有这样的图形:
重新发现节点是节点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]具有不同的源节点呢?
在这种情况下我该怎么办?
欢迎任何建议。
谢谢