【发布时间】:2012-08-01 22:42:34
【问题描述】:
我有一个网格(下面的示例),其中包含外墙(标记为 W)、环境块 (E)、开放空间 (o) 和活动点 (A)。目前,该网格存储在 [,] 中,所有数据都与给定点相关联。我试图确定一个活动点是否被封闭(定义为无法到达网格的顶部,因为它被环境块阻挡),但我很难找到解决这个问题的简单方法。我知道我可以实现 A* 并且使用所有示例代码或多或少会很容易,但我认为对于这样一个看似微不足道的操作来说,性能损失真的是必要的或值得的。
W--Top Of Grid--W
W---------------W
W-EEAEE-----EEE-W
WEEEEEEE-EEEEAEEW
WEEEEEEE--EEEEEEW
WEEEEEEEE-AEEEEEW
WWWWWWWWWWWWWWWWW
向下第三行的 A 可以绘制到网格顶部的路径,最后一行的 A 可以,但是向下第四行的 A 不能。我不关心实际路径,我只需要确定对象是否被困。这个项目的最佳解决方案是什么?
不管怎样,如果有帮助的话,它是一个用于回合制网格游戏的 C# 项目。
提前感谢您提供的任何帮助,非常感谢。
【问题讨论】:
-
如果网格接近那么小,“性能损失”将几乎为零,所以继续实施 A*。你也可以做一个简单的广度优先搜索,但 A* 并不比 BFS 复杂。
-
网格明显更大(可高达 100x100 个节点),显示的网格很小以便于查看。这仍然适用于那个规模吗?
-
我仍然会说这可能不会成为问题,除非你也有很多“活跃点”。只需将启发式设置为从顶部开始的高度。完成后,分析您的应用程序,并查看寻路是否是一个瓶颈 - 如果是这样,也许我们可以更快地想出一些东西,但在那之前,您不值得花时间去优化它。
-
非常感谢!我试试看!
标签: arrays path-finding