我对加权图上的最优算法问题有疑问。我获得了一个带有权重的边缘列表,一个带有保存点的列表,一个起始节点和结束节点以及一个步骤的最大距离。 输出应该是一个保存点列表,可以从起始节点和结束节点一步到位。
我从保存点列表的每个点想到了某种dijkstra算法。
我不确定这是不是一个好主意,因为如果我有很多保存点,我会多次计算很多路径。欢迎任何想法/帮助!
非常感谢你!
答案 0 :(得分:0)
你必须有一个重量不能为负的条件,否则问题变得非常棘手。否则它只是广泛的第一次搜索,标记每个访问节点的距离。因此,您不需要重新访问节点,而之前的移动已经以较低的成本访问过它。
您保留所有活动节点的优先级队列,因此每次都要检查最低成本节点。事实上,优先级队列是最难实现的。如果检查我的二进制图像库https://github.com/MalcolmMcLean/binaryimagelibrary的A *算法,则可以获取优先级队列。迷宫上的A *与图形上的最短路径非常相似,但是您没有启发式,因为您必须具有确切的最短路径,而不是每个瓦片的4/8边缘,您具有任意数量的连接的节点