忘れないようにメモっとく

機械学習とかプログラミングとか。

pythonのフレームワークNetworkXでグラフ理論

グラフ理論~点と線~


 数学の一分野でありながら、情報系の特にアルゴリズム分野で発展してきたグラフ理論
基本的な部分はとっても簡単で、とにかく点(node)と線(edge)について考える学問。
 実装に使う言語は、boostにgraphアルゴリズムがあるようなのでc++とも考えたけど、軽量言語でサクサク作りたかったし、ドキュメントも充実してそうなNetworkXというフレームワークを使うことに。

インストール

公式サイトはこちら
コマンドラインから、

sudo pip install networkx

以上。matplotlibとかpygraphvizはインストールしときましょう。pygraphvizはpip install pygraphvizでインストールできないようなので、こちらからダウンロードする。

チュートリアル

nodeとedgeの作成にnetworkx。作成したグラフの視覚化にmatplotlibを使う。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()

node(点)をつくる

G.add_node(1)
print G.nodes()

>>>[1]

edge()(線)をつくる

G.add_node(2)
G.add_edge(3, 4)
print G.nodes()
print G.edges()

>>>[2, 3, 4]
>>>[(3, 4)]

matplotlibで描写する

nx.draw(G)
plt.show()
#グラフの描写

pygraphvizを使えば、ムービーとかも作れます。