【发布时间】:2010-06-02 09:50:14
【问题描述】:
我正在尝试在我正在为连接节点图开发的游戏中获得更快的寻路机制。节点分为“网络”和“路由器”两种类型。
在这张图片中,蓝色圆圈代表路由器,灰色矩形代表网络。
每个网络都有一个它所连接的路由器的列表,反之亦然。路由器不能直接连接到其他路由器,网络也不能直接连接到其他网络。
网络列出了他们连接到的路由器
路由器也是如此
我需要一种算法,该算法将针对每个可能的源和目标网络(不包括源和目标是同一网络的路径)绘制出一条路径,以跨越的网络数量来衡量。我现在有一个,但是它非常慢,大约需要两秒钟来绘制路径,这对于所有连接的玩家来说都非常明显。
当前的算法是深度优先的蛮力搜索(它在大约一个小时内被拼凑在一起,只是为了让路径缓存正常工作),它按照遍历的顺序返回一个网络数组,这就解释了为什么会这样减缓。有没有更高效的算法?
附带说明,虽然这些示例图有四个网络,但实际图中有 55 个网络和大约 20 个路由器在使用中。不可能的路径也可能出现,并且在任何时候网络/路由器图形拓扑都可能发生变化,需要重建路径缓存。
哪种方法/算法可能会为此类图表提供最佳结果?
【问题讨论】:
-
如果需要,我可以在提出问题时提供用于构建缓存的代码
标签: theory path-finding