我想使用Boost Graph Library创建一种算法,该算法在算法运行时“动态”扩展树形图上的分支。根据某些条件,该算法将以较低的成本探索分支。这些成本也应在树扩展时创建。我想避免在运行算法之前创建树的原因是为了避免不必要的顶点。每个顶点都有附加的数据,该数据需要大量的计算工作,而且要花费大量时间。
boost的所有示例和文档中都显示了给定的图,然后仅应用算法,但是在算法运行时,没有一个扩展图。
我发现了类似的问题here和答案:
在顶点内部添加顶点和边缘是一件危险的事情 算法访问者。这是因为这样做无效 该算法正在使用的迭代器。还有,算法 创建从顶点到颜色的映射(以标记 已处理了哪些顶点),并添加了顶点 会弄乱那个映射。你能记录下来吗 您要添加顶点并在BFS之后执行此操作吗?
我还考虑过在使用dijkstra_shortest_paths探索顶点时创建一个空树结构并更改附加到顶点的数据。但是,据我了解,在运行我没有的算法之前,我需要对边缘进行成本映射。发现新顶点时应调整权重,因为必须首先为该新发现的顶点分配一些成本或奖励。因此,还应该即时创建成本图。
有人尝试过在算法中添加顶点吗?还是有更好的方法来实现这种行为?也许BGL不是适合此的库?