Ich benutze networkX, um ein gerichtetes Diagramm zu erstellen, und ich muss das Sub-Diagramm finden, das einen speziellen Knoten enthält. Ich versuche node_connected_component, aber es kann nicht für gerichtete Graph implementiert werden, gibt es andere Funktion, die für gerichtete Graph in NetworkX implementieren kann?networkX node_connected_component nicht für den gerichteten Typ implementiert
Antwort
Als jemand erwähnte es hängt davon ab, was Sie eine verbundene Komponente in einem gerichteten Graphen nennen:
stark verbundene Komponenten:
Es ist ein gerichteter Pfad zwischen Knoten A zum Knoten B und ein andere von Knoten B zu Knoten A.
schwach verbundene Komponenten:
Es gibt einen gerichteten Weg vom Knoten A zum Knoten B, aber nicht notwendigerweise von dem Knoten B A.
zum Knoten Was Sie tun können:
def get_strongly_cc(G, node):
""" get storngly connected component of node"""
for cc in nx.strongly_connected_components(G):
if node in cc:
return cc
else:
return set()
def get_weakly_cc(G, node):
""" get weakly connected component of node"""
for cc in nx.weakly_connected_components(G):
if node in cc:
return cc
else:
return set()
weak_component = get_weakly_cc(G, node) # Weakly connected component of node in G
strong_component = get_strongly_cc(G, node) # Strongly connected component of node in G
Sie können definitiv besser als dies tun, indem Sie den Code für die stark und schwach verbundenen Komponenten https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/components/strongly_connected.html#strongly_connected_components und https : //networkx.github.io/documentation/stable/_modules/networkx/algorithms/components/weakly_connected.html#weakly_connected_components und führen Sie nur eine einzige Iteration dieser Algorithmen durch, beginnend mit dem ausgewählten Knoten. – Joel
Sie können definitiv besser als das in Bezug auf Effizienz, das Ergebnis wird das gleiche sein obwohl. Die Aufgabe, die Algorithmen, die Sie erwähnt haben, zu optimieren, lohnt sich für große Graphen, die letztendlich von OP-Anforderungen abhängen (die nicht spezifiziert wurden). Aber gute Beobachtung. – rodgdor
- 1. Sized ist nicht implementiert für den Typ Fn
- 2. Das Merkmal `A` ist nicht für den Typ` A` implementiert.
- 3. Trait 'X' nicht für den Typ implementiert ist 'X'
- 4. Subtraktion nicht für f32 implementiert?
- 5. ggmosaic Fehlermeldung: Standardmethode nicht für Typ ‚Liste‘ implementiert
- 6. "Interface nicht implementiert", wenn Typ Abgeleitet Returning
- 7. Get gerichteten Pfad in Python Netzwerkx
- 8. Visualize NetworkX vis.js
- 9. Ecto.Queryable nicht implementiert für [....]
- 10. Objekt nicht subscripable NetworkX
- 11. pySpark: java.lang.UnsupportedOperationException: Nicht implementiert Typ: StringType
- 12. Wie erstellt man einen gewichteten gerichteten Graphen aus der Kantenliste in Networkx
- 13. Größte stark verbundene Komponenten eines gerichteten Graphen
- 14. Wie richtig NetworkX Graphen
- 15. Erklärung für NetworkX-Code Python
- 16. NetworkX Matcher für Subgraph Isomorphie
- 17. Java-Methode nicht identifiziert für den Typ
- 18. foreach gilt nicht für den Typ org.json.jsonArray
- 19. .includes existiert nicht für den Typ 'string []'
- 20. Eigenschaft 'count' existiert nicht für den Typ '{'} '
- 21. Methode nicht definiert für den Typ?
- 22. Eigenschaft 'listName' existiert nicht für den Typ '{'} '
- 23. Ändern der Pfeilspitze in networkx
- 24. kann nicht Typ xy Initialisierung nicht implementiert ‚System.Collections.IEnumerable‘
- 25. NetworkX Animation, Ändern Graph nicht
- 26. Mehrere wo für den generischen Typ
- 27. Protokoll Ecto.Queryable nicht implementiert für
- 28. Rotationsmatrix zu gerichteten Richtungsvektor
- 29. getDispatcherType() für den Typ undefined HttpServletRequest
- 30. Generische Funktion für Typ, der gemeinsame Schnittstelle implementiert
Bedeutet die Tatsache, dass die Verbindungen Richtungs Einfluss Ihrer Entscheidung sind, ob Knoten verbunden sind? Speziell. würden Sie in der Grafik 'A-> B <-> C',' A' als Teil für die verbundene Komponente von 'C' betrachten? Wenn dies der Fall ist, können Sie einfach das Diagramm in ein ungerichtetes umwandeln und die verbundene Komponente in diesem Diagramm finden ("nx.to_undirected" IIRC). – Paul