2011-10-28 2 views
6

私のグラフは頂点にsetSを使用するので、私はグラフの頂点インデックスのプロパティマップを提供するか、write_graphvizを使用できるようにwrite_graphvizに明示的なvertex_id引数を与えなければなりません。 My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; NodeDataとEdgeDataは構造体です。 グラフにvertex_indexプロパティマップを提供する方法の非常に簡単な例を教えてください。またはwrite_graphvizに明示的なvertex_id引数を与える方法はありますか?私のグラフにvertex_indexプロパティを与える方法

おかげ

答えて

11

を解決したばかりにある:

typedef map<NodeID, size_t> IndexMap; 
IndexMap mapIndex; 
associative_property_map<IndexMap> propmapIndex(mapIndex); 

2)のコードでは、次のようtypedef Graph::vertex_descriptor NodeID;は、あなたが連想プロパティマップを定義する必要があるとして、 1)頂点記述子が定義されていると言います、インデックス次のようにすべての頂点:

int i=0; 
BGL_FORALL_VERTICES(v, g, Graph) 
{ 
    put(propmapIndex, v, i++); 
} 

3)あなたは今、次のようにグラフを視覚化/ドラウするgraphvizeを使用することができます:

ofstream myfile; 
myfile.open ("example.txt"); 
write_graphviz(myfile, g, default_writer(), default_writer(), default_writer(), propmapIndex); 
myfile.close(); 

グラフはexample.txtに記述されていますので、graphvizを使用して視覚化することができます。

関連する問題