Algorithm 在矩阵中形成源和目标之间的路径所需的最小翻转次数

Algorithm 在矩阵中形成源和目标之间的路径所需的最小翻转次数,algorithm,data-structures,dynamic-programming,graph-algorithm,breadth-first-search,Algorithm,Data Structures,Dynamic Programming,Graph Algorithm,Breadth First Search,问题的扩展 这里必须找出路径是否存在于矩阵的左上到右下角。如问题中所述,两者之间将存在障碍。现在我的问题是,如果不存在从源到目标的路径,那么在矩阵中必须翻转的最小障碍是什么 a) 一条小路 b) 最短路径 在源和目标之间。为了更清楚地说明您的问题,让我们假设我们将得到一个二维网格,其中包含行数和列数,其中包含整数0和1 0:空白单元格 1:障碍物 您想知道矩阵中必须翻转的最小障碍物,以构建路径和从矩阵左上角到右下角的最短路径 a)障碍物最少的路径: 我们只需应用广度优先搜索(BFS)或深度优

问题的扩展

这里必须找出路径是否存在于矩阵的
左上
右下
角。如问题中所述,两者之间将存在障碍。现在我的问题是,如果不存在从源到目标的路径,那么在矩阵中必须翻转的最小障碍是什么

  • a) 一条小路
  • b) 最短路径

在源和目标之间。

为了更清楚地说明您的问题,让我们假设我们将得到一个二维网格,其中包含
行数和
列数,其中包含整数
0
1

0:空白单元格
1:障碍物

您想知道矩阵中必须翻转的最小障碍物,以构建路径和从矩阵左上角到右下角的最短路径

a)障碍物最少的路径:
我们只需应用广度优先搜索(BFS)或深度优先搜索(DFS),并将进入空白空间的成本取为
0
,进入障碍物的成本取为
1
,就可以找到障碍物数量最少的路径。我们可以从每个细胞向上、向下、右、左各个方向移动。用这种方法计算的最短路径距离将给出从矩阵左上角到右下角的最小障碍物翻转路径

b)障碍物数量最少的最短路径:

从矩阵左上角到右下角开始的最短路径长度始终相同,等于行+列-2,这可以通过从网格中的每个单元格向右或向下遍历来实现。因此,这个问题也可以使用BFS或DFS解决,只从每个单元格向右或向下遍历,并将进入空白空间的成本作为
0
,进入障碍物的成本作为
1
。用这种方法计算出的最短路径距离将给出使用其中一条最短路径从矩阵左上角到右下角翻转的最小障碍物数量。由于遍历时没有循环,我们也可以使用动态规划来解决这个问题。

很有意义。这很有帮助。