Breadth first search 显式查找矩阵中的孤岛

Breadth first search 显式查找矩阵中的孤岛,breadth-first-search,Breadth First Search,给我一个0和1的矩阵,我必须找到由一个矩阵组成的岛。如果找到参考: 关于谁来计算孤岛的数量,但根本不知道如何调整算法,以便在给定属于它们的矩阵单元列表的情况下最终获得孤岛列表。这个问题本质上要求您找到无向图的连接组件。在这里,连接的组件是由0包围的1组成的组,组中的1没有一个连接到由0包围的另一个单独的1组 要解决此问题,可以从对二维矩阵中的每个元素执行深度优先搜索(DFS)开始 如果算法遇到未访问的1,则增加孤岛的计数 递归地对所有相邻顶点(上、下、左、右)执行DFS 跟踪已访问的1,以便不

给我一个0和1的矩阵,我必须找到由一个矩阵组成的岛。如果找到参考:


关于谁来计算孤岛的数量,但根本不知道如何调整算法,以便在给定属于它们的矩阵单元列表的情况下最终获得孤岛列表。

这个问题本质上要求您找到无向图的连接组件。在这里,连接的组件是由0包围的1组成的组,组中的1没有一个连接到由0包围的另一个单独的1组

要解决此问题,可以从对二维矩阵中的每个元素执行深度优先搜索(DFS)开始

  • 如果算法遇到未访问的1,则增加孤岛的计数
  • 递归地对所有相邻顶点(上、下、左、右)执行DFS
  • 跟踪已访问的1,以便不再访问它们(可以完成 使用集合或使用布尔标志标记访问的图形中的节点)
  • 在此递归DFS过程中,一旦找到0,立即停止DFS
  • 继续该算法,移动到2D矩阵中的下一个元素,然后 重复步骤1-4
  • 当到达2D矩阵的末尾时,返回岛的计数