Java 二维数组中最短路径的求解

Java 二维数组中最短路径的求解,java,algorithm,graph-theory,shortest-path,Java,Algorithm,Graph Theory,Shortest Path,我需要找到从左上到右下的最短路径 规则是它必须从A到B到A到B等等 如图所示: 上述图片的预期输出为13 我试图用一个dijkstra算法在java中实现这个,但是后来被卡住了。这是正确的方法吗?如果目标是找到从左上角到右下角(或任意两个点之间)的最短路径,dijsktra是一种可能的方法,但是您必须根据输入正确构建图形 在这种情况下,我会选择一个简单的洪水填充算法。你可以找到一些在线资源来解释这个问题,包括or,所以我不会在这个答案中提供更多细节 如果正确执行规则(仅A到B和B到A),则只需

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

规则是它必须从ABAB等等

如图所示:

上述图片的预期输出为13


我试图用一个dijkstra算法在java中实现这个,但是后来被卡住了。这是正确的方法吗?

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

在这种情况下,我会选择一个简单的
洪水填充算法。你可以找到一些在线资源来解释这个问题,包括or,所以我不会在这个答案中提供更多细节


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

您可以使用任何图形遍历算法或任何路径查找算法。T、 这里有很多算法,比如a*、Dijekstra、BFS、DFS

例如,让我们以BFS为例,它查找图的两个节点之间的最短路径。假设您的2d数组是一个图形,如果两个节点之间的距离为1,其中一个节点为a,第二个节点为B,则边处于启用状态。此处读取关于BFS的模式()


只需从矩阵构造图并为图实现BFS,或者只需为数组实现BFS

这是否需要在映像上实现@David无疑是解决这个问题的一种方法(另一种可行的算法可能是)。你应该告诉我们你到底在哪里被卡住了(如果是代码问题,那么就显示你到目前为止已经得到的代码),但我想这是与图表的布局有关的。基本上你可以假设,如果两个相邻的单元格具有相同的值,那么它们之间就有一道“墙”,所以图形的边只能在具有不同值的相邻单元格之间。我正在尝试用JavaJust implement实现它。那么你尝试了什么?关于这个话题有很多页。