找到转换矩阵的最小操作数

时间:2014-03-27 13:22:31

标签: algorithm matrix

我坚持这个问题:

  
    

给定2平方矩阵 M 1 M 2 维度 m 并且包含正整数,通过在 M 1 上应用此操作将第一个矩阵转换为第二个矩阵:如果它们的和为素数,则在相邻单元格中交换整数。打印所需的最少操作数。

  

有关如何解决此问题的任何提示?

如果有人在编程网站上遇到过这个问题,请指出。我忘记了我在哪里读到这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下的移动是可逆的,即如果你可以在矩阵上进行交换,那么你可以在之后进行反向交换。因此,如果给出两个矩阵M1和M2,降低广度优先搜索复杂度的一种方法是同时从M1和M2进行广度优先搜索,一次一步,并对搜索中获得的矩阵进行哈希处理然后在第一次找到可从M1和M2到达的矩阵时找到最小路径。这需要稍微调整一下,因为最小路径长度可能是奇数或偶数,但基本思路很简单,它可以将总搜索空间复杂度从N减少到N ^(1/2)以找到答案。