北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 6523|回复: 8

请问求最短路径算法

[复制链接]
发表于 2013-10-6 21:11:06 | 显示全部楼层 |阅读模式
除了Dijkstra算法还有什么算法?

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-6 21:18:50 | 显示全部楼层
有人跟我说他用过a*
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-7 00:27:56 | 显示全部楼层
回复 1# pos


    还有一种寻路算法在这里http://pkuxkx.com//forum/viewthr ... highlight=%2Bptouch,但是我不确定这是不是最短路径
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-7 06:44:47 | 显示全部楼层
这个算法的思路与a*有点象,都是从起点和终点同时寻路,提高效率,但算法过程不同。没有细看代码,但从算法思路的描述上看可能不适用存在单向路径的情况,比如无量山这种。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-7 07:37:01 | 显示全部楼层
回复 4# alucar
    原来是酱紫。。受教了!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-7 08:30:02 | 显示全部楼层
本帖最后由 alucar 于 2013-10-7 10:44 AM 编辑

又仔细对比了一下,Dijkstra是一种无方向的遍历寻路,目前看适用性最好,但效率比较低;a*通过对比每个节点与终点的距离来实现偏向终点方向的寻路计算,但需要一张比较标准的地图来实现准确的距离比较,在有丐帮暗道这种捷径的地方需要进行特殊处理,不过如何处理俺目前还没有看明白,a*可以从起点和终点同步寻路以提高计算速度,但双向寻路不适用于存在单向路径的情况;ptouch的那个纯lua寻路机器人更类似于一个基于Dijkstra的双向寻路计算,在路径选择上会优先选取分支比较少的节点,但同样不适用于存在单向路径的情况。

当然以上仅是目前的理解,记得最短路径至少还有另外两到三种算法,尚未深究。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-10-7 09:33:22 | 显示全部楼层
npc跑的太快,最短路径意义不大了,次优(小范围的遍历)可能是方向
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-11-2 07:11:36 | 显示全部楼层
最短路径到目标点+以目标点为中心小范围广度遍历
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-11-2 07:15:22 | 显示全部楼层
对于目前情况 显然是area之间用路径快速到达 然后用寻路到目标 继而无脑遍历 这是智能的 但是未必会比暴力的依照固定路径遍历快
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-1 01:22 PM , Processed in 0.011987 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表