我正在使用一个基于网格的系统,其中可交叉和不可交叉的方格带有A *用于查找路径,并使用泛洪填充来查看是否可以找到路径(以查看是否连接了两个区域)。
我的问题是,新的不可交叉区域可以频繁引入(每秒高达16次)并且网格相当大(大约500乘500)所以即使是O(mn)洪水填充解决方案也需要相当长的时间多少时间。我已经查看了洪水填充的不同实现,但找不到任何类似于我想要的东西。
所以我的问题是,有没有办法优化基于前一个网格的重复洪水填充调用以及一个新的不可交叉区域列表(总是矩形)?
答案 0 :(得分:0)
首先使用泛洪填充算法将可交叉方块划分为连接的组件。
当您将区域标记为不可交叉时,请考虑该区域中与之前可交叉方格相邻的区域外的所有可交叉方格的集合S.对于在S中至少有两个成员的每个组件C,使用泛洪填充来检查C是否已断开连接。
当您将一个区域标记为可交叉时,请考虑该区域中与一个正方形相邻的区域外的所有可交叉方格的集合S.加入所有具有S成员的组件。