找到一个城市所连接的最大陆地的算法​​?

标签 algorithm data-structures geospatial connectivity gaps-and-islands

我有一张世界地图的黑白图片。

我将像素转换为由坐标 (i, j) 索引的二进制值网格(0 表示水,1 表示土地)。现在,假设我在陆地上随机选择一个点,这次是在美国德克萨斯州的某个地方。我想知道我可以到达的所有点的 (i, j) 坐标,无需穿过水域。在这种情况下,它将是整个北美和南美(减去任何周围岛屿)中的任何 (i, j)。

(这背后的动机是我试图在 c 中并行实现一个 SIR 感染模型。)

非常感谢您的帮助。

编辑: 如果有任何近似方法我也很感兴趣(如果错误地包括了一些微小的近海岛屿,我并不过分大惊小怪。),也许是像四叉树这样的网格划分方法?再次感谢。

最佳答案

您正在寻找 flood fill algorithm .它可以递归地完成,或手动维护堆栈,或使用队列。

关于找到一个城市所连接的最大陆地的算法​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043210/

相关文章:

c++ - 并发可变优先级队列

MongoDB 地理相交无法找到大多边形

javascript - JavaScript/谷歌地图中的磁偏 Angular

algorithm - 将递归函数调用转换为具有成本效益的表示

c++ - 快速编译高效排序算法(用于JIT编译)

css - 匹配 CSS 重复项的算法

java - 使用 1 个数组实现 3 个堆栈,此代码是否有效?

haskell - 表示自动机的数据结构

algorithm - 以特殊方式设置不相交?

r - 如何在不同的数据帧中选择特定时间段内的点,然后根据纬度/经度计算这两个点之间的距离