グラフ・ネットワークアルゴリズム勉強会 by IMACEL Academy で読んでいるテキスト 浅野孝夫 「グラフ/ネットワークアルゴリズムの基礎」(近代科学社)の理解のために書いたコードです。
これを機にJuliaも覚えようと思ってJuliaで書き始め、書き方が分からなくなっていったんPythonに戻り、またJuliaにというようなことをしていたので、PythonとJuliaのコードの内容は一致しておらず、Pythonの方は多くの機能が実装されていません。なるべくJuliaの方をテキストを読み進めるのとともに更新するようにしたいと思っています。
2018/02/09の時点で、
chapter1.jl
- 有向グラフ(DirectedGraph)と無向グラフ(UndirectedGraph)の型定義
- エッジリストからのオブジェクトの生成
- 有向グラフと無向グラフの相互の変換
chapter2.jl
- 再帰深さ優先探索によるラベル付け
- スタックに基づく深さ優先探索によるラベル付け(preorder/postorder)
- キューに基づく幅優先探索によるラベル付け
- 有効/無向グラフの閉路検出
- 有効/無向グラフの始点と終点を結ぶ最短経路探索
- 無向グラフの連結成分分解
plot_test1.jl
- グラフのGRライブラリによる表示
まで実装してあります。
- chpater2.jlの末尾のtest2()、test2_1()内のコメントをテキストとともに参照してください。
- bfs!()、dfs_recursive!()、dfs_stack!()の各関数はオプション引数で"debug=true"を指定すると(うるさいくらい)アルゴリズムの実行手順が表示されます。