【问题标题】:minimum cost to connect all matrix cells in JAVA在 JAVA 中连接所有矩阵单元的最低成本
【发布时间】:2016-11-21 12:31:58
【问题描述】:

我有如下矩阵:

 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 的价值。

那么连接所有 -1 的最低成本是多少。

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

提前致谢。

【问题讨论】:

    标签: java algorithm matrix data-structures


    【解决方案1】:

    这是一个经典的搜索问题。

    阅读有关不同搜索算法的书籍/文章,然后确定适合您的需求。 (如果速度并不重要,请以最简单的方式实施)。

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

    • 深度优先搜索
    • 呼吸优先搜索
    • A*搜索

    他们都会找到最便宜的解决方案,但运行时和内存使用情况可能会有很大差异。

    对于所有这些,您都可以在 wikipedia 上找到有关优点/缺点、伪代码以及您需要的一切所需的所有信息。

    【讨论】:

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