Boost图对有向图的无向遍历

Boost Graph undirected traversal of directed graph

本文关键字:遍历 有向图 Boost      更新时间:2023-10-16

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

是否有一种不需要复制整个图的解决方案?

如果没有:我不确定我的图是否实际上是由自然引导的。也许我应该使用无向图,并添加一些"方向"属性?我不确定如何做到这一点(简单地将源/目标vertex_descriptors附加到边缘,一旦图形发生变化,显然会中断)。有可能这样做吗?这有意义吗?

谢谢

我不知道Boost Graphs的实现,但我可以在您的情况下看到两个选项。

  1. 如果你的图不是很大,那么你可以先创建一个非有向图,计算你的"东西",然后创建一个有向拷贝。这应该占用O(n)时间,不会影响整体性能。
  2. 使用无向图,并添加一些关于边缘方向的信息,如指向源顶点的指针。这个解决方案可能会让你的算法变得更复杂,但你会避免任何数据复制,并在大图形上获得一些性能。