我已经阅读了很多关于如何解决迷宫问题的问答,而且我熟悉在编程中使用递归。我的情况略有不同:
我正在尝试开发一台机器(用Java)来解决具有一个入口点的2D竞技场,该入口点可以在地图中的任何地方,而不仅仅是在边缘。目标不是寻找出路(没有这样的出口。入口点是出口)。任务是走遍所有地方,寻找收藏品,避开障碍物。
想象一下,它是一名矿工的挖掘者。天黑了,你可以看到2,3,4个瓷砖,你在这个范围内看到的只是收藏品,因为它们有点闪烁。地图的障碍物和边缘都不能被看到"直到挖掘者尝试它们并且无法移动。这意味着我们不知道地图的完整尺寸和形状。有时它是一系列细长的隧道,有时它是一组大房间(30x100块),或两者的组合。
我尝试了一个简单的迷宫解决方案,在类似房间的地图中递归,半空房间(没有障碍物,没有收藏品)。从这个房间的这一部分开始,挖掘机在这些空座上来回走了几十次,直到它最终发挥出所有可能的方式,最后到达房间的另一端。
显然我需要一种不同的方法来制作这样的地图,而这个简单的迷宫求解器很适合(好吧,差不多)走很长的隧道。
对于那些已达到目前为止的人,以下列出了其他条件和特征:
嗯,非常棒的情况,当然,我的挖掘机只做简单的工作(1.和2.很容易编码,而3.是Isaac Asimov)
所以,如果不清楚我究竟在问什么,这里是:
如何提高我的算法,使其在一个已经清晰且更加智能的区域内不会多次出现。在寻找收藏品时,无论地图的类型如何?
答案 0 :(得分:1)
我所知道的所有图形搜索算法都假设图形从一开始就是已知的。如果你想尝试使用类似于图形搜索的东西,你需要为环境制作某种可能的模型(在传感器范围之外),然后进行蒙特卡罗模拟:
循环N次并且:
获得最多选票的移动方向获胜。
您必须调整N以及您为此方法建模环境的方式是否有用。无论如何,这是一个非常棘手的问题。甚至这种技术也没有考虑从每个选择中获得的潜在信息(深入研究这种计算,因为状态评估只是非常昂贵)