[解決済み] どのようにすれば、ほとんどすべてのアルゴリズムを修正して、最良の場合の実行時間を持つようにできるか?
2022-02-06 20:43:12
質問内容
からの質問です。 アルゴリズム入門 Cormenらによるものですが、これは宿題の問題ではありません。その代わり、自習になります。
いろいろ考えたり、Googleで検索したりしました。思いつく答えは
- 別のアルゴリズムを使用する。
- ベストケースを入力させる
- アルゴリズムを実行するために、より良いコンピュータを使用する
しかし、これらは正しいとは思えません。アルゴリズムを変えることと、アルゴリズムの性能を上げることは同じではありません。また、より良いコンピュータを使えばスピードが上がるかもしれませんが、アルゴリズムが良くなるわけではありません。これは本の冒頭の質問なので、私が見落としている単純なことだと思います。
では、どのようにすれば、ほとんどすべてのアルゴリズムを修正して、ベストケースの実行時間を確保することができるのでしょうか。
どのように解決するのか?
どのようなアルゴリズムでも、最良の場合の時間複雑度が
O(n)
入力がこの特別なケースに一致する場合、キャッシュされたハードコードされた答え(または他の簡単に得られる答え)を返すという特別なケースを追加することによって。
例えば、任意のソートに対して、最良のケースを作ることができます。
O(n)
は、配列がすでにソートされているかどうかをチェックし、ソートされている場合はそのまま返します。
平均値や最悪のケースには影響しないことに注意してください。
O(n)
また、基本的にアルゴリズムの最良の場合の時間複雑性を向上させます。
注:入力の大きさが有限である場合、同じ最適化により、最良のケースである
O(1)
というのは、この場合の入力の読み取りは
O(1)
.
関連
-
[解決済み] 素朴な」アルゴリズムとは何か、「閉じた」解とは何か?
-
[解決済み] 定数時間や対数時間よりも、nやnlog(n)の方が良いのでしょうか?
-
[解決済み] ベルマンフォードとダイクストラの比較。どのような状況下でベルマンフォードが優れているか?
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] 再帰性 T(n) = T(n^(1/2)) + 1
-
[解決済み] 与えられた数列の中に現れない最小の正の整数を求めよ。
-
[解決済み] ヒープの構築はどうして時間計算量O(n)になるのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み] 3つのスタックを持つ待ち行列を実装するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン