/ / Usuwanie cykli z nieukierunkowanego wykresu wielorakiego za pomocą Python networkx - python, graph, networkx

Usuwanie cykli z nieukierunkowanego multi-grafu za pomocą Pythona networkx - python, graph, networkx

Mam więc nieukierunkowany wykres wielopłaszczyznowy (wyprowadzony zontologia), chcę usunąć krawędzie, które tworzą cykle (ale nie wszystkie krawędzie, składniki wykresu muszą pozostać połączone). Czy jest dobry sposób na zrobienie tego za pomocą pakietu networkx?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie może być wyjątkowego sposobu na wykonanie tego dla twojego wykresu. Ale może znalezienie spinającego drzewa rozwiąże twój problem? https://networkx.github.io/documentation/latest/reference/generated/networkx.algorithms.mst.minimum_spanning_tree.html


0 dla odpowiedzi nr 2

Więc skończyłem z

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