Sto giocando un po 'con Networkx per gestire un grafico delle dipendenze. Diciamo che ho questo grafico che ogni lettera rappresenta un serverAttraversamento grafico con Networkx (Python)
>>> 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
Così qui possiamo vedere che prima di iniziare un Abbiamo bisogno di iniziare H e B e per avviare H dobbiamo cominciare C e poi per avviare B wee necessità di avviare C e D
con giocherellare un po 'con NetworkX ho scoperto che posso ottenere che facendo un attraversamento DFS
print nx.dfs_successors(G,"A")
{A:[H,B], H:[C], B:[D] }
Ma ho un problema con questo metodo. Come puoi vedere quando ci sono due stesse lettere nell'albero, Networkx ha scelto di metterne solo uno nella struttura finale (che è corretta) Ma ho bisogno di avere la struttura completa Come posso forzare l'aggiunta di Networkx nella struttura B: [D, C] ??
voglio precisa che facendo
>>> nx.dfs_successors(G,"B")
{'B': ['C', 'D']}
Quindi tutto è "internamente" corretto, è solo le dfs_successors che visualizza non nel modo in cui voglio.
Grazie
Grazie per aver disegnato il grafico. Questo è quello che ho "pensato" che Networkx stava facendo nella mia schiena. Quindi la mia domanda sarebbe: come con Networkx creare un albero come nel mio esempio? in genere ciò che sarebbe ideale per me è quando creo il G.add_edge ("B", "C") un nuovo Nodo "C" è creato in modo da riutilizzare l'on collegato a H. – Johny19
Quindi è necessario chiamare il nuovo nodo qualcos'altro C1 e C2, forse. NetworkX non consente più nodi con la stessa etichetta, per quanto ne so. – brentlance
Ma ho bisogno che il nodo abbia lo stesso. come ho detto nel thread principale. il mio nodo è servername, non posso cambiare i nomi altrimenti non so quale sia quale ... Ma in realtà il grafico che Thorsten Kranz non è "sbagliato" è corretto, B dipende da "C AND D" . è solo che l'algoritmo "dfs_successors()" restituisce che B dipende solo da D e CHE è sbagliato Se il mio albero non è possibile con Networkx, sarebbe possibile con un'altra lib? grazie – Johny19