Python 有向グラフとダイクストラ法
感覚を身に付けよう
# -*- coding: utf-8 -*-
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()#空の有向グラフのインスタンスの作成
G.add_node('a')#ノードの追加
G.add_node('b')
G.add_node('c')
G.add_node('d')
G.add_node('e')
G.add_node('f')
G.add_node('g')
G.add_edge('a','b',weight=3)#枝と重みの追加
G.add_edge('a','c',weight=4)
G.add_edge('a','d',weight=7)
G.add_edge('b','e',weight=6)
G.add_edge('c','e',weight=2)
G.add_edge('c','f',weight=5)
G.add_edge('d','b',weight=3)
G.add_edge('d','g',weight=3)
G.add_edge('e','f',weight=2)
#aからgへの最短路をダイクストラ法で求める
print(nx.dijkstra_path(G,'a','g'))
#aからほかのノードへの最短路をダイクストラ法のよって求める
print(nx.single_source_dijkstra_path(G,'a'))
nx.draw_circular(G,with_labels=True,node_color='y')
plt.show()