基于二维网格的寻路:最便宜的 way/algorithm 来找出一个位置是否可以到达
2d gridbased Pathfinding: Cheapest way/algorithm to find out if a location is reachable
我的主要寻路是通过 aStar 算法的实现完成的。只要有路径,性能就很好。
但是,如果有 none,则可能会解析所有可用节点,直到您得出没有路径的结论。
我能想到的最坏情况是在目标位置相对较近的地方几乎没有障碍物。
到目前为止我提出的一些想法可能会提高整体性能:
找到并执行一个更便宜的寻路算法n,即运行只是为了找出目标是否可达,如果是,运行aStar来获取实际路径。
收集目标节点周围指定半径内所有不可行走的节点,看它们是否全部相连。如果是,则目标为 'unreachable',无法达到。
不需要为起始节点做同样的事情,因为收集节点的明星方式本质上就是这样做的。
所以我在这里要问的是,如果有人那里有一些 bulletpoints/ideas 我可以添加到我的列表中,或者指出我可以使用的更便宜的寻路算法的方向确定是否有路径
第一个idea,应该细化!
由于您的启发式算法,A* 将大部分时间花在目标周围,
因此在它周围创造了一堵 "visited" 墙。
所以我认为您可以检查是否继续 "wall" 访问过的方块,
如果您找到包含目标但不包含源的闭合连续路径,则您无需进一步搜索。
第二个想法,未完成,但可能会减少"LOST"时间,
使用双向 A*,Source 运行 Destination,但同时 Destination 发现它是通往 Source 的路。
看看 https://qiao.github.io/PathFinding.js/visual/ 了解它的行为方式。
我的主要寻路是通过 aStar 算法的实现完成的。只要有路径,性能就很好。
但是,如果有 none,则可能会解析所有可用节点,直到您得出没有路径的结论。
我能想到的最坏情况是在目标位置相对较近的地方几乎没有障碍物。
到目前为止我提出的一些想法可能会提高整体性能:
找到并执行一个更便宜的寻路算法n,即运行只是为了找出目标是否可达,如果是,运行aStar来获取实际路径。
收集目标节点周围指定半径内所有不可行走的节点,看它们是否全部相连。如果是,则目标为 'unreachable',无法达到。 不需要为起始节点做同样的事情,因为收集节点的明星方式本质上就是这样做的。
所以我在这里要问的是,如果有人那里有一些 bulletpoints/ideas 我可以添加到我的列表中,或者指出我可以使用的更便宜的寻路算法的方向确定是否有路径
第一个idea,应该细化!
由于您的启发式算法,A* 将大部分时间花在目标周围, 因此在它周围创造了一堵 "visited" 墙。
所以我认为您可以检查是否继续 "wall" 访问过的方块, 如果您找到包含目标但不包含源的闭合连续路径,则您无需进一步搜索。
第二个想法,未完成,但可能会减少"LOST"时间,
使用双向 A*,Source 运行 Destination,但同时 Destination 发现它是通往 Source 的路。
看看 https://qiao.github.io/PathFinding.js/visual/ 了解它的行为方式。