So habe ich eine ungerichtete Multi-Grafik (abgeleitet von einer Ontologie), ich möchte die Kanten, die Zyklen erstellen (aber nicht alle Kanten, müssen die Bestandteile der Multi-Graphen zu entfernen) bleiben verbunden). Gibt es eine gute Möglichkeit, dies mit dem Paket networkx zu tun?Entfernen von Zyklen aus einem ungerichteten Multi-Graphen mit Python-Netzwerkx
0
A
Antwort
1
Möglicherweise gibt es keine einzigartige Möglichkeit, dies für Ihr Diagramm zu tun. Aber vielleicht finden Sie einen aufspannenden Baum, um Ihr Problem zu lösen? https://networkx.github.io/documentation/latest/reference/generated/networkx.algorithms.mst.minimum_spanning_tree.html
0
So landete ich mit
def as_spanning_trees(G):
"""
For a given graph with multiple sub graphs, find the components
and draw a spanning tree.
Returns a new Graph with components as spanning trees (i.e. without cycles).
Parameters
---------
G: - networkx.Graph
"""
G2 = nx.Graph()
# We find the connected constituents of the graph as subgraphs
graphs = nx.connected_component_subgraphs(G, copy=False)
# For each of these graphs we extract the spanning tree, removing the cycles
for g in graphs:
T = nx.minimum_spanning_tree(g)
G2.add_edges_from(T.edges())
G2.add_nodes_from(T.nodes())
return G2
Verwandte Themen
- 1. Finden aller nicht überlappenden Zyklen in einem ungerichteten Graphen
- 2. größer als 2 in einem NetworkX Multigraphen
- 3. Algorithmen zum Identifizieren aller Zyklusbasen in einem ungerichteten Graphen
- 4. Machen Sie ungerichteten Graphen aus der Adjazenzliste
- 5. Aufzählen von Zyklen in einem Diagramm mit Tarjan Algorithmus
- 6. Access-Attribute eines Multigraphen in NetworkX
- 7. kombinieren Strings mit Zyklen
- 8. Eindeutiger Satz von ungerichteten Kanten
- 9. Threads, Synchronisation, Füllen und Entfernen von int aus einem Array
- 10. Entfernen von Symbol aus einem WPF-Fenster
- 11. aus einem Array von Struktur entfernen; s
- 12. Entfernen von Schaltflächen aus einem UIScrollView
- 13. Java Entfernen von Duplikaten aus einem Array?
- 14. Entfernen von Akzenten aus einem QString
- 15. Entfernen von Steuerelementen aus einem TGridPanel
- 16. Berechnung Zyklen/Byte von QueryPerformanceCounter()
- 17. Entfernen von Zeilen aus einem JSON
- 18. Entfernen von Panels aus einem Array
- 19. Entfernen von Blobs aus einem Binärbild
- 20. Entfernen von Zeilen aus einem WPF-Datagrid
- 21. von Vokalen aus einem String entfernen
- 22. Entfernen Duplikate aus einem Array von Objekten
- 23. Entfernen von Steuerelementen aus einem Formular C#
- 24. Ausreißer aus einem Graustufenbild entfernen
- 25. Directed to ungerichteten Graph
- 26. Entfernen Duplikate aus einem QList
- 27. Entfernen einer Liste von Spalten aus einem dat.frame mit Subset
- 28. Hinzufügen/Entfernen von Tabbed-Daten aus einem Formular mit JQuery
- 29. Ermitteln der Gesamtzahl der Zyklen und der Zykluslänge
- 30. Entfernen von Sonderzeichen aus einem String In einem Groovy Script
'T = nx.minimum_spanning_tree (G)' gibt Ihnen das gleiche Ergebnis - ein Minimum Spanning Wald. – Aric
Ah ja, ich hätte wirklich die Dokumente lesen sollen. – JoelKuiper