原始需求:想在一个二维坐标系中,找出哪些白块被红块包围,形成无法到达的区域(找出图中类似1、2、3的区域)。
问题:现在已经使用Flood Fill Algorithm算法实现了需求,但是该算法需要遍历所有白块,效率达不到要求。
我的直观想法是:把所有相连的红块看作是一个“无向图”,那么示例中就有3个“无向图”。然后分别用DFS+ParentNode的方式遍历无向图找到“环”,找到“环”后遍历其中的白块就行了。
但这个方法的问题是无法处理区域1和区域2的“共边”,在这个“共边”上的节点应该要被访问两次,到此我就不会了。
求解:我应该朝哪个方向继续研究?有无什么已有的算法或理论可供参考?