Graph Traversal mit Networkx (Python)
Ich spiele ein bisschen mit Networkx, um ein Abhängigkeitsdiagramm zu erstellen. Angenommen, ich habe dieses Diagramm, in dem jeder Buchstabe einen Server darstellt
>>> G = nx.Graph()
>>> G.add_edge("A","B")
>>> G.add_edge("A","H")
>>> G.add_edge("H","C")
>>> G.add_edge("B","C")
>>> G.add_edge("B","D")
A
/ \
H B
/ / \
C C D
Hier sehen wir also, dass wir vor dem Start von A H und B starten müssen und um H zu starten, müssen wir C starten und dann B starten müssen wir C und D starten
Durch ein bisschen Fummeln mit Networkx habe ich herausgefunden, dass ich das durch einen DFS-Traversal erreichen kann
print nx.dfs_successors(G,"A")
{A:[H,B], H:[C], B:[D] }
Aber ich habe ein Problem mit dieser Methode. Wie Sie sehen können, wenn es zwei gleiche Buchstaben im Baum gibt, hat Networkx nur einen davon in die endgültige Struktur eingefügt (was korrekt ist). Aber ich muss die vollständige Struktur haben. Wie kann ich Networkx zwingen, in die Struktur B einzufügen : [D, C] ??
Das möchte ich damit präzisieren
>>> nx.dfs_successors(G,"B")
{'B': ['C', 'D']}
Alles ist also "intern" korrekt, nur die dfs_successors zeigen es nicht so an, wie ich es mir wünsche.
Vielen Dank