我正在玩递归回溯算法,但它总是产生非常容易的迷宫。什么算法产生最难的迷宫来解决(如果合适,请包括关于辫子和偏向的信息)?迷宫算法生成最困难的迷宫?
回答
你可以从这里检查迷宫生成算法:
洪水填充算法就是IEEE建议。
该算法有很多版本。 我谷歌填充算法的实现。
但我没有找到实施
定量地定义迷宫的“难度”并不容易。所以让我定性。
首先,递归Backtracker是一个“完美的迷宫”算法;它只用一种解决方案生成迷宫。大多数迷宫一代的工作与产生完美的迷宫有关,所以我会限制我的答案。
迷宫算法有很多很多变化和非常规的变化。但实际上,只有12个基本的迷宫算法。我有他们在这里列出的顺序,我个人(定性和闲谈)找到最到最困难的:
- Kruskal's
- Prim's
- Recursive Backtracker
- Aldous-Broder
- Growing Tree
- Hunt-and-Kill
- Wilson's
- Eller's
- Cellular Automaton(简易)
- Recursive Division(很容易)
- Sidewinder(预测)
- Binary Tree(有瑕疵)
没有在难度很大的差异我名单上的前四名。对于那个很抱歉。您的实施可能存在缺陷。最有可能的是,你只是擅长做迷宫。尝试让它们变大。
完美的迷宫更困难的假设是错误的。在死胡同里,你可以回溯,如果有相对观点的解决方案,一个带有循环的迷宫就很难解决,因为它不会如此明显,你走在圈子里反对走进死胡同。 – Madmenyo
这是一个有趣的观点。但是我发现关于生成非完美迷宫的信息很少,所以我修改了我的答案以表明这一点。 – theJollySin
大声笑,我实际上正在寻找一个。现在我只记得当我开始回溯瓷砖并在稍后切割墙壁时。它有点作用,但它不觉得很干净。 – Madmenyo
深度优先搜索可以产生非常复杂的迷宫。这里是一个开源的C++实现:https://github.com/corporateshark/random-maze-generator
尝试设置ImageSize
到4096和NumCells
到2047.结果将非常艰难。
虽然不是一个直接的答案,this article on visualizing maze generation algorithms是一个必须的手表。
- 1. DFS算法迷宫生成
- 2. 迷宫/迷宫游戏
- 3. 生成迷宫使用DFS算法
- 4. 穿越迷宫的算法
- 5. C:生成随机迷宫
- 6. 解决迷宫问题的迷宫
- 7. 递归迷宫算法(在迷宫中旋转件)
- 8. 三维迷宫算法
- 9. 国王迷宫
- 10. 构建迷宫
- 11. 迷宫至少变成
- 12. 迷宫算法KINDA的作品。一些迷宫,并非全部帮助
- 13. 在android中用于迷宫生成的递归除法算法
- 14. 二维迷宫的递归算法?
- 15. 在C++中的迷宫求解算法
- 16. 递归部门随机迷宫生成
- 17. 递归回溯生成迷宫
- 18. Python迷宫递归
- 19. MatLab迷宫求解
- 20. Java递归迷宫
- 21. 迷宫不工作?
- 22. 递归迷宫代
- 23. C++“迷宫”作业
- 24. 迷宫算法路径查找器
- 25. 迷宫与路径寻找算法
- 26. 迷宫遍历算法递归
- 27. 用Floyd-Warshall算法寻找迷宫
- 28. 迷宫解决算法Java(递归)
- 29. 迷宫算法,实际工作
- 30. 迷宫算法堆栈溢出
定义“最难”。 –
需要最长的时间来解决一个人:)。 – John
好的,但是在您有机会找到它的算法之前,您需要将其转换为客观度量标准! –