昨日に引き続き、Boost.Graphの話題。
昨日はBoost.Graphを使うということで、Graphの頂点や辺に複数のプロパティを持たせることについて書いた。
今日はBoost.Graphのプロパティをファイルから読み込む方法。ここで、グラフを保持するファイルはGraphvizのdot形式とする。
dot形式は例えば
digraph G{ 1 [label="A"]; 2 [label="B"]; 1->2 [weight=10]; }
のような形とする。
このファイルをBoost.Graphの形式で読み込むには、 #include を利用して、
//グラフの宣言 Graph g; //グラフのプロパティ設定 boost::dynamic_properties dp(boost::ignore_other_properties); dp.property("id",boost::get(boost::vertex_id,g)); // 自前で定義したvertex_idの型 dp.property("label",boost::get(boost::vertex_name,g)); dp.property("weight",boost::get(boost::edge_weight,g)); //グラフを読み込み boost::read_graphviz(file, g, dp, "id");
これにより、グラフ中の1,2といった頂点の識別子をidとして、dotファイル中のlabelをlabelとして、weightをweightとして読み込むことができる。