Java 非完美迷宫生成
我已经为一个项目编写了A*算法。该项目的要求之一是随机生成50个迷宫 我有点困了,因为这和普通的迷宫不一样。在迷宫世代中,你已经封锁和解除封锁的墙壁,而在我的情况下,我需要封锁和解除封锁的瓷砖。它也不可能是完美的(应该有多条路径)。我还没有在网上找到一个适合这种情况的算法或描述。实现这一目标的最佳方式是什么?如果可能的话,我还想指定一个起点+终点,如果不是的话,那么就指定一个起点。谢谢大家! 这是我手动生成的迷宫示例(规模较小):Java 非完美迷宫生成,java,algorithm,path-finding,maze,pathfinder,Java,Algorithm,Path Finding,Maze,Pathfinder,我已经为一个项目编写了A*算法。该项目的要求之一是随机生成50个迷宫 我有点困了,因为这和普通的迷宫不一样。在迷宫世代中,你已经封锁和解除封锁的墙壁,而在我的情况下,我需要封锁和解除封锁的瓷砖。它也不可能是完美的(应该有多条路径)。我还没有在网上找到一个适合这种情况的算法或描述。实现这一目标的最佳方式是什么?如果可能的话,我还想指定一个起点+终点,如果不是的话,那么就指定一个起点。谢谢大家! 这是我手动生成的迷宫示例(规模较小): 您可以为每个磁贴随机分配一个值(表示已阻止或未阻止)。完成此操作
您可以为每个磁贴随机分配一个值(表示已阻止或未阻止)。完成此操作后,指定起点和终点
结果可能是这样的。
如果您喜欢使用迷宫生成算法,请使用广泛可用的资源之一,如:,,您可以使用union find数据结构完成此操作,类似于使用Kruskal算法生成迷宫:
- 选择起点和终点
- 将每个单元格(起点和终点除外)标记为已阻止,并将每个单元格放在自己的集合中
- 随机解锁单元格。取消阻止单元格时,将其集合与其连接的所有未阻止单元格集合合并
- 开始单元格的集合与结束单元格的集合合并时停止
结果看起来不像传统的迷宫,但可能对a*测试有好处。这与a*算法有什么关系?相关:我在为不完美的迷宫寻找一个简单的算法。这太完美了,谢谢!还有,这个算法有名字吗?