Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Networkx : Convert multigraph into simple graph with weighted edges

I have a multigraph object and would like to convert it to a simple graph object with weighted edges. I have looked through the networkx documentation and can't seem to find a built in function to achieve this. I was just wondering if anyone knew of a built-in function in networkx that could achieve this goal. I looked at the to_directed() , to_undirected() functions but they don't serve my goal.

like image 865
anonuser0428 Avatar asked Mar 23 '13 18:03

anonuser0428


1 Answers

One very simple way of doing it is just to pass your multigraph as input to Graph.

import networkx as nx  G = nx.MultiGraph() G.add_nodes_from([1,2,3]) G.add_edges_from([(1, 2), (1, 2), (1, 3), (2, 3), (2, 3)])  G2 = nx.Graph(G) 

This will create an undirected graph of your multigraph where multiple edges are merged into single edges. However, if you have different attributes for the edges that get merged, I don't know if there's any way of determining which attribute is kept.

like image 114
Maehler Avatar answered Sep 28 '22 01:09

Maehler