在矩阵匹配模式中查找孔的矩阵算法

时间:2019-04-10 03:29:19

标签: algorithm math matrix

我正在开发一个试图将各种形状的块组装成尽可能紧凑的矩阵的应用程序。我正在寻找可以将两个大小不同的矩阵“和”在一起并返回第二个矩阵适合的第一个矩阵右上角位置的现有算法。

例如: 矩阵A:

[1,0,1,1,1]
[1,0,0,1,1]
[1,0,0,1,1]
[1,1,0,0,1]
[1,1,1,1,1]

矩阵B:

[1,0]
[1,0]
[1,1]

矩阵B可以在矩阵A中容纳2个位置-(0,1)和(1,2)。 我可以使用蛮力方法来做到这一点(展开矩阵B以匹配矩阵A的大小,对矩阵A求逆,然后将它们“与”在一起。向右滑动矩阵B,然后向下滑动,直到表示出形状的每个可能位置)。凭直觉,似乎应该有一种使用某些矩阵库或公式来实现相同目标的更有效方法。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Baker-Bird算法(假设它是KMP算法在二维上的扩展)。 请查询该主题,在这里您可以找到更多说明:2D String Matching: Baker-Bird Algorithm