如何为我的图提供顶点索引属性

7
由于我的图形使用setS作为顶点,因此我必须为我的图形提供一个vertex_index属性映射,或者在write_graphviz中提供一个明确的vertex_id参数,才能使用write_graphviz。
我的图形定义如下:typedef adjacency_list Graph; 其中NodeData和EdgeData是结构体。 请问您能否给出一个非常简单的示例,说明如何为我的图形提供一个vertex_index属性映射?或者如何在write_graphviz中提供一个明确的vertex_id参数?
谢谢
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) 您现在可以使用Graphviz工具来绘制/可视化您的图表,如下所示:

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

图形将在example.txt中描述,您可以使用graphviz进行可视化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接