在一个项目中,我目前正在使用A *来寻找路径。我先放下我的经纪人。然后我将所有阻止程序放在任何可用的节点上。 代理需要能够访问任何开放节点。但是,可能会发生以下情况:
A = Agent
B = Node that's blocked
X = An open node that's impossible to reach
[A] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[B] [B] [ ] [ ] [ ]
[X] [B] [ ] [ ] [ ]
以下是可以回答的问题,以避免这种情况(回答任何一个可以解决这个问题):
我能想到的一种方法是放置所有阻挡物。然后我可以检查他们的邻居,看看是否有任何邻居节点是打开的,可以通过调用A *来遍历它们。这比我在问题1中解释可能的解决方案的方式至少要好一点。
答案 0 :(得分:0)
有几种方法可以生成迷宫。最简单的一种是随机深度优先搜索(从起始单元开始,以随机顺序访问未访问的邻居,直到到达出口。所有未访问的单元被认为是墙)。它具有所有必需的属性(由于终止条件,出口始终可达,所有开放单元都可以从起始单元到达,因为它始终只生成一个连接的组件)。您可以在此处详细了解它(以及其他一些迷宫生成算法):http://en.m.wikipedia.org/wiki/Maze_generation_algorithm。