【发布时间】:2010-12-29 08:12:26
【问题描述】:
我目前正在使用 A* 寻路算法来计算无限网格上的路径(使用 Gridworld 中的 UnboundedGrid,AP CS 案例研究,如果对任何人有帮助的话)。一切都很好,除了因为末端节点完全被墙包围而没有有效路径的情况。正如预期的那样,算法继续无限搜索,永远找不到结束节点。
一个可能的解决方案是在整个寻路区域周围放置不可见的(如用户看不到但算法看到的)墙,确保起始节点、结束节点和所有墙节点在这些墙内,有 2-3 个空间填充左右。比如:
_________________________________
| |
| S | |
| _____| _____ |
| | E | |
| |___| |
|_______________________________|
...想法是最终所有节点都将添加到封闭列表中,开放列表将变为空,此时我将知道不存在有效路径。
这似乎是解决问题的合理方法吗?有什么方法可能会出错吗?我知道另一种解决方案是同时从末端向后寻路,但这似乎可能很昂贵,特别是在末端节点没有那么紧密封闭的情况下。
【问题讨论】:
-
这是一个主观回答的问题。这样做是否正确?在某些情况下是这样,但在某些情况下不是。取决于项目的限制。一定要找路吗?如果是这样,您是否遇到上述情况,您是否应该通过说没有路径来解决它们?如果是,那么您需要某种限制。如果没有,那么,你不会:)。
-
用户可以随意安排环境,所以是的,我必须能够处理不良路径。双方同时进行的寻路似乎/我一直相信这可能是最好的方法,尽管我可能需要稍微重构我的代码才能让它工作。哦,好吧:D
标签: java algorithm path-finding a-star gridworld