在二维数组中寻找最短路径

时间:2019-03-19 11:17:01

标签: java algorithm graph-theory shortest-path

我需要找到从左上方到右下方的最短路径。

规则必须从 A B A B 等。

以图片为例:

enter image description here

上面图片的预期输出为 13

我正在尝试使用dijkstra算法在Java中实现此目标,但后来陷入困境。这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

如果目标是找到从左上角到右下角(或任意2个点之间)的最短路径,则dijsktra是可行的一种方法,但是您必须从输入中正确构建图形。

在这种情况下,我将使用简单的flood-fill算法。您可以找到一些在线资源对其进行解释,包括this videothis article,因此在此答案中我将不做更多详细介绍。

如果正确实施规则(仅从A到B和从B到A),则仅使用2个矩阵即可找到最短路径(一个矩阵用于原始字母数组,一个矩阵用于距离)。

答案 1 :(得分:1)

您可以使用任何图形遍历算法或任何寻路算法。 T,这里有很多算法,例如A *,Dijekstra,BFS,DFS ...

例如,让我们以BFS为例,它找到了图2个节点之间的最短路径。假设您的2d数组是一个图形,如果2个节点之间的距离为1,其中一个节点为A,第二个节点为B,则边处于条件状态。 >

只需从矩阵构造图并为图实现BFS,或者您可以简单地为数组实现BFS。