Mapping 绘制封闭迷宫并记住其外观以供将来使用的算法

Mapping 绘制封闭迷宫并记住其外观以供将来使用的算法,mapping,maze,agent,Mapping,Maze,Agent,我正在做一个项目,在这个项目中,我会在一个随机迷宫中有一个代理,而这个迷宫没有出口。目标是让代理探索迷宫并“记住”它的外观。一段时间后,我将在一个随机位置生成一个项目,并且只有当代理已绘制出给定区域时,才会收到通知。代理将使用它生成的映射来确定项目的最短路径 我知道像A*这样的迷宫算法,但是这些算法需要一个开始和结束位置来停止遍历。这些算法并不“记住”迷宫的外观,它们只是确定两点之间的最短路径。因为迷宫是关闭的,所以没有终点位置。我最初的想法是让代理随机旅行并填写地图外观的2D数组,这对我来说似

我正在做一个项目,在这个项目中,我会在一个随机迷宫中有一个代理,而这个迷宫没有出口。目标是让代理探索迷宫并“记住”它的外观。一段时间后,我将在一个随机位置生成一个项目,并且只有当代理已绘制出给定区域时,才会收到通知。代理将使用它生成的映射来确定项目的最短路径


我知道像A*这样的迷宫算法,但是这些算法需要一个开始和结束位置来停止遍历。这些算法并不“记住”迷宫的外观,它们只是确定两点之间的最短路径。因为迷宫是关闭的,所以没有终点位置。我最初的想法是让代理随机旅行并填写地图外观的2D数组,这对我来说似乎效率低下。任何想法都很好

所以您将有两个步骤,探索和遍历

假设您已经完全探索了迷宫,那么当项目出现时,您可以使用*作为项目的目标

要浏览并存储地图,可以创建适合地图的数据结构。例如,如果连接路径不重要,而只有连接节点重要,那么只需创建一个节点类,其中每个节点都有一个连接节点列表。最后,您可以启动广度优先搜索或深度优先搜索来浏览整个地图,同时将信息存储在上述数据结构中

根据实际地图,两种勘探算法都可能更有效。不过我还是从深度优先开始,因为这听起来和我们人类进入迷宫的方式很相似——在十字路口总是朝着同一个方向转弯!(dfs处理循环路径很好!)