この質問は宿題に出てきました。私はなぜそれを知ることができないのですか?最適な実行時間を生成するアルゴリズムを常に選択したいと思うようです。同じタスクのΘ(n)時間アルゴリズムに対してΘ(n log n)時間アルゴリズムを使用することを選択する理由
0
A
答えて
2
Big OとBig Thetaの表記は、任意に大きな入力サイズの場合、パフォーマンスがいくらか限界に向かう傾向があることを暗示しています。たとえば、関数99999999nはO(n)ですが、関数(1/9999999999)n^2はO(n^2)です。しかし、妥当なサイズの入力(無限大ではない)に対して、O(n^2)関数は明らかに高速である可能性が高い。
つまり、入力データについて仮定することができれば、一般的に悪化したアルゴリズムがより良い結果を示す場合があります。
上記の概念の実際の例はソートです - 配列が既にソートされている場合(バブルソート)にO(n)時間で実行するアルゴリズムがあります。すでに多くの配列がソートされていることがわかっている場合は、この理由でバブルソートとマージソートを使用することを選択できます。
さらに時間効率の良いアルゴリズムを使用したくない別のコーナーケースは、スペース効率です。たぶん、ごくわずかなRAMで組み込みデバイスでプログラミングしているかもしれません。できるだけ完全に時間効率的であるよりもむしろメモリと廃棄物を少し使います。
関連する問題
- 1. 証明Θ(n)+ O(n^2)≠Θ(n^2)
- 2. k <nのアルゴリズム実行時のlog(n)対log(k)
- 3. O(n log n)時間内に特別な点kを見つけるアルゴリズム
- 4. アルゴリズムを証明するには総和表記法を使用してΘ(log n)ですか?
- 5. アルゴリズムの時間複雑度 - nまたはn * n?
- 6. 時間複雑度がO(sqrt(n)* log(n))のアルゴリズムはありますか?
- 7. Θ(n)で実行されるアルゴリズムの検索への提案?
- 8. n≠Θ(logn)ですか?
- 9. もしT(n)=θ(n^2)がT(n)= 0(n)ならば?
- 10. このコードの実行時間は?それはn log nかnですか?
- 11. N個のデータストリームを時間ソートするアルゴリズム
- 12. O(1)、O(n log n)、O(log n)の複雑さを持つアルゴリズムの例
- 13. 床(√2n)のO(log log n)アルゴリズム?
- 14. 2つの配列を比較するためのO(n)時間とO(n)空間のアルゴリズム
- 15. このアルゴリズム(n^2)*(n^2 + 1)/ 2(つまりO(n/4))の実行時間はなぜですか?
- 16. O(n log n)時間での線配置の境界ボックス
- 17. JavaでLinkedListを反転するこのアルゴリズムがθ(N)に合わないのはなぜですか?
- 18. O(log(n))の時間間隔でカウントする
- 19. アルゴリズムの漸近解析:時間nでソートされたリストnにk個の新しい要素を挿入する方法O(k log k + n)
- 20. は、このアルゴリズムの漸近時間の複雑さです。O(log n)? Pを見つける
- 21. n^2 + T(n-1)に対して、この単純なアルゴリズムT(n/2)+1の最悪の場合の時間の複雑さはなぜですか?
- 22. rのデータフレームの時間(n + 1) - 時間(n)の違い
- 23. アルゴリズムの実行時間を関数F(x)=√n+(logn)^ 2として表すことができる場合
- 24. n^2 * log(n)時間に4つの数字を持つ3sumの変形?
- 25. Count(A、B、n)アルゴリズムのBig-O(O(n))およびBig-Omega(Ω(n))時間の複雑度
- 26. このアルゴリズム(nまたはlog(n))の空間複雑度はどれくらいですか?
- 27. N個のタスクとオーバーラップする時間をチェックするためのより良いアルゴリズム
- 28. SwiftのO(log n)時間の中間の数字
- 29. このアルゴリズムの実行時間T(n)はどれくらいですか?
- 30. コンピューティングは、私は、再帰的アルゴリズムの平均処理時間T(n)を決定することを望む
この詳細な対応をありがとうございます。たくさんの意味があります。また、あなたがフォローアップに答える気にならないなら、私の教授。ビッグシータは「ベストケースの最悪ケースタイム」と表現することができます。これを別の言葉で説明できますか?私の理解は、大きなシータが最悪の場合の入力サイズの下限であるということです。しかし、私は聞いたことをちょうどparattingと私はそれが意味するものを確認していません。 – mdm508
@ mdm508 Big Oは最悪の場合の時間の複雑さであり、大きなOmegaは最良の場合の時間の複雑さです。ビッグシータは両方の組み合わせです - 何かがθ(n^2)ならば、最悪の場合と最良の場合の両方で、関数k(n^2)によって上下に制限されることを意味します。ここでnは任意に大きいkは任意の定数である。あなたの教授がそれを「最悪の場合の最良のケース」と呼んだのは、私が推測していることです。これがアップヴォートを助け、受け入れられた答えが大いに評価されるならば。 – nhouser9
@ mdm508心配しないでください - 私の説明がどんな場合でも助けてくれることを願っています。 – nhouser9