Boost Graph(1) グラフの表示をしてみましょう!
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
さて、今日はBoost Graphについて解説したいと思います。
このグラフはあれですよ、ほら有向グラフとかのグラフで折れ線グラフとかではありません。
グラフを構築する
#include <fstream> #include <vector> #include <string> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/graphviz.hpp> using namespace std; typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, boost::no_property, boost::property<boost::edge_weight_t, int> > Graph; typedef pair<int, int> Edge; enum { Tokyo, Osaka, Yokohama, Fukuoka, Hokkaido, N }; const string name = "ABCDE"; int main() { //初期化 vector<Edge> edges; edges.push_back(make_pair(Tokyo,Osaka)); edges.push_back(make_pair(Tokyo, Yokohama)); edges.push_back(make_pair(Tokyo, Fukuoka)); edges.push_back(make_pair(Osaka, Hokkaido)); edges.push_back(make_pair(Yokohama, Hokkaido)); edges.push_back(make_pair(Fukuoka, Hokkaido)); //初期化 vector<int> weights; weights.push_back(3); weights.push_back(1); weights.push_back(4); weights.push_back(5); weights.push_back(2); weights.push_back(6); //エッジ、重み、重みの数を入れる。 Graph g(edges.begin(), edges.end(), weights.begin(), N); // graphvizとして出力 ofstream file("test.dot"); boost::write_graphviz(file, g, boost::make_label_writer(name.c_str())); }
graphvizを利用すると出力することができます。
他にも色々とアルゴリズムを実行できますが、之以降は長くなるので別記事にて…。