在矩阵中在源和目标之间建立路径所需的最小翻转

问题描述 投票:1回答:1

问题https://www.geeksforgeeks.org/find-whether-path-two-cells-matrix/的扩展

这里必须找到路径是否存在于top leftbottom right矩阵的角落。如问题所述,两者之间会有障碍。现在我的问题是,如果没有从源到目的地的路径,那么必须在矩阵中翻转的最小障碍是什么:

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

源和目的地之间。

algorithm data-structures dynamic-programming graph-algorithm breadth-first-search
1个回答
0
投票

为了更清楚你的问题,我们假设我们将给出一个二维网格,其中row行数和col整数列包含整数01

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

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

a)障碍物数量最少的路径: 我们可以找到具有最小障碍数量的路径,只需应用广度优先搜索(BFS)或深度优先搜索(DFS),并将进入空白的成本视为0,并将成本作为1进入障碍。而且,从每个单元格,我们可以向上,向下,向右和向左遍历所有方向。以这种方式计算的最短路径的距离将给出从矩阵的左上角到右下角的最小障碍物翻转路径。

b)障碍物数量最少的最短路径: 从矩阵的左上角到右下角开始的最短路径长度将始终相同,等于row + col-2,这可以通过从网格中的每个单元格向右或向下遍历来实现。因此,这个问题也可以使用BFS或DFS来解决,并且只从每个单元格向右或向下遍历,并将进入空白区域的成本视为0,并将成本作为1进入障碍。以这种方式计算的最短路径的距离将给出我们使用最短路径之一从矩阵的左上角到右下角翻转的最小障碍物数量。由于在遍历时不会有循环,我们也可以使用动态编程来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.