n次元パターンマッチング


20

n次元配列内の正確なn次元部分配列を見つけるための既知の結果は何ですか?

1Dでは、これは単なる文字列マッチングの問題であり、KMPは線形時間でそれを行います。

この論文では、2Dで、余分なスペースをほとんど必要とせずに線形時間で実行できることを示しました。

この問題は、固定次元の線形時間最悪ケースで解決できますか?

回答:


13

1977 http://www.sciencedirect.com/science/article/pii/0020019077900175からBirdの線形時間の元のソリューションを拡張することにより、固定数の次元で問題を解決できます(悲しいことにサブスクリプションが必要です)。

(2Dでの)一般的な考え方は、ステップ1で2Dパターンの行のAho-Corasickオートマトンを構築し、2Dテキストの行を1つずつフィードすることです。次に、テキスト内でパターン行が一致するすべての位置を見つけます。これを完了するには、KMP sayを使用して、ステップ1の出力の列で正しい順序でパターンの行(のラベル)を1D検索するだけです。これにはすべて線形時間がかかります。

同じ方法を使用して、次元dの完全一致問題から次元d-1の問題に減らすことができます。この方法で、固定次元dの線形時間解を取得します。


9

FFT技術を使用すると、ほぼ(ポリログ係数まで)線形時間でそれを解決できます。論文をご覧くださいhttp : //www.cs.tau.ac.il/~klim/papers/CEPR08.pdfここで、1次元パターンマッチングにFFT技術を使用しています。多次元パターンマッチングを解決する場合は、高次元FFTを使用するだけです。


この論文は2008年のものであるため、線形時間アルゴリズムはまだ知られていないと思います。
チャオシュー

あなたの問題を解決するために使用できるテクニックの例としてのみそれを与えました。このアプローチの利点は、これにより不一致と気にしないという問題も解決できることです。しかし、正確な1次元パターンマッチングに関しては、線形時間アルゴリズムが存在します。多次元で知られているかもしれません。
クリム

1
ワイルドカードを使用したパターンマッチングの基本的な結果は、フィッシャーとパターソンの1974年のものであり、cs.bris.ac.uk / Publications / pub_master.jsp?id = 2000602(自己引用に対する謝罪)まで継続的に調整および簡略化されたと思います。しかし、私が以下で言及する古い正確なマッチング方法を考えると、OPが尋ねた問題については少しやり過ぎかもしれません。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.