二维整数数组中的非精确模式搜索算法

问题描述 投票:0回答:0

这个问题类似于 2D 模式搜索算法 但提供的链接无法访问。

给定一个 m*n 数组 T 和 u*v 数组 P,u ≤ m,v ≤ n,0 ≤ P[i][j] < q, where q is a positive integer. 0s in P can be an arbirtary integer in T if P lies in T. For example:

q = 10
P[3][3] = {{2, 3, 0},
           {0, 1, 5}
            9, 0, 2}}
T[5][5] = {{2, 3, 4, 3, 6},
           {4, 1, 5, 7, 8},
           {9, 1, 2, 3, 1},
           {2, 4, 5, 1, 5},
           {3, 1, 9, 0, 2}}

我正在寻找的算法应该给出 (0,0) 和 (2,2),因为找到了模式并且 T 中的任何数字位于 P 中的 0 上都不会影响输出。

除了搜索 P 和 T 中每个单元格的朴素解决方案外,还有其他算法吗? 我遇到过 Rabin-Karp 算法,但考虑到了 0。

用 Java 实现会很棒。其他语言也可以。 任何帮助将不胜感激。

java algorithm pattern-matching
© www.soinside.com 2019 - 2024. All rights reserved.