如何为我的图形提供vertex_index属性

时间:2011-10-28 22:11:01

标签: c++ boost indexing vertex boost-graph

由于我的图形使用setS作为顶点,我必须为我的图形提供vertex_index属性映射,或者为write_graphviz提供一个显式的vertex_id参数,以便能够使用write_graphviz。 My graph is defined as: typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> Graph; NodeData和EdgeData是结构的地方。 你能给我一个如何为我的图提供vertex_index属性映射的一个非常简单的例子吗?或者如何给write_graphviz一个明确的vertex_id参数?

由于

1 个答案:

答案 0 :(得分:11)

解决方案只是: 1)假设顶点描述符定义为typedef Graph::vertex_descriptor NodeID;,那么您需要定义一个关联属性映射,如下所示:

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

2)在代码中,将所有顶点索引如下:

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对其进行可视化。