我已经大幅度编辑了这个问题,使它更容易理解。
在一个任意维度和任意位置的障碍物中,我有一个代理探索这个环境,但视野范围有限(障碍物不会阻挡视线)。它可以朝着东南西北四个方向移动,每次移动一格,图是无权重的(每一步的代价为1)。下面链接的地图表示代理人(黄色小伙子)在规划瞬间对环境的当前信念。当代理正在规划时,仿真中时间不会流逝。
http://imagizer.imageshack.us/a/img913/9274/qRsazT.jpg
我应该使用哪种探索算法来最大化效用的成本效率,考虑到允许重新访问单元格?每个单元格都具有效用值。理想情况下,我会寻求最大化所有已看到(而非访问过)单元格的效用之和与路径长度的比值,尽管如果任何适当的算法过于复杂,则已看到的单元格数就足够了。路径长度有一个最大值,但通常在数百或更高。 (我的代理使用的实际测试环境至少4倍以上,尽管从理论上讲,可以设置无限制的维度,并相应地增加最大路径长度)我认为BFS和DFS是棘手的,给定缺乏合适启发式的A*不是最优的,Dijkstra不适合生成单个不间断的路径。你能想到任何算法吗?此外,我需要帮助循环检测,因为允许重新访问是我第一次这样做。
我考虑的一种方法是将地图缩小为跨度树,除了将其定义为连接所有单元格的树之外,它被定义为可以看到所有单元格的树。我的方法将导致以下结果: 在生成的树中,代理可以从一个节点移动到任何相邻的节点,这些节点在交叉口处距离为0-1圈。这是我目前的思考范围。使用此树生成的解决方案可能不是最优的,但它至少应该是近似最优的,并且算法处理的单元格要少得多,因此如果这会使算法更容易处理,那么我认为这是一个可以接受的折衷方案。然而,我仍然困惑于如何生成路径。