【问题标题】:Boost Graph - using both directed and undirected edgesBoost Graph - 使用有向和无向边
【发布时间】:2011-09-23 00:51:36
【问题描述】:

构建同时包含有向和无向边的提升图的最佳策略是什么?

我想建模一个社交网络,其中节点代表人,边代表关系。有些关系是无向的 (BrotherOf),而另一些是有向的 (FatherOf)。

我需要类似 in_edges、out_edges 和 undirected_edges 迭代器。

编辑:

由于我需要处理非常大的图,我想要一种在内存消耗和算法执行速度方面都高效的方法。

【问题讨论】:

    标签: c++ boost graph


    【解决方案1】:

    将其表示为有向图。

    如果边的属性太多,您可以只存储指向数据的指针。

    【讨论】:

      【解决方案2】:

      您可以简单地将其表示为有向图。

      然后可以通过在两个方向上用有向边替换它来表示无向边。

      【讨论】:

      • 它会起作用,但它会占用更多内存(尤其是如果边缘有很多属性)。此外,我可以看到很多代码可能有点“脏”的情况。
      • 您的优势在于它很容易维护,但是所有传统算法都可以使用它。
      【解决方案3】:

      有一个相当简单的方法:兄弟关系的图表,父亲关系的另一个图表。或者一个用于所有无向关系,一个用于有向关系,其中可能包括两个方向的无向关系,以便标准图算法按预期工作。

      【讨论】:

      • 图遍历、节点删除等操作看起来不太好看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 2016-10-16
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多