Boost Graph有向图的无向遍历

时间:2011-04-18 13:25:14

标签: c++ boost graph

我正在使用Boost Graphs。我的图的边缘具有指向意义。这就是我选择有向图的原因。然而,当我遍历图表时,我通常想忽略方向。但是我没有找到一个解决方案来遍历我的图形,例如使用内置的深度优先搜索。

是否有解决方案,不涉及制作整个图表的副本?

如果没有:我不确定我的图表是否实际上是天生的。也许我应该使用无向图,并添加一些“方向”属性?我不知道如何做到这一点(简单地将源/目标vertex_descriptors附加到边缘会明显地在图形更改时中断)。有可能这样做吗?它有意义吗?

由于

1 个答案:

答案 0 :(得分:0)

我不知道Boost Graphs的实现,但我可以看到两种选择。

  1. 如果你的图表不大,那么你可以先创建一个非有向图,然后计算你的“东西”,然后创建一个定向副本。这应该花费O(n)时间,不会影响整体效果。
  2. 使用非有向图并向边添加有关方向的一些信息,例如指向源顶点的指针。此解决方案可能会使您的算法更复杂,但您将避免任何数据复制并在大图上获得一些性能。