在迷宫中行走所有可能块的算法

时间:2016-01-04 14:21:10

标签: algorithm traversal backtracking maze

我已经阅读了很多关于如何解决迷宫问题的问答,而且我熟悉在编程中使用递归。我的情况略有不同:

我正在尝试开发一台机器(用Java)来解决具有一个入口点的2D竞技场,该入口点可以在地图中的任何地方,而不仅仅是在边缘。目标不是寻找出路(没有这样的出口。入口点是出口)。任务是走遍所有地方,寻找收藏品,避开障碍物。

想象一下,它是一名矿工的挖掘者。天黑了,你可以看到2,3,4个瓷砖,你在这个范围内看到的只是收藏品,因为它们有点闪烁。地图的障碍物和边缘都不能被看到"直到挖掘者尝试它们并且无法移动。这意味着我们不知道地图的完整尺寸和形状。有时它是一系列细长的隧道,有时它是一组大房间(30x100块),或两者的组合。

我尝试了一个简单的迷宫解决方案,在类似房间的地图中递归,半空房间(没有障碍物,没有收藏品)。从这个房间的这一部分开始,挖掘机在这些空座上来回走了几十次,直到它最终发挥出所有可能的方式,最后到达房间的另一端。

显然我需要一种不同的方法来制作这样的地图,而这个简单的迷宫求解器很适合(好吧,差不多)走很长的隧道。

对于那些已达到目前为止的人,以下列出了其他条件和特征:

  1. 虽然大多数收藏品都是在挖掘的时候。它们消失并让路,一些转换为障碍而无法通过。
  2. 地图周围有通往另一张地图的大门。想象一下它就像电梯和地板一样。
  3. 有杠杆,打开门,钥匙被收集,石头被移动开路或被放置在某些地方以解锁区域等。
  4. 嗯,非常棒的情况,当然,我的挖掘机只做简单的工作(1.和2.很容易编码,而3.是Isaac Asimov)

    所以,如果不清楚我究竟在问什么,这里是:

    如何提高我的算法,使其在一个已经清晰且更加智能的区域内不会多次出现。在寻找收藏品时,无论地图的类型如何?

1 个答案:

答案 0 :(得分:1)

我所知道的所有图形搜索算法都假设图形从一开始就是已知的。如果你想尝试使用类似于图形搜索的东西,你需要为环境制作某种可能的模型(在传感器范围之外),然后进行蒙特卡罗模拟:

循环N次并且:

  • 根据您已有的信息,根据模型随机化环境未知部分的实例。
  • 使用常规算法解决搜索问题"猜测"环境
  • 为第一乐章添加投票"最佳路径"

获得最多选票的移动方向获胜。

您必须调整N以及您为此方法建模环境的方式是否有用。无论如何,这是一个非常棘手的问题。甚至这种技术也没有考虑从每个选择中获得的潜在信息(深入研究这种计算,因为状态评估只是非常昂贵)

相关问题