Boost C ++ - 订购大小与图表大小不同

时间:2017-01-11 22:34:21

标签: c++ boost graph

作为我的问题Boost graph segmentation fault的后续问题以及较早的问题Planar graph drawing C++,我在Boost中有一个平面图,它不是最大平面但至少有三条边。我在其上调用make_connectedmake_biconnected_planarmake_maximal_planar,以便它现在应该是最大平面。

当我在其上调用planar_canonical_ordering时,排序应该与原始图表的大小相同,但不适用于某些图表,这导致chrobak_payne_straight_line_drawing中的细分错误,因为排序是尺寸< 3。

我不明白为什么平面规范排序与图表本身的大小不同。当然,如第一个问题的答案中所述,可以将特定边缘添加到图表中以增加其排序大小,但这不是一般情况。如果图形是最大平面的,为什么它的排序(ordering.size())与图形(num_vertices(g))本身的大小不同?

1 个答案:

答案 0 :(得分:0)

虽然在Boost graph segmentation fault中我调用了使图形最大平面所需的所有函数,但我没有将顶点存储在图形中。

为此,请使用:

edge_count = 0;
for(boost::tie(ei, ei_end) = edges(g); ei != ei_end; ++ei)
    put(e_index, *ei, edge_count++);

可以找到一个完整的示例,以单个连接图开始,然后嵌入它here