对于实习,我在以下情况下使用了 A* 算法:
- 单位形状是一个高度和宽度为1的正方形,
- 我们可以从一个由另一个矩形表示的区域旅行,但我们不能在这些预先定义的区域之外旅行,
- 我们可以通过一扇门从一个矩形到另一个矩形,由相应正方形边缘上的一条线段表示。
以下是我已经做过但没有让我的老板满意的两件事:
1:我创建了以下类:-a Door 类,其中包含 2 个分隔正方形的位置和门的方向(上、左、下、右),-a Map 类,其中包含门列表,矩形列表表示可步行区域和表示地面方格的 2D 数组(用于通过枚举获取附加信息) - A* 算法的类(节点、AStar)
2 : -a MapCase 类,通过枚举包含有关案例效果和门的信息(设置了 [FLAGS] 属性,以便能够累积每个案例的多个信息) -a Map 类,仅包含 2D 数组MapCase 类 - A* 算法的类(仍然是 AStar 节点)。
由于 2 版本比第一个更好(无用计算更少,映射类架构更好),所以我的老板对我的映射类架构仍然不满意。
A* 和节点类很好并且易于维护,所以我认为我现在不必更深入地解释它们。
所以这是我的问题:有没有人用问题规范(矩形可步行但单位面积为正方形,穿过门)来实现 A* 的好主意?
他说问题的网格视觉(所以二维数组)不应该是解决问题的正确方法。
我希望我在暴露我的问题时已经清楚了..
谢谢
风筝