在JAVA中连接所有矩阵单元的最低成本

在JAVA中连接所有矩阵单元的最低成本,java,algorithm,matrix,data-structures,Java,Algorithm,Matrix,Data Structures,我有如下矩阵示例: int M[][]= new int[][] { {-1,-1, X, X, X}, {X ,-1, X, X,-1}, {-1, X, X,-1,-1}, {X , X, X, X, X}, {-1, X,-1, X,-1}

我有如下矩阵示例:

 int M[][]=  new int[][] {   {-1,-1, X, X, X},
                             {X ,-1, X, X,-1},
                             {-1, X, X,-1,-1},
                             {X , X, X, X, X},
                             {-1, X,-1, X,-1}
                         };
让我们假设我们想要将所有矩阵单元连接为-1。这里X有一些值,对于所有单元可能不同。如果相邻的任何一个邻居是-1,我们可以说-1是连通的。所以要连接所有的-1,我们必须把X变成-1。但是这有一些成本,这就是X的值

那么连接all-1的最低成本是多少呢

因此,有人可以建议我我们可以使用什么算法以及如何实现它


提前谢谢

这是一个经典的搜索问题

阅读一本关于不同搜索算法的书/文章,并决定哪种算法适合您的需要。(如果速度并不重要,则采取最容易实施的方法)

以下是您可以考虑的一些候选人:

  • 深度优先搜索
  • 呼吸优先搜索
  • A*搜索
它们都会找到最便宜的解决方案,但运行时和内存使用可能会有很大的不同


对于所有这些,你都可以在维基百科上找到关于优缺点、伪代码和所有你需要的信息。

嗯,你说得不太对。这是寻找最小生成树的问题,而不是寻找最短路径的问题。@Paul:我在回答中提到的搜索算法可以用来解决任何在每一步中有有限个选择的搜索问题。因此,您可以使用它们来查找最小生成树(即使有针对此问题的更快的特定算法),也可以查找最短路径以及解决许多其他搜索问题。因此,您想使用DFS或任何其他算法来搜索问题的解决方案吗?好吧,那是可行的,但与最小生成树算法相比效率很低,而且你在回答中没有明确说明。@Paul:我不确定生成多重图的所有可能边是否比运行最小生成树算法简单。但是-1岛之间的图有很多可能的边要生成。那么,如果矩阵很小,为什么不进行简单的搜索呢?