Example #1
0
 def test_kruskal_mst(self):
     edgelist = sorted(networkx.kruskal_mst(self.G))
     assert_equal(edgelist, self.tree_edgelist)
    # Cria um grafo vazio usando NetworkX
    g = nx.Graph()

    # Insere primeiro os vértices nomeados
    set_edges = set(rows.tolist())
    for i in range(0,len(set_edges)):
        g.add_node(i, name=labels.tolist()[i])

    # Insere arestas
    g.add_weighted_edges_from(edges_with_weight)
    # Linka os nomes com seus respectivos vertices

    # Executa o algoritmo de Prim para extrair a MST do grafo
    edge_list = nx.generate_edgelist(g,data=['weight'])
    mst = nx.kruskal_mst(g)

    # Plota resultados, é necessário que seja salvo na mão.
    # Opção de layout de grafo usado foi o Fruchterman & Reingold

    plt.figure(1, figsize=(15,15))		# Cria figura para desenhar grafo: 15 eh a dimensao da imagem
    #nx.draw_spring(mst, node_size=350, font_size=10, edge_width=1, alpha=0.5, arrows=False, with_labels=True)

    # Coordenadas mantém as coordenadas dos vértices do grafo
    coordinates = nx.spring_layout(mst)
    # Salva a primeira imagem
    nx.draw(mst, coordinates, node_size=350, font_size=10, edge_width=1, alpha=0.5, arrows=False, with_labels=True)
    plt.savefig(dataset+'.png')		# Outros formatos: pdf, svg, ...
    plt.show()

    # Função que ordena inversamente pelo peso, por causa da função lambda utilizada
Example #3
0
 def test_kruskal_mst(self):
     edgelist=sorted(networkx.kruskal_mst(self.G))
     assert_equal(edgelist,self.tree_edgelist)