【问题标题】:Statically allocating boost Graph静态分配提升图
【发布时间】:2013-11-08 11:33:05
【问题描述】:

亲爱的,这一切都很容易,我希望!

我有一个图表,我想静态分配它。我知道我会有N 节点,并且最多 每个节点都有K << N 边(例如,N = 1,000,000K = 3)。如果我不仅可以初始化具有一定数量节点的图,而且还可以初始化具有预定义数量的边,那将很方便。

你知道这是否可能吗?

如果不是,您会建议放弃邻接矩阵的邻接列表吗?我会有大量的边,这就是为什么静态分配会很棒。

干杯!

【问题讨论】:

    标签: c++ boost graph boost-graph adjacency-matrix


    【解决方案1】:

    Boost.Graph 有 Compressed Sparse Row Graph 可以做一些接近你想要的事情。它对内存非常友好。与其他 Boost 图一样,您可以将其声明为有向、无向等,并将属性与其元素相关联。

    需要注意的是,此图表是不可变的,这意味着您可以创建和填充它,但以后不能更新。 生成图形时,您需要准备好所有边。查看类似的 SO 主题here

    【讨论】:

      【解决方案2】:

      我没有测试它,但考虑到enum { A, B, C, D, E, F, N }; 意味着A = 0, B = 1, ..., N = 6Graph g(N); 似乎在编译时为N = 6 节点和N*N 边缘分配内存。 除非使用无向图,否则似乎不可能减少或限制边数。

      来源:http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_matrix.html

      【讨论】:

      • 有趣。不过,我肯定会使用有向图。
      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2020-12-05
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多