2016-04-13 4 views
0

Итак, у меня есть неориентированный мультиграфический граф (полученный из онтологии), я хочу удалить ребра, которые создают циклы (но не все ребра, составляющие мультиграфа должны остаются подключенными). Есть ли хороший способ сделать это с помощью пакета networkx?Удаление циклов из неориентированного мультиграфа с использованием Python networkx

ответ

0

Так что я закончил с

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 
+1

'T = nx.minimum_spanning_tree (G)' даст вам тот же результат - минимального остовного леса. – Aric

+0

Ах да, я действительно должен был прочитать документы. – JoelKuiper

Смежные вопросы