我已经阅读了很多关于如何解决迷宫问题的Q / As,我熟悉在编程中使用递归.我的情况略有不同:
我正在尝试开发一种机器(用Java)来解决具有一个入口点的2D竞技场,该入口点可以在地图中的任何地方,而不仅仅是在边缘.目标不是寻找出路(没有这样的出口.入口点是出口).任务是走遍所有地方,寻找收藏品,避开障碍物.
想象一下,它是一个挖掘机的矿井.天黑了,你可以看到2,3,4个瓷砖,你可以在这个范围内看到的只是收藏品,因为它们有点闪烁.在挖掘者尝试它们并且无法移动之前,地图的障碍物和边缘都不能被“看到”.这意味着我们不知道地图的完整大小和形状.有时它是一系列细长的隧道,有时它是一组大房间(30×100块),或两者的组合.
我已经尝试了一个简单的迷宫解决方案,在类似房间的地图中递归,半空房间(没有障碍物,没有收藏品).从这个房间的这一部分开始,挖掘机在这些空座上来回走了几十次,直到它最终发挥出所有可能的方式,最后到达房间的另一端.
显然我需要一种不同的方法来制作这样的地图,而这个简单的迷宫求解器对于漫长的隧道来说是很好的(好吧,差不多).
对于那些已达到目前为止的人,这里列出了其他条件和特征:
>虽然大多数收藏品在“挖掘”时都会消失并让路,但有些可以转换为障碍而无法通过.
>地图周围有通向另一张地图的大门.想象一下它是电梯和地板.
>有杠杆,打开门,钥匙被收集,石头被移动开路或被放置在某些地方解锁区域等.
好吧,非常棒的情况,当然,我的挖掘机只会做简单的工作(1.和2.很容易编码,而3.是Isaac Asimov)
所以,如果不清楚我究竟要问的是什么,这里是:
如何提高我的算法,使其在一个区域内不会出现这么多次,无论地图的类型如何,它都已经清晰并且在寻找收藏品方面更“聪明”?
最佳答案 我所知道的所有图形搜索算法都假设图形从一开始就是已知的.如果你想尝试使用类似于图形搜索的东西,你需要为环境(传感器范围之外)制作某种可能的模型,然后进行蒙特卡罗模拟:
循环N次并且:
>根据您已有的信息,根据模型随机化环境未知部分的实例.
>使用“猜测”环境中的常用算法解决搜索问题
>为“最佳路径”所采取的第一个动作添加投票
获得最多选票的运动方向获胜.
你必须调整N和你为这种方法建模环境的方式是有用的.无论如何,这是一个非常棘手的问题.甚至这种技术也没有考虑每种选择的潜在信息增益(深入研究这种计算,因为状态评估只是非常昂贵)