n维图案匹配


20

在n维数组中找到精确的n维子数组有哪些已知结果?

在1D中,这只是一个字符串匹配问题,KMP在线性时间内完成。

在2D模式下,本文显示了它可以在线性时间内完成,几乎没有多余的空间。

对于任何固定尺寸,是否可以在线性时间最坏情况下解决此问题?

Answers:


13

您可以通过扩展1977年http://www.sciencedirect.com/science/article/pii/0020019077900175上的Bird的线性时间原始解决方案来解决固定数目的问题(可惜需要订购)。

总体思路(在2D模式下)是在第1步中,建立2D模式行的Aho-Corasick自动机,然后将2D文本行逐一输入。然后,您将在文本中找到模式行匹配的所有位置。要完成此操作,现在只需要使用KMP进行一维搜索即可在步骤1的输出中的一列中以正确的顺序搜索模式的行(的标签)。这全部花费线性时间。

使用相同的方法,您可以将任何维数d的精确匹配问题减少到维数d-1的问题。这样,您可以获得任何固定维d的线性时间解。


9

使用FFT技术可以在几乎(高达多对数因子)线性时间内解决它。您可以在以下纸张上查看:http : //www.cs.tau.ac.il/~klim/papers/CEPR08.pdf,其中我们将FFT技术用于一维模式匹配。如果要解决多维模式匹配,则只需使用高维FFT。


鉴于该论文来自2008年,我假设线性时间算法尚不为人所知。
徐超

我仅作为示例说明了可以用来解决您的问题的技术。这种方法的优点是,它还使您可以解决不匹配且无关紧要的问题。但是,对于精确的一维模式匹配,存在线性时间算法。因此可能是多维的。
Klim

1
我认为使用通配符进行模式匹配的基本结果来自Fischer和Paterson 1974,然后不断进行调整和简化,直到cs.bris.ac.uk/Publications/pub_master.jsp?id=2000602(对自引的道歉)。但是,鉴于我在下面提到的较旧的精确匹配方法,对于OP提出的问题,这可能有点过大。
拉斐尔,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.