文字列探索
出典: フリー百科事典『ウィキペディア(Wikipedia)』
2014年6月13日 (金) 18:34時点における220.107.134.252 (トーク)による版
文字列探索 (もじれつたんさく) とは、ある文字列の中から、別のある文字列を探索することである。テキストエディタ等で必須の機能であり、これまでさまざまなアルゴリズムが考案されている。
ここでいう文字列とは、ある定まった文字集合の要素を任意に並べた系列のことである。通常、文字はアルファベット等の言語に依拠した文字セットを指すことが多いが、生物情報学における染色体の塩基配列A, T, G, Cの4文字を対象とするもののように、特定の領域に特化した応用も行われている。
正規表現にマッチする文字列の探索、と類似した問題だが、正規表現で可能なパターンに比べ検索対象を絞ることで、より高速に探索するものとして研究されている(ユーザの使うプログラムでは、検索するパターンに応じて、アルゴリズムを切り替えるものもある)。正規表現による探索については正規表現の記事を参照のこと。
近年は、暗号化された文字列を復号せずに探索する秘匿検索、圧縮テキスト中の文字列探索の研究、多国語文字列のバイト列表現に対する探索の研究、なども行われている。
各種アルゴリズム
- クヌース-モリス-プラット法
- ボイヤー-ムーア法
- Quick Search法 ボイヤー-ムーア法の亜種の一つで、さまざまな亜種のうちもっとも簡単で、かつ高速。
- エイホ-コラシック法
- ラビン-カープ法
- Bitapアルゴリズム(shift-and, shift-orなどでも知られる)他Bit-parallel手法