、ADT
定義
用語
ADT
B1文字列マッチング
アルゴリズムの評価
B2ブルートフォース一致
バージョン
バージョン2
複雑
c1KMPアルゴリズム:メモリからの力を予測します
ブルートフォース、なぜ非効率的
多くは、比較することはありません
不変性
限りメモリが十分に強いと
力へのメモリが予見します
c2KMPアルゴリズム:ルックアップテーブル
事前トンに決定
アルゴリズム
例
下記のルックアップテーブルを、対応するパターン文字列、終わりから3番目の文字は、J = 7をランク付けし、ルックアップテーブルは、3次です
主な文字列は、あなたがこのエントリにオンにした場合、以前の7つの文字よりも現在のラウンドが成功していることを示す、役割を果たしています
次のようにその場合のシナリオ、すなわちL字パターン文字列であり、テキスト文字列は、文字の位置合わせ不良Lはありません
モード文字列のスナップショットを取る前より
KMPアルゴリズムは手動で実行、現在J = 7、ポインティングモードLの文字列、次の、KMPを取り出すに対応する[7}ルックアップテーブルであり、jを更新するためにそれを使用し、このアイテムは3次、 L nに置換された次順位の文字3を、使用しており、このようなテキスト文字列不一致の前の文字で整列されていきます。
スナップショットモードでは、文字列のために別のものを作ります。
2つのスナップショットの後、4つの右に文字のパターン文字列を移動する前にして、3つのアライメント位置がKMPを除きます
C3 KMPアルゴリズム:次に理解[]テーブルその
試合から高速右=
必要条件と、負のアライメント位置
右の最長一致から=高速+ロールバックを避けます
次の[0] == 1
センチネルの賢い利用、コードを簡略化することができ、理解を統一
C4 KMPアルゴリズム:次の構造[]テーブル
再発
実現
C5 KMPアルゴリズム:配分分析
C6 KMPアルゴリズム:さらなる改善
反例
改善します
障害:ブルートフォース
障害:KMP
複数の文字上の複数の文字
D1 BMアルゴリズム:悪いキャラクター
トリートレッスン
レッスンにもっと注意、それは先に見えるようにする、より多くの以前の出現
元ライトヘビー後
Endで始まります
悪い文字
BC構成[]テーブル
ベストケース
最悪の場合
教訓を十分に活用、活用への経験はありません
E1 BM_GSアルゴリズム:グッドサフィックス
経験が接尾辞にマッチしました=
良い接尾シフト
例
E2 BM_GSアルゴリズム:建設GSテーブル
MS [] - > SS []
SS [] - > GS []
建設SS []
E3 BM_GSアルゴリズム:全体的なパフォーマンス
演奏
概要
F1カープ・ラビンアルゴリズム:で、文字列の数
すべてのものは数字です
また、文字列の数
F2カープ・ラビンアルゴリズム:ハッシュ
デジタルオーバーフロー
ハッシュ圧縮
ハッシュ衝突
快速指纹计算