【发布时间】:2013-05-25 14:53:25
【问题描述】:
我有一个非常大的n*m 矩阵S。我想有效地确定S 内部是否存在子矩阵F。大矩阵S 的大小可以与500*500 一样大。
为了澄清,请考虑以下几点:
S = 1 2 3
4 5 6
7 8 9
F1 = 2 3
5 6
F2 = 1 2
4 6
在这种情况下:
-
F1在里面S -
F2不在内部S
矩阵中的每个元素都是一个32-bit 整数。我只能想到使用蛮力的方法来查找F 是否是S 的子矩阵。我搜索了一个有效的算法,但我找不到任何东西。
是否有一些算法或原则可以更快地做到这一点? (或者可能是一些优化蛮力方法的方法?)
PS统计数据
A total of 8 S
On average, each S will be matched against about 44 F.
The probability of success match (i.e. F appears in a S) is
19%.
【问题讨论】:
-
在您的示例中,矩阵 [1,3;7,9](即仅角)是否会被视为在 S 内?
-
不,它必须聚集在一个矩阵中
-
矩阵应该是连续的、聚集的。