Networkx - нахождение параллельных ребер мультиДиграфа - PullRequest
1 голос
/ 10 марта 2019

У меня есть такой мультидиграф -

Import Networkx as nx

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

Есть ли какой-нибудь сетевой способ найти ребра 0-1 и 1-0 параллельно?

1 Ответ

0 голосов
/ 21 марта 2019

Нет встроенных 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).

...