在一个项目中,我目前使用A *来查找路径。我第一次放下我的经纪人。然后,我将所有拦截器放在任何空闲的节点上。 代理需要能够到达任何打开的节点。但是,下列情况可能发生:如何保证所有开放节点都可以穿越
A = Agent
B = Node that's blocked
X = An open node that's impossible to reach
[A] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[B] [B] [ ] [ ] [ ]
[X] [B] [ ] [ ] [ ]
下面是一些可能为了避免这种情况需要回答的问题(回答任何一个可以解决这个问题):
- 我如何检测没有通向X的路径,然后以最好的方式修复它(或者至少是一种可以接受的方式,不需要对每个节点调用A *,然后随机选择一个不同的节点将其中一个阻止器放到最后所有的节点都可以穿越)?
- 放置阻滞剂时,如何确保它们不会使任何开放节点无法触及?
我能想到的一种方法是放置所有的阻滞剂。然后我可以检查它们的邻居,看看有没有邻居节点是开放的,并且可以通过调用A *来遍历它们。这至少比我在问题1中解释可能的解决方案的方式要好一些。
您是否有任何放置块的具体规则,或者您是否需要生成满足所有提及的属性的随机迷宫? – kraskevich 2015-04-04 15:23:33
我没有放置块的具体规则。现在他们被随机放置在任何打开的节点上。但是,也许我应该有放置它们的规则?制定放置规则实际上会回答问题2,但我不知道规则会是什么。我需要满足的唯一不动产是代理必须能够到达任何开放节点。 – 2015-04-04 22:47:44