是否可以确定是否将始终在有向图中访问给定节点?

时间:2019-03-09 00:12:09

标签: python networkx graph-theory

我正在研究一个问题,我有一堆有向图,每个图都有一个源/接收器,并且边是概率连接(尽管90%的节点只有1个输入和1个输出)。每个图中都有一个关键节点,我想确定是否有任何方法可以绕过该节​​点遍历该图。理想情况下,我还要列举将绕过此节点的特定路径。我已经能够将示例图导入到NetworkX中,并且可以轻松地在图上运行某些功能,但是我不确定我要查找的是一个普通请求,我只是不知道在帮助文件中找不到正确的术语,或者如果这是我需要手工编写的代码。我也欢迎其他工具或方法。

1 个答案:

答案 0 :(得分:1)

首先,您可能需要一些量化关键节点的方法。为此,您可以使用某种程度的中心性,可能是案例中的中间性中心性。 Read more here.

接下来,如果您知道要在两个节点之间旅行的节点,则可以将其用作一种伪代码来帮助您到达那里。您还可以遍历所有可能通过的节点对,但这可能需要一段时间。

import NetworkX as nx
important_nodes=[]#list of important nodes    
paths = nx.all_simple_paths(G, source, target)
paths=list(paths)
#This is pseudocode, next four lines could be done with list comprehension
exclusive_paths=[]
for path in paths:
    if important_nodes not in path:
        exclusive_paths.append(path)

详细了解all_simple_paths here

列表理解可能看起来像这样

exclusive_paths=[x for x in paths if important_nodes not in x]