【问题标题】:Boost C++ - Ordering size not the same as graph sizeBoost C++ - 排序大小与图形大小不同
【发布时间】:2017-01-11 22:34:21
【问题描述】:

作为对我的问题Boost graph segmentation fault 和旧问题Planar graph drawing C++ 的跟进,我在 Boost 中有一个平面图,它不是最大平面,但它至少有三个边。我在上面调用make_connected、make_biconnected_planar 和make_maximal_planar,这样它现在应该是最大平面了。

当我在其上调用planar_canonical_ordering 时,排序应该与原始图的大小相同,但它不适用于某些图,这会导致chrobak_payne_straight_line_drawing 中的分段错误,因为排序的大小

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

【问题讨论】:

    标签: c++ boost graph


    【解决方案1】:

    尽管在 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 找到从单连通图开始然后嵌入它的完整示例。

    【讨论】:

      猜你喜欢
      • 2012-10-22
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2022-12-07
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多