查找给定矩阵的子矩阵

查找给定矩阵的子矩阵,第1张

查找给定矩阵的子矩阵

算法对4×4矩阵和2×2子矩阵进行了硬编码。否则,它看起来像蛮力算法。

我会这样表示:

outerRow:for (int or = 0; or <= a.length - b.length; or++) {    outerCol:    for (int oc = 0; oc <= a[or].length - b[0].length; oc++) {        for (int ir = 0; ir < b.length; ir++) for (int ic = 0; ic < b[ir].length; ic++)     if (a[or + ir][oc + ic] != b[ir][ic])         continue outerCol;        System.out.println("Submatrix found at row " + or + ", col " + oc);        break outerRow;    }}

如果您想要更有效的方法,建议您将它们压扁,如下所示:

{ 2,3,5,7, 5,8,3,5, 7,6,9,2, 3,8,5,9 }

并在此序列中搜索以下模式:

{ 9,2, _, _, 5, 9}

使用标准的查找子字符串技术,例如Aho-
Corasick
或Knuth-
Morris-
Pratt算法

。(请注意,您必须跳过一些索引,以避免在序列中间出现新行的情况下误报。)



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5506664.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-13

发表评论

登录后才能评论

评论列表(0条)

    保存