誰も私に最悪のケース "テキスト文字列 - パターンのペア" KMPアルゴリズムの実装をテストすることを提案できますか?KMP文字列検索アルゴリズムの最悪のケースは何ですか?
答えて
役に立てば幸い、それはまだO(m+n)
'O(n + m)' – davin
@davin right、corrected –
不一致が発生するたびに接頭辞 - 接尾辞照合テーブルに従ってパターン文字ポインタを左にシフトします。答えの例では、すべてのy文字が一致していないと判断し、パターン1の文字ポインタを一度に左にシフトし続けます。テキストにc1のx文字とc2のy文字がない場合、比較の合計数は(c1 + c2 *パターンサイズ)になります。私は正しい? –
あなたはここにKMPアルゴリズム上で何かを見つけることができます。
クイックエキス:
クヌース、モリスとプラットは、以下のことにより、第1の線形時間文字列マッチング アルゴリズムを発見ナイーブなアルゴリズムの緊密な分析 Knuth-Morris-Prattアルゴリズムは、テキストのスキャン中にナイーブなアプローチ が浪費されたという情報を保持します。 情報のこの無駄を回避することにより、最悪の場合には という最適なO(n + m)の実行時間を達成します。 最悪の場合、Knuth-Morris-Pratt アルゴリズムでは、テキスト内のすべての文字と少なくとも パターンを調べなければなりません。
アルゴリズムについて理解しているものを鎮静化し、必要なものを見つけることができます。
は私が
xx........x
| n times |
ようなパターンと
xxx.........xyx...........xy....
| n-1 times | | n-1 times |
のような文字列は、最悪のケースの一つだろうと言うでしょう、それは
- 1. KMP文字列検索のアルゴリズムですか?
- 2. KMPパターン検索アルゴリズム
- 3. 文字列検索アルゴリズム
- 4. 検索文字列アルゴリズム
- 5. 文字列検索アルゴリズムの実装
- 6. ArrayListのバイナリ検索アルゴリズム/ソートは文字列ですか?
- 7. Rabin-Karp文字列検索アルゴリズム
- 8. KMPアルゴリズムのプレフィックステーブル
- 9. 検索最大[文字列、セット[のMyStuff]
- 10. 凸包を計算するギフト・ウェッティング・アルゴリズム(Jarvis's Algorithm)の最悪のケースは何ですか?
- 11. 特定の文字列のすべての出現を見つけることが目的の場合、KMPの最悪の複雑さは何ですか?
- 12. 文字列の最後の文字を検索する
- 13. 文字列の文字列の検索
- 14. 最適点検索アルゴリズムの検索
- 15. 2のべき乗を扱っていない場合の最悪の場合バイナリ検索の最悪ケース
- 16. 文字列のdjango検索文字列
- 17. バイナリ検索での悪いケースのシナリオについて
- 18. 別の文字列で文字列を検索するには?
- 19. 最も最近のファイルの文字列を検索するバッチファイル
- 20. VBAの文字列比較アルゴリズムとは何ですか?
- 21. 文字列の配列から文字列を検索する
- 22. 再帰的一致を返す文字列検索アルゴリズム - Java
- 23. 文字列の最後の単語を検索するSQL文
- 24. 複数のoccurencesのKMPアルゴリズム
- 25. 挿入ソート最悪のケース
- 26. 配列内の文字列を文字列で検索する
- 27. スプレイツリー最悪検索時間
- 28. 検索文字列
- 29. 検索文字列
- 30. ファジー文の検索アルゴリズム
ですKMPは線形のランタイムの複雑さを持っているため、最後にターゲットを持つ文字列は最悪の場合に実行されます。あなたの実装は多項式であり、すべての場合が線形時間で実行されます。 – davin
Knuth、Morris、Prattは、アルゴリズムの最悪のケースが $ \ phi_1 = bと定義されているフィボナッチ文字列であることを証明しています。彼らの論文では、 \ phi_2 = b、\ phi_n = \ phi_ {n-1} \ phi_ {n-2} $セクションを確認してください。5.論文の理論的考察。 –