Boost图库中的最佳优先搜索

时间:2010-12-20 16:46:29

标签: c++ boost boost-graph

我开始使用boost图库。我需要一个最好的搜索,我可以使用astar_search实现零成本。 (如果我错了,请纠正我。)

但是,我想知道是否还有其他可能性呢?如果不考虑成本,算法应该稍微更高效。

编辑:很抱歉描述不清楚。我实际上正在实施潜在的字段搜索,所以我没有与边缘相关的任何成本/权重,而是需要进行最速下降搜索(可以克服局部最小值)。

感谢任何提示!

3 个答案:

答案 0 :(得分:1)

你绝对可以使用A *来解决这个问题;您需要 h(x)为0,而不是 g(x)。 A *基于F对节点进行评级,由

定义
F(n) = g(n) + h(n).

TotalCost = PathCost + Heuristic.
  

g(n)=路径成本,从初始状态到当前状态的距离

     

h(n)=启发式,从当前状态到结束状态的成本估计。

来自Wikipedia

  

Dijkstra的算法,另一种算法   最好的第一次搜索的例子   算法,可以视为特殊的   A *的情况,其中h(x)= 0表示所有x。

答案 1 :(得分:1)

如果您对C ++感到满意,我建议您尝试YAGSBPL

答案 2 :(得分:0)

根据Aphex的回答,您可能想要使用Dijkstra的算法;设置边权重的一种方法是将w(u, v)设置为potential(v) - potential(u),假设它是非负的。 Dijkstra的算法假设边缘权重为正,因此当您离开源节点时距离会增加。如果您正在寻找最小的潜力,请翻转减法的两侧;如果你有潜力上下都可能需要使用像贝尔曼 - 福特那样不是最好的东西。