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

mch*_*hen 4 algorithm connectivity geospatial data-structures gaps-and-islands

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

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

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

非常感谢您的帮助.

编辑:如果有任何近似方法,我也会感兴趣(如果错误地包含了一些小的离岸岛屿,我不会过度讨论.),也许是通过像四叉树一样的网格化方法?再次感谢.

Tho*_*mas 8

您正在寻找洪水填充算法.它可以递归地完成,也可以手动维护堆栈或使用队列.