假设我在网络X中有一个有向图G,那么:
对于特定节点N1,我想找到它所在树的根节点(其祖先的度数为0)。在网络x中有一种简单的方法吗?
我看了看: Getting the root (head) of a DiGraph in networkx (Python) 但是我的图中有多个根节点。只有一个根节点恰好与N1位于同一个树中。
答案 0 :(得分:4)
编辑2017年11月请注意,这是在networkx 2.0发布之前编写的。有migration guide用于将1.x代码更新为2.0代码(特别是使其兼容)
这是一个简单的递归算法。它假定最多只有一个父母。如果某些东西没有父母,那么它就是根。否则,它返回其父节点的根。
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
如果图是一个有向非循环图,它仍会找到一个根,虽然它可能不是唯一的根,甚至是给定节点的唯一根祖先。
答案 1 :(得分:1)
我冒昧地更新了@ Joel的剧本。他原来的帖子对我不起作用。
{'larry': 0, 'tom': 0, 'dick': 0}
这是一个测试:
def find_root(G,child):
parent = list(G.predecessors(child))
if len(parent) == 0:
print(f"found root: {child}")
return child
else:
return find_root(G, parent[0])