【发布时间】:2016-10-27 10:50:00
【问题描述】:
我的主要寻路是通过 aStar 算法的实现来完成的。只要有可用的路径,性能就很好。
但是,如果没有,则可能会解析所有可用节点,直到您得出没有路径的结论。
我能想到的最糟糕的情况是,在目标位置相对靠近目标位置周围的障碍物很少。
到目前为止,我提出的一些想法可能会提高整体性能:
查找并执行更便宜的寻路算法,该算法仅用于确定目标是否可达,如果是,则运行 aStar 以获取实际路径。
收集指定半径内目标节点周围所有不可行走的节点,并查看它们是否都已链接。如果是,则目标是“无法到达”且无法到达。 不需要对 startnode 做等效的操作,因为 aStars 收集节点的方式本质上就是这样做的。
所以我在这里要问的是,是否有人有一些要点/想法我可以添加到我的列表中,或者指出我可以使用的更便宜的寻路算法的方向,以确保有一条路
【问题讨论】:
-
您应该删除一些语言标签,只保留相关的标签。
-
“我的主要寻路是通过aStar算法的实现完成的。性能很棒......”它是用哪种语言编写的?
-
我是用 c# 写的,然后出于好奇也用 c++ 写
-
即使您找到了一种快速确定目标是否可到达的方法,但当目标可到达时,这对您的速度没有帮助,但只能通过难以置信的长(特别是: O(n)-length,其中 n 是顶点数)路径 - 例如,当源和目标位于长迷宫的两端时。
-
@j_random_hacker 是的,我知道。我相信使用双向是很棒的,因为它在大多数可达场景中根本不会影响执行时间,并且在许多不可达的情况下有积极的影响。
标签: algorithm 2d path-finding a-star