私は、AND演算子とOR演算子とワイルドカードを持つパターンの文字列のリストを持っています。入力文字列が与えられたら、パターンと一致する場合はtrueを返し、一致しない場合はfalseを返します。文字列をいくつかのパターンにマッチさせる最速の方法
私は 'n'パターンと長さ 'm'のクエリを持っています 今、明白な方法は、文字列の各パターンに対してループとgrepを実行することです。これにはO(nm)時間がかかります。
今、私の質問は、より良いことが可能なのでしょうか?多分私は、ある種の表現評価有限状態機械を考えていたでしょうか?そのようなものの名前/参照の実装はありますか?
ありがとうございました
(最近のCPUは、ループがオンチップメモリに収まり、分岐予測が可能な場合には、特に線形データ構造上で高速にループしていることに注意してください)、メモリアクセスのためにポインタに追従してオフチップに移行する速度がはるかに遅くなります。あなたが何をしようとしても、ダムでブルートフォースのアルゴリズムに対してベンチマークを行うべきです。 –
すべてのパターンからマージされた検索を処理する有限状態マシンを作成できます。 RegExをFSMに変える方法については、http://stackoverflow.com/questions/525004/short-example-of-regular-expression-converted-to-state-machineを参照してください。 –