algorithm - 迷宫解决 - 圆形路径问题
问题描述
通过记录“被访问”的位置(相对于路径前进的方向),在迷宫中的特定区域出现问题,其中被跟踪的路径是圆形的。我使用的算法是一种在迷宫中找到最短路径的递归算法。除了具有圆形路径的区域外,它工作正常。一个解释问题的例子——请看附图。黑线是访问的第一条路径,绿线是第二条路径。黄色标记路径中已被黑线记录为“已访问”的区域。由于这个黄色区域已经被访问过,那么实际上,黄色区域中的绿线是不存在的。因此,找不到示例中迷宫中的最短路径:-(
任何帮助将不胜感激。
解决方案
当您到达一个已经访问过的位置时,您必须测试您在第二次(或后续)时间到达它的路径上的距离是否比该位置记录的距离短。如果是,则必须更新其距离并继续。
只要没有“负”距离,这就会起作用。如果有负距离,您将永远停留在循环中,每次距离都会越来越小!
最短路径问题的Wikipedia 页面列出了几种算法、它们的约束和复杂性。对于具有循环但没有负距离的图,这些包括 Bellman-Ford 算法、具有各种数据结构的 Dijkstra 算法。
推荐阅读
- android - Android SAF 写的文件有原版的尾巴
- kotlin - ktor 无法访问 IntelliJ 中的类
- generics - 将 Rust 特征对象与泛型方法一起使用
- c# - 渲染包含 Razor 代码的字符串模板
- python - 如何拆分文本文件中的文本块并将其保存到对象或列表中?
- javascript - 用于闭环的javascript
- android - 如何使 EditText 可以处理 14 KB 文本 (Kotlin)
- php - laravel voyager 只是保持加载并且不起作用
- c# - ItextSharp 不使用 c# 维护 pdf 中的列宽
- ruby-on-rails - 在其他控制器中使用设计时没有响应