
No.2ベストアンサー
- 回答日時:
> (1)
メインな文字列の検索処理についてみると、テキストの個々の文字について1回しか比較を行いませんから、O(N)になります。
ですが、KMPではその前にテーブルを作る必要があります。こちらの処理はO(M)になります。
両方あわせるとO(M+N)です。
> (2)
文字列検索をするためには、「テキストの全ての文字を調べる」必要があり、そのためには最低でもO(N)は必要です。
O(N)より小さい、O(log N) や O(√N) では、全ての文字を調べることができません。
同様に、検索パターンの方も全ての文字を調べる必要があるから、こちら側では最低でもO(M)が必要です。
つまり、両方あわせると、最低でもO(M+N)は必要、ということになります。
この回答へのお礼
お礼日時:2008/12/22 17:44
テーブルを作る処理と比較の処理を別々に考えたら納得できました。
(2)についてもとても分かりやすい説明ありがとうございます。
解決できました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数電卓をc言語でつくりたいの...
-
65536は2の何乗なのでしょうか?
-
Javaを使った行列計算
-
チェックデジット計算できる関...
-
VBAで関数をつくる
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
ファイルの開き方
-
Bluestacks内でダウンロードし...
-
正しい五十音順について
-
障害物回避プログラム
-
Windows7 搭載ノートPCにおける...
-
セーブの仕方を教えて下さい
-
XnViewにwebpを「いつも開く」...
-
☆★大学院入試のアルゴリズムに...
-
退化木をバランス木にしたい
-
何人目?
-
あるプログラムのコマンドライ...
-
未使用の変数を一括検索する方法
-
ホームページに口コミ機能を付...
-
socketでの複数NICの扱い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで関数をつくる
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
引き放し法による除算アルゴリ...
-
モジュラス103の計算とは何でし...
-
C言語についてです。 再帰を使...
-
スレッド処理からダイアログを...
-
階乗のマクロ
-
Perlで時間の計算
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
モジュロ
-
VBA入力フォームで労働時間の計...
-
三菱シーケンサー works2 の日...
-
Java 電卓の連続計算
-
パソコン
おすすめ情報