我关心一个只包含门、钥匙和墙壁的环境。如果“拾取”钥匙(即已访问包含钥匙的节点),则可以通过门。
问题是找到给定点 A 和 B 之间的路径。最优解不是必需的。
让我们用“D”表示门,用“K”表示钥匙,用“#”表示墙,现在考虑下面的环境。目标是 B,原点是 A。我们将用“.”表示空方格。
###..........K
#BD...A.......
###...........
现在,显然在这种情况下,我们必须在向目标 B 移动之前访问包含 K 的节点。目前我正在使用 AStar,对于访问距目标曼哈顿距离的“关键”节点具有启发式折扣,但是,当 K 很远时,这种方法很困难,因为它消耗了太多的内存和时间。
我很想知道您认为哪种算法最适合这个特定问题?还是我的算法选择正确但启发式很差?请告知,由于我是新人,请尽可能做出解释。
干杯。