我的主要寻路是通过aStar算法的实现来完成的。只要有可用的路径,性能就会很好。
但是如果没有,那么可能会解析所有可用节点,直到你得出没有路径的结论。
我能想到的最糟糕的情况是相对靠近目标位置的很少的障碍物围绕着它。
到目前为止我提出的一些想法可能会提高整体表现:
查找并执行一个更便宜的寻路算法,该算法仅用于查明目标是否可达,如果是,则运行aStar以获取实际路径。
收集指定半径范围内目标节点周围的所有不可行走节点,并查看它们是否全部链接。如果是,则目标是“无法访问”且无法访问。 为startnode做等效操作不是必要的,因为收集节点的方法基本上就是这样做的。
所以我在这里要求的是,如果有人在那里有一些我可以添加到我的列表中的一些要点/想法,或者指向一个更便宜的寻路算法的方向,我可以利用它来确保有路径
答案 0 :(得分:1)
第一个想法,应该改进!
由于你的启发式,A *会花费大部分时间在目标周围, 因此在它周围创造了一个“访问过的”墙。
所以我认为你可以检查参观广场的继续“墙”, 如果你发现一个封闭的,连续的路径包含目标,而不是源,你没有什么可以进一步搜索。
第二个想法,不完整,但可能会减少“迷失”时间,
使用Bi-Directional A *,Source运行到Destination,但同时Destination找到它的Source。
看看https://qiao.github.io/PathFinding.js/visual/,了解它的行为方式。