【问题标题】:how provide a vertex_index property for my graph如何为我的图提供 vertex_index 属性
【发布时间】:2011-12-17 15:17:15
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2013-12-10
      • 2021-09-26
      相关资源
      最近更新 更多