0

我关心一个只包含门、钥匙和墙壁的环境。如果“拾取”钥匙(即已访问包含钥匙的节点),则可以通过门。

问题是找到给定点 A 和 B 之间的路径。最优解不是必需的。

让我们用“D”表示门,用“K”表示钥匙,用“#”表示墙,现在考虑下面的环境。目标是 B,原点是 A。我们将用“.”表示空方格。

###..........K
#BD...A.......
###...........

现在,显然在这种情况下,我们必须在向目标 B 移动之前访问包含 K 的节点。目前我正在使用 AStar,对于访问距目标曼哈顿距离的“关键”节点具有启发式折扣,但是,当 K 很远时,这种方法很困难,因为它消耗了太多的内存和时间。

我很想知道您认为哪种算法最适合这个特定问题?还是我的算法选择正确但启发式很差?请告知,由于我是新人,请尽可能做出解释。

干杯。

4

1 回答 1

0

我会将其视为一个两阶段的问题。在第一阶段,使用自动规划算法来确定可行的事件序列,其中事件正在访问钥匙/门/点 B。不相交的数据结构可能有助于随着时间的推移确定两个位置是否通过空白空间连接和未上锁的门。在第二阶段,使用 A* 来实现计划。

于 2013-05-31T13:09:07.983 回答