Networkx图形搜索:dfs_继任者与dfs_前置程序

2024-09-27 02:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的图结构(借用自this question):

G = networkx.DiGraph()
G.add_edges_from([('n', 'n1'), ('n', 'n2'), ('n', 'n3')])
G.add_edges_from([('n4', 'n41'), ('n1', 'n11'), ('n1', 'n12'), ('n1', 'n13')])
G.add_edges_from([('n2', 'n21'), ('n2', 'n22')])
G.add_edges_from([('n13', 'n131'), ('n22', 'n221')])

结果是:

^{pr2}$

我可以从节点n开始执行深度优先搜索,然后得到:

> dfs_successors(G, 'n')
{'n': ['n1', 'n2', 'n3'],
 'n1': ['n12', 'n13', 'n11'],
 'n13': ['n131'],
 'n131': ['n221'],
 'n2': ['n22', 'n21']}

但是,当我在节点n221上执行深度优先搜索时,没有任何结果:

> dfs_predecessors(G, 'n221')
{}

我希望输出是:

{'n221': ['n22', 'n2', 'n']}

这里出了什么问题,我如何才能达到预期的行为?在


Tags: fromadd节点edgesn2dfsn3n1
1条回答
网友
1楼 · 发布于 2024-09-27 02:23:21

函数的作用是:只提供直接前置函数。 所以如果你这么说(G的DFS来自node'n'并从'n22'回溯一个链接)

>>> print(networkx.dfs_predecessors(G, 'n')['n221'])
n22

你得到了你想要的一部分。在

要获取DFS树中从n221返回到根目录的路径:

^{pr2}$

相关问题 更多 >

    热门问题