请问求最短路径算法
除了Dijkstra算法还有什么算法?北大侠客行MUD,中国最好的MUD 有人跟我说他用过a* 回复 1# pos
还有一种寻路算法在这里http://pkuxkx.com//forum/viewthread.php?tid=18856&highlight=%2Bptouch,但是我不确定这是不是最短路径 这个算法的思路与a*有点象,都是从起点和终点同时寻路,提高效率,但算法过程不同。没有细看代码,但从算法思路的描述上看可能不适用存在单向路径的情况,比如无量山这种。 回复 4# alucar
原来是酱紫。。受教了! 本帖最后由 alucar 于 2013-10-7 10:44 AM 编辑
又仔细对比了一下,Dijkstra是一种无方向的遍历寻路,目前看适用性最好,但效率比较低;a*通过对比每个节点与终点的距离来实现偏向终点方向的寻路计算,但需要一张比较标准的地图来实现准确的距离比较,在有丐帮暗道这种捷径的地方需要进行特殊处理,不过如何处理俺目前还没有看明白,a*可以从起点和终点同步寻路以提高计算速度,但双向寻路不适用于存在单向路径的情况;ptouch的那个纯lua寻路机器人更类似于一个基于Dijkstra的双向寻路计算,在路径选择上会优先选取分支比较少的节点,但同样不适用于存在单向路径的情况。
当然以上仅是目前的理解,记得最短路径至少还有另外两到三种算法,尚未深究。 npc跑的太快,最短路径意义不大了,次优(小范围的遍历)可能是方向 最短路径到目标点+以目标点为中心小范围广度遍历 对于目前情况 显然是area之间用路径快速到达 然后用寻路到目标 继而无脑遍历 这是智能的 但是未必会比暴力的依照固定路径遍历快
页:
[1]