Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost图有向图的无向遍历_C++_Boost_Graph - Fatal编程技术网

C++ Boost图有向图的无向遍历

C++ Boost图有向图的无向遍历,c++,boost,graph,C++,Boost,Graph,我使用的是Boost图。我的图的边有一个定向的含义。这就是我选择有向图的原因。但是,当我遍历图形时,我通常希望忽略方向。然而,我还没有找到一个解决方案来遍历我的图,例如使用内置的深度优先搜索 有没有一种解决方案不需要复制整个图形 如果没有:我不确定我的图表是否真的是由大自然引导的。也许我应该使用无向图,并添加一些“方向”属性?但我不知道该怎么做(简单地将源/目标顶点描述符附加到边上显然会在图形更改后中断)。有可能这样做吗?这有意义吗 谢谢我不知道Boost Graphs的实现,但我可以在您的案例

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

有没有一种解决方案不需要复制整个图形

如果没有:我不确定我的图表是否真的是由大自然引导的。也许我应该使用无向图,并添加一些“方向”属性?但我不知道该怎么做(简单地将源/目标顶点描述符附加到边上显然会在图形更改后中断)。有可能这样做吗?这有意义吗


谢谢

我不知道Boost Graphs的实现,但我可以在您的案例中看到两个选项

  • 如果你的图不大,你可以先创建一个无向图,计算你的“某物”,然后创建一个有向副本。这需要
    O(n)
    时间,不会影响整体性能
  • 使用“无向图”并添加有关边方向的一些信息,如指向源顶点的指针。此解决方案可能会使您的算法更复杂,但您将避免任何数据复制,并在大图上获得一些性能

  • 我不知道Boost Graphs的实现,但在您的案例中我可以看到两种选择

  • 如果你的图不大,你可以先创建一个无向图,计算你的“某物”,然后创建一个有向副本。这需要
    O(n)
    时间,不会影响整体性能
  • 使用“无向图”并添加有关边方向的一些信息,如指向源顶点的指针。此解决方案可能会使您的算法更复杂,但您将避免任何数据复制,并在大图上获得一些性能

  • 我不确定Boost Graphs的实现。你能描述一下你最初的任务吗?基本上我有代表3d空间位置的节点。现在,从节点A到节点B的边附加了一个从坐标系A到B的变换矩阵。我的算法对该图的节点位置进行了一些优化。作为一个预处理步骤,我需要使用BFS/DFS/whatever遍历图形并计算一些东西——我不关心方向。我不确定Boost Graphs的实现。你能描述一下你最初的任务吗?基本上我有代表3d空间位置的节点。现在,从节点A到节点B的边附加了一个从坐标系A到B的变换矩阵。我的算法对该图的节点位置进行了一些优化。作为一个预处理步骤,我需要使用BFS/DFS/无论如何遍历图形并计算一些东西-我不关心方向。谢谢你的回复。嗯,至于1)我基本上同意这是一个解决方案。然而,它有点丑陋,因为基本上所有的算法都可以在没有这个的情况下执行——信息就在那里。但我想,如果我找不到其他的办法,我会考虑这个解决方案。至于2)我在原来的问题中已经提出了这一点。。。但这里的问题是如何在boost graph中做到这一点,因为您不能在edge中使用源vertex_描述符(我知道您已经编写了一篇文章,您不熟悉BGL…这里可能有其他人的想法),谢谢您的回复。嗯,至于1)我基本上同意这是一个解决方案。然而,它有点丑陋,因为基本上所有的算法都可以在没有这个的情况下执行——信息就在那里。但我想,如果我找不到其他的办法,我会考虑这个解决方案。至于2)我在原来的问题中已经提出了这一点。。。但这里的问题是如何在boost graph中做到这一点,因为您不能在边缘中使用源顶点描述符(我知道您已经编写了一篇文章,您不熟悉BGL…也许其他人有这个想法)