7

由于我的图使用 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 参数?

谢谢

4

1 回答 1

12

解决方案是: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 将其可视化。

于 2011-12-18T23:33:56.403 回答