データ構造(XI)の文字列

、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カープ・ラビンアルゴリズム:ハッシュ

デジタルオーバーフロー

 

 

ハッシュ圧縮

 

 ハッシュ衝突

 

 快速指纹计算

 

おすすめ

転載: www.cnblogs.com/aidata/p/11584445.html