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