我有一个有向图如下:
我用networkx创建它并用ipycytoscape绘制它。该图是有向图。所有的边都有一个且只有一个方向。
问题是如何从特定节点找到该节点和节点一之间的所有路径。由于该图是有向的,因此只有所有边的方向都相同的路径才有效。在图中,6 和 1 之间有两条路径。乍一看,关于蓝色路径的事情是可能的,但在这种情况下,边缘 4-6 的方向与其他方向不同。
nodes = [1,2,3,4,5,6,7,8]
children = [[2],[3,4],[5,6],[6,7],[8],[],[8],[]]
G2 = nx.Graph()
G2.add_nodes_from(nodes)
for i,child in enumerate(children):
for c in child:
G2.add_edge(i+1, c)
cyto = CytoscapeWidget()
cyto.graph.add_graph_from_networkx(G2, directed=True)
cyto.set_layout(name='dagre', nodeSpacing=10, edgeLengthVal=10)
display(cyto)
我正在寻找的是网络方法,它给了我两个节点之间的路径列表。伪代码:
for node1 in G.nodes:
for node2 in G.nodes:
list_of_paths = networks_method???(node1,node2)
注意:图表是这样的,箭头(方向性)总是从较小的数字到较高的数字。2 可以是 3 的父级,但不能反过来。