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

第十回 (2008年12月 5日)

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

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

Martin J. Dürst

duerst@it.aoyama.ac.jp

AGU

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

目次

先回のまとめ

文字列照合の概要

文字列照合の状況

素朴な実装

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

ハッシュ関数の工夫

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

パターン: 081205

文書: 28498608120598743297

 

 

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

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

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

 

 

 

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

アイディアの詳細

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

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

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

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

 

 

 

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

文字列照合と文字コード

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

来年度への展望

まとめ