- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用基于网格的系统,该系统具有可交叉和不可交叉的方 block ,A* 用于查找路径,并使用洪水填充来查看是否可以找到路径(查看两个区域是否相连)。
我的问题是新的不可穿越区域可能会非常频繁地引入(每秒最多 16 次)并且网格相当大(大约 500 x 500)所以即使是 O(mn) 的洪水填充解决方案也需要相当长的时间多少时间。我查看了 floodfill 的不同实现,但找不到与我想要的类似的东西。
所以我的问题是,有没有什么方法可以根据之前的网格和新的不可穿越区域列表(始终为矩形)优化重复的洪水填充调用?
最佳答案
首先使用洪水填充算法将可交叉正方形划分为连通的组件。
当您将一个区域标记为不可交叉时,请考虑该区域外与该区域中先前可交叉的方 block 相邻的所有可交叉方 block 的集合 S。对于在 S 中至少有两个成员的每个组件 C,使用洪水填充检查 C 是否已断开连接。
当您将一个区域标记为可交叉时,考虑该区域外与该区域中的一个正方形相邻的所有可交叉正方形的集合 S。将所有组件与 S 中的一个成员连接起来。
关于algorithm - 重复洪水填充优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749931/
我有一个 3D 数组。在这个数组中,我想找到可以组合成更大元素的元素。矩形不能相互重叠。我最好先找到最大的矩形,但先到先得也不会错,尤其是在提高性能的情况下。 例如 1 0 0 0 1 0 0 0 0
这是使用 D3.js 和 topojson 的洪水 map 示例。 http://bl.ocks.org/cappelaere/6472064 https://gist.github.com/capp
首先声明一下,我不是 DevOp,所以我在 Linux 管理方面的经验有限。 我基本上遵循了这个操作方法 (https://cloud.google.com/monitoring/agent/inst
这不是出于黑客目的。我正在学习计算机科学,我只是好奇。 所以..当主机A向主机B发送TCP SYN时,主机B为接收缓冲区等分配空间,向主机A发送回SYNACK,主机A也分配这样的空间,然后向主机B发送
我正在使用这个插件 https://github.com/mozilla/rust-android-gradle ,这需要我添加 tasks.whenTaskAdded { task -> i
我是一名优秀的程序员,十分优秀!