我有一个像这样的多重字母-
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是平行的吗?
答案 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)。