文字の挿入置換除去に対応した検索とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 文字の挿入置換除去に対応した検索の意味・解説 

文字の挿入・置換・除去に対応した検索

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/09/12 03:39 UTC 版)

Bitapアルゴリズム」の記事における「文字の挿入・置換・除去に対応した検索」の解説

この図は、文字の挿入置換除去全て対応した本来のshift-and型Bitapアルゴリズムにおいて、state新しい値 state' に更新する時のデータフローである。 ここまで説明した挿入置換除去それぞれに対応したアルゴリズム使用したマスク全てORでまとめた形になっているstate[1] はレーベンシュタイン距離1(挿入置換除去いずれか1回のみ)の変更許容しており、state[2], state[3], ... で許容するレーベンシュタイン距離増やした検索可能になる。#実装例コードハイライト部分をこのフローに従って修正すると以下のようになる。 # 実際にtext照合させる distance = 2 # 許容するレーベンシュタイン距離 state = Array.new(distance + 1) {|i| (1 << i) - 1} # 状態遷移保持 ret = Array.new # マッチし位置をまとめるための配列 text.chars.each_with_index do |tc, i| rstr_mask = 0 # ビットを1にする位置を示すマスク state.each_index do |j| next_rstr = state[j] # state[j + 1]のビットを1にする位置 (挿入時用) state[j] = state[j] << 1 | 1 next_rstr |= state[j] # state[j + 1]のビットを1にする位置 (置換時用) state[j] &= mask[tc] state[j] |= rstr_mask next_rstr |= state[j] << 1 | 1 # state[j + 1]のビットを1にする位置 (除去時用) rstr_mask = next_rstr end if (state[distance] & finish) == finish # 最上位ビットが1である ret.push(i) # マッチし位置iを配列追加 end end 1文字置換レーベンシュタイン距離を2としたい場合は、 next_rstr |= state[j] # state[j + 1]のビットを1にする位置 (置換時用) の行を除去すれば良い。この行の処理がない場合、1文字置換は1文字挿入の後に1文字除去したものとして扱われレーベンシュタイン距離2とすることができる。 注意点としては、ある位置マッチ検出され場合、その位置前後でより悪い(レーベンシュタイン距離長いマッチ検出されることがある例えば、"abca" という文字列から "abc" というパターンレーベンシュタイン距離1以内探す場合、"ab"(末尾1文字除去), "abc"(完全一致), "abca"(末尾1文字挿入)の3カ所でマッチ検出されることになる。そのため、検出位置重要な場合対策必要になる。また開始位置わからないので検出位置からパターン文字列長さ発見された距離数分戻った位置からやり直し確定することになるが、この場合にも慎重に組まない直観とは異な位置開始位置として算出されることがある

※この「文字の挿入・置換・除去に対応した検索」の解説は、「Bitapアルゴリズム」の解説の一部です。
「文字の挿入・置換・除去に対応した検索」を含む「Bitapアルゴリズム」の記事については、「Bitapアルゴリズム」の概要を参照ください。

ウィキペディア小見出し辞書の「文字の挿入置換除去に対応した検索」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「文字の挿入置換除去に対応した検索」の関連用語

文字の挿入置換除去に対応した検索のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



文字の挿入置換除去に対応した検索のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのBitapアルゴリズム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS