このリンクの時間複雑度&についていくつかの講義を行っていたのですが、https://www.youtube.com/watch?v=__vX2sjlpXU著者は、入力サイズが小さい場合、多くの状況で定数が問題になると説明しています。親切小さな入力サイズの場合、定数は時間の複雑さに関係しますか?どうやって?
答えて
のが100Nおよび2N の実際の複雑さを持つ2つのアルゴリズムがあるので、彼らはO(n)とO(nは)しているとしましょうを説明します。 n = 2の場合、実行にはそれぞれ200および8CPUサイクルがかかります。しかし、nが50より大きい場合、100nアルゴリズムは常に2n アルゴリズムよりも優れた性能を発揮します。
このように、小さな入力の場合、Big Oはアルゴリズムの優れた判断基準ではなく、定数が入力に比べてかなり大きいときに重要な役割を果たします。 100 + nと、例のような2 + N の時間の複雑さに対処するとき
同様に、あなたは結果を理解することができます。定数の影響を追い越すほど大きくないnの値に対して、実際の実行時間は入力値nの代わりに定数によって支配されることになります。
100は定数ではありませんが、それは定数_factor_です。私はOP(とビデオ)はO(100 ** + ** n)のようなことについて話していると思うが、同じ議論がそこに適用される。 –
@tobias_k:ご意見ありがとうございます。私はビデオを見ず、質問についての私の直感を使って答えを書いた。あなたが指摘したことを今追加しました。 – displayName
時間複雑度の場合はと関係ありません。
しかし、大きな定数がある場合、プログラムは複雑であっても、複雑なプログラムよりも遅くなる可能性があります。どちらが自明であるかは、1 hour
のために眠っていると想像してください。あなたのプログラムは長い間、大きな定数を必要とします。しかし、定数は重要ではないので、その複雑さのクラスは良いかもしれません。
なぜ重要ではありませんか?複雑さのより悪いすべてのプログラムのために、彼らはしばらく遅くなる入力(大きな入力)があるので。ここで
は一例です。
グッド複雑O(1)
、遅いとにかく:速く
void method() {
sleep(60 * 60 * 1_000); // 1 hour
}
さらに悪いことに、複雑O(n)
、小さな入力用:
void method(int n) {
for (int i = 0; i < n; i++) {
sleep(1_000); // 1 second
}
}
ただし入力の場合n > 60 * 60
2番目の方法は遅くなります。
あなたは時間を実行し、実際に測定と時間複雑を混同してはならない、それは大きな違いです。
時間の複雑f in O(g)
の定義を参照して、およそ漸近境界である:
私は、アルゴリズムとその複雑さについて勉強していましたさて、私たちの教授は簡単に定数aは重要であると説明ロット。複雑性理論には、複雑さを説明するための2つの主な表記法があります。最初はBigO、もう1つは薄い表記です。
ヒープを使用して優先度キューを実装すると、最大要素を削除する場合は2lgN
、各項目に挿入する場合は1 + logN
となります。人々は実際には2logN
を削除してと書いていますが、それは正しくありません。なぜなら1+logN
は要素を挿入するためだけであり、要素を削除するとキュー(シンクと水泳)機能を再調整する必要があるからです。
~2logN
をO(logN)
と書いた場合、それは1つの機能の複雑さを数えていることを意味します。
参考までに、一部の一流大学では、教授のほとんどが~
表記を使用しています。
BigOは危険です。 Robert sedgewick and Kevin Wayneによって書かれた本は~
を使用し、なぜ彼がそれを好むかを説明します。
- 1. 入力のエンコーディング(時間の複雑さ)
- 2. C:qsort関数の時間の複雑さは何ですか?
- 3. ランダム入力の再帰関数の時間複雑度
- 4. 再帰アルゴリズムの時間複雑さと空間の複雑さはどのようなものですか?オペレーター?
- 5. 時間と空間の複雑さの場合(!areAllArrayElementsZero())
- 6. 漸近的な時間の複雑さ指数関数
- 7. 比較関数がO(1)でない場合、algをソートする時間の複雑さは何ですか?
- 8. 時間の複雑さは
- 9. 入力が文字列でない場合や特定の長さでない場合のPython関数のエラー
- 10. クイックソート最悪の場合の時間の複雑さ?
- 11. 複雑な関数と入力し、デリゲート
- 12. 再帰関数の時間と空間の複雑さを決定する
- 13. この関数の時間複雑度はどのように計算されますか?
- 14. MATLAB imresize()は、入力画像行列が実際に複雑な型の場合はどうしますか?
- 15. 無効なかっこの削除 - Leetcode時間の複雑さ
- 16. 時間の複雑さと
- 17. phpの入力タイプの時間フィールドからどうやって/ pmですか?
- 18. A *時間の複雑さとはどのようなものですか?
- 19. コンストラクタ/関数オーバーロードシグネチャの参照時間の複雑さ?
- 20. 再帰関数の時間複雑さの発見
- 21. 時間の複雑さ(入れ子にされたループ)
- 22. 次の関数の時間複雑度
- 23. どのようにこの時間の複雑さを決定する
- 24. "/ f179"はtwitterの小さな鳥アイコンとどう関係していますか?
- 25. スキーム内の 'assoc'関数の時間の複雑さは何ですか?
- 26. heapqライブラリの関数の時間の複雑さは何ですか
- 27. Javaで時間の複雑さが設定されている
- 28. ハッシュマップのサイズ変更時の複雑さ
- 29. 時間の複雑さと空間の複雑さ、空間の複雑さの計算方法
- 30. 配列関数の時間複雑度
bigOの基本的な概念は、漸近分析であり、n - > infを意味します。小さなNの場合;理論と実践の間のギャップは巨大になるかもしれません。 – sascha
@ NiteshSingユーザーがあなたの質問に答えた場合は、彼の答えを受け入れてください([回答を受け入れて:どうしますか?](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-作業))。そうでない場合は未回答のものを指定してください。これはStackOverflowの重要な部分です。ありがとうございます。 – Zabuza
@ Zabuza:それを指摘してくれてありがとう。私はそれをしました。 –