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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage