Ich versuche, einen zweiteiligen Graphen auf einer Person-to-Person Graph mit NetworkX zu konvertieren:Bipartite in NetworkX nicht richtig funktionieren, wenn das Umbenennen von Knoten
import networkx as nx
import ast
from networkx.algorithms import bipartite
x=(161,1),(589,2),(162,1),(163,1),(589,2)
BI = nx.Graph()
BI.add_edges_from(x)
bottom_nodes, top_nodes = bipartite.sets(BI)
GI = bipartite.projected_graph(BI, top_nodes)
GI.edges()
Das Ergebnis ist nicht korrekt:
>>> bottom_nodes
{161, 162, 163, 2}
>>> top_nodes
{1, 589}
Wenn ich x ändern sein:
x=(61,1),(58,2),(62,1),(63,1),(59,2)
Die I korrektes Ergebnis:
Also irgendwie wenn ich "niedrigere" Nummern für Knoten verwende, dann ist die Konvertierung korrekt, sonst nicht. Aber ich brauche größere Zahlen, da ich mehr als 100 Knoten habe.
Verwandte: http://math.stackexchange.com/questions/1102592/choosing-which-sets-of-nodes-are-top-and-bottom-in- bipartite-graph-represent –
Als Randnotiz können Sie 'BI = nx.Graph (x)' direkt schreiben. –