Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sun Nov 16 19:29:27 2014
- @author: yukioshibata
- Descrição: Esse programa, a partir de uma matriz de adjacência em um arquivo .txt, utilizando o algoritmo de
- Dijkstra, plota na tela um caminho mínimo, caso o .
- Entradas: G - Grafo conexo
- w - Matriz de pesos do grafo G
- r - Lista de inteiros contendo as raízes
- Saída: Retorna a quantidade de caminhos mínimos referente às raízes fornecidas como parâmetros.
- """
- import numpy as np
- import networkx as nx
- import matplotlib.pyplot as plt
- import matplotlib.colors as colors
- from weight_print import plot_weighted_graph
- from dijkstra import Dijkstra as dijkstra
- a = np.loadtxt('matriz332.txt')
- #Obtém as coordenadas em que o peso é "não-nulo"
- rows, cols = np.where(a>0)
- #Cria lista de arestas
- edges = zip(rows.tolist(), cols.tolist())
- #Cria um grafo vazio usando NetworkX
- g = nx.Graph()
- #Insere arestas (cria vértices automaticamente)
- g.add_edges_from(edges)
- #Mostra vértices e arestas
- g.nodes()
- g.edges()
- #w = matriz de pesos
- w = [map(float, line.split()) for line in file('matriz332.txt') if line.strip()]
- #l = lista de pesos dos vértices e p = lista de predecessores de cada vértice
- l, p = dijkstra(g, a, [0, 3, 6, 15, 26]) #"""Vértices próximos"""
- print l
- print p
- #Cria um grafo vazio 'e' com todos os pesos das arestas
- e = nx.Graph()
- for v in range(len(l)):
- if l[v] != 0:
- e.add_edge(v, p[v], weight = l[v])
- plot_weighted_graph(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement