データ構造とアルゴリズム

第十回 (2009年12月 11日)

文字列照合のアルゴリズム

http://www.sw.it.aoyama.ac.jp/2009/DA/lecture10.html

Martin J. Dürst

duerst@it.aoyama.ac.jp

AGU

© 2008-09 Martin J. Dürst 青山学院大学

目次

前回のまとめ

文字列照合の概要

長い文書の中に短いパターンを見つける

文字列照合の状況

素朴な実装

Rabin-Karp のアルゴリズムの概要

ハッシュ関数の工夫

Rabin-Karp のアルゴリズムの実例

パターン: 081205

文書: 28498608120598743297

 

 Excell による Rabin-Karp のアルゴリズムの例: ARabin-Karp.xls

Knuth-Morris-Pratt のアルゴリズムの概要

Knuth-Morris-Pratt のアルゴリズムの計算量

Knuth-Morris-Pratt のアルゴリズムの実例

 

 

 

Boyer-Moore のアルゴリズムの概要

アイディアの詳細

パターンの移動に二つの「目安」を使用:

  1. パターンの内部比較
    (Knuth-Morris-Pratt の「逆方向版」)
  2. 不一着の文書の文字のパターン内の最も右の位置

どちらかシフトが大きい方を使用

Boyer-Moore のアルゴリズムの実例

 

 

 

Boyer-Moore のアルゴリズムの計算量

文字列照合と文字コード

文字コードごとのバイトパターン

来年度への展望

まとめ