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
def test_kruskal_mst(self): edgelist=sorted(networkx.kruskal_mst(self.G)) assert_equal(edgelist,self.tree_edgelist)