我目前正在使用A*寻路算法计算无限网格上的路径(在Gridworld中使用无限网格,AP-CS案例研究,如果这对任何人都有帮助的话)除了端节点完全被墙包围外,没有有效路径存在的情况下,一切都很好。如所料,该算法继续无限搜索,从未找到结束节点。
一个可能的解决方案是在整个寻路区域周围放置不可见的墙(如中所示,用户看不到,但算法看到),确保开始节点、结束节点和所有墙节点都在这些墙内,大约填充2-3个空格类似于:
_________________________________
| |
| S | |
| _____| _____ |
| | E | |
| |___| |
|_______________________________|
这个想法是,最终所有的节点都将被添加到关闭列表中,OpenLIST将变成空的,在那一点上,我将知道没有有效路径存在。
这似乎是解决问题的合理办法吗?有没有什么方法可能会出错?我知道另一种解决方案是同时从末端向后进行pathfind,但这似乎可能很昂贵,特别是在末端节点没有那么紧密封闭的情况下。
最佳答案
你不知道终点在哪里吗如果你这样做了,在做你的算法之前检查一下它是否被包围了。
关于java - 在我的寻路区域周围放置边界是否可以接受?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4552480/