Python:如何查找图中两个节点之间是否存在路径?

Python:如何查找图中两个节点之间是否存在路径?,python,networkx,Python,Networkx,我正在使用Python的networkx包。 返回加权图G中从源到目标的最短路径 也可以将结果用作布尔值 >>> if nx.path.bidirectional_dijkstra(G,1,2): print "path exists" ... path exists >>> if nx.path.bidirectional_dijkstra(G,1,4): print "path exists" ... >>> 使用 或最短路

我正在使用Python的networkx包。

  • 返回加权图G中从源到目标的最短路径

也可以将结果用作布尔值

>>> if nx.path.bidirectional_dijkstra(G,1,2): print "path exists"
... 
path exists
>>> if nx.path.bidirectional_dijkstra(G,1,4): print "path exists"
... 
>>> 
使用


或最短路径方法之一。请远离返回所有节点之间路径的方法,但是如果您只有两个特定节点要测试连接性。

使用不相交的集合数据结构:

为图中的每个顶点创建一个单例集,然后为图中的每个边合并包含每对顶点的集

最后,如果两个顶点位于同一集中,则知道它们之间存在路径

请参见不相交集数据结构页面


这比使用路径查找算法更有效。

要检查图形中两个节点之间是否存在路径,请执行以下操作-

>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> nx.has_path(G,1,3)
True
>>> G.add_edge(4,5)
>>> nx.has_path(G,1,5)
False

有关更多信息,请参阅

如果两个给定节点之间不存在路径怎么办?那么函数返回什么?我不想找到最短路径。我只是想知道在两个给定的节点之间是否存在路径。嗯,我最近才为自己实现了它,它可以工作。:-)型号
networkx
没有属性
path
shortest_path(G, source, target)
>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> nx.has_path(G,1,3)
True
>>> G.add_edge(4,5)
>>> nx.has_path(G,1,5)
False