Networkx-查找MultiDigraph的平行边

时间:2019-03-10 05:46:53

标签: python graph networkx

我有一个像这样的多重字母-

Import Networkx as nx

G=nx.MultiDiGraph()
G.add_edge(0,1)
G.add_edge(1,0)
G.add_edge(1,3)

有任何networkx方式来找到边0-1和边1-0是平行的吗?

1 个答案:

答案 0 :(得分:0)

据我所知,没有内置networkx函数可以解决此问题。但是networkx将图节点和边存储在可迭代结构中,因此您可以像下面这样一个接一个地处理它们:

# For every node in graph
for node in G.nodes(): 
    # We look for adjacent nodes
    for adj_node in G[node]: 
        # If adjacent node has an edge to the first node
        # Or our graph have several edges from the first to the adjacent node
        if node in G[adj_node] or len(G[node][adj_node]) > 1: 
            # DO MAGIC!!
            print(node, adj_node)

我认为这是最networkx式的代码,可以解决您的问题。请注意,图越稀疏,它的工作速度就越快。在最坏的情况下(完整图),复杂度为O(n ^ 2)。最好的情况是-非常稀疏的图-O(n)。