1

知りたいのですが、最悪の場合の時間の複雑さを見積もっている場合、自分のマシン (たとえば 2.5 Ghz マシン) で プログラムを実行するのにかかる時間をどのように見積もることができますか? : - 最悪の場合、O(n^2) で n<100000 のプログラムがある場合、実際のプログラム/手順を作成する前に /estimate をどのように知ることができますか?秒?

プログラムが実際にどのように実行されるかを知ることは良いことではないでしょうか。また、最終的に非効率であることが判明するコードを書く手間も省けます! 大変助かります。

4

3 に答える 3

4

大きなOの複雑さは線形係数と小さな項を無視するため、その大きなOの複雑さだけを考えると、アルゴリズムのパフォーマンスを推定することは不可能です。

実際、特定のNについては、2つのアルゴリズムのどちらがより速く実行されるかを予測することはできません。

たとえば、100000000 * nステップをとるアルゴリズムはO(N)が、Nの多くの小さな値に対してN * Nステップをとるよりも遅いため、O(N)は常にO(N * N)より高速であるとは限りません。

これらの線形係数と漸近的に小さい項は、プラットフォームごとに異なり、同じ同値類のアルゴリズム間でも異なります(大きなOメジャーの観点から)。3

あなたが大きなO表記を使おうとしている問題は、それが解決するように設計されたものではありません。

于 2013-02-12T21:34:13.487 に答える
0

複雑さに対処する代わりに、Worst Case Execution Time(WCET) を参照することをお勧めします。この研究分野は、おそらくあなたが探しているものに対応しています。

http://en.wikipedia.org/wiki/Worst-case_execution_time

于 2013-02-12T21:56:30.123 に答える
-1

最も内側のループの反復に費やした時間で N^2 を乗算すると、概算の見積もりが得られます。

于 2013-02-12T16:39:21.630 に答える