在更新图上运行AStar

时间:2012-12-20 15:48:52

标签: python algorithm graph-algorithm path-finding a-star

我们正在开发一个涉及在大地图上运行最短路径算法的项目。

我们现在正在使用AStar与Air Distance heaurstic。

我们的项目涉及接收数据库中链接的更新。 目前,我们重新开始搜索每个链接更新或每隔预定义的时间间隔。 有没有办法更新AStar算法来更新搜索,而无需在收到的每次更新时重新启动搜索?是否有更适合此任务的算法?

披露:这是学生项目的一部分。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可能正在寻找一种路由算法(本质上处理不断变化的图形)。

实现它的一种方法是Distance Vector Routing ProtocolBellman Ford algorithm的分布式版本),其工作原理如下 1

  • 周期性地,每个顶点将其“距离矢量”发送给它 邻居[向量表示从发送顶点到每个其他顶点的成本'。
  • 它的邻居试图更新他们的路由表[通过哪个边缘最好移动到每个目标]
  • 对于您的情况,每个节点知道到达其邻居的最快方式是什么(如果图表未加权,则为1)并且它(顶点)将此数字添加到距离向量中的每个主菜,以便知道如何到达目的地需要花多少时间。每次修改到达时,相关节点都会调用协议的新迭代,直到它重新收敛。

但请注意,此算法不知情(但处理图表的情况很好,但有一些限制,仍有count to infinity problem


(1)算法的解释是基于我在this thread中提供的一些解释,并进行了一些修改。 (毕竟这是相同的建议算法。)