2012-01-31 16 views
0

可能性の重複は:Find nearest number in unordered array
Big O, how do you calculate/approximate it?
Plain English explanation of Big O検索/方法の複雑さを計算

は、私はこの質問を見ました。答えでは、人々は彼らが提案しているアプローチの複雑さを話しています。彼らはどのようにそれを計算するのですか? O(n)またはO(logn)とはどういう意味ですか?方法/プログラムの複雑さの発見/計算方法

+6

http://en.wikipedia.org/wiki/Big_O_notation –

+2

参照:[Big Oのプレーンな英語の説明](http://stackoverflow.com/questions/487258/plain-english-explanation-of-big- o)と[Big O、あなたはどのように計算/近似していますか?](http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it)。 –

+0

これは、実装方法を知り、経験的に見積もることができ、アプリケーションが現実的なデータでどのように動作するかをテストし、異なる結果を得ることができます。 Big-Oは、作業量が増えるにつれてアルゴリズムの複雑さを比較する方法です。 Big Oを理解することは有益ですが、ストーリー全体を教えてくれるわけではないことにも注意してください。 –

答えて

2

複雑さは、あなたのアルゴリズムがn個の同様の要素で動作する場合に意味があります。そして、nの変化に応じて時間がどのように変化するかを述べています。したがって、nが2倍に上昇し、時間が2倍になると、複雑さはO(n)になります。

(n^2 + 2000n)のように時間が上がると、複雑さは再びO(n^2)となります。この理論では、アルゴリズムの他の定数より大きいnの大きな値についてのみ考えます。だから、理論は必ずしもあなたの必要に合っているわけではありません。それはアルゴリズムの理論の問題ではなく、重要な細部に注意を払わないことが多いアプリケーションの問題です

あなたはどのように推測することができますか?まあ、同じ演算をn回実行する場合、nは配列要素の数です。ここではO(n)を使います。同じ操作を最初にn回、n-1回、n-2回、1回まで実行すると、複雑さはn +(n-1)+ ... + 1になります。それはn(n + 1)/ 2であり、それは再びconst * n + const2 * n^2です。だから、それはO(n^2)です。 nが十分に大きくなると、nは2倍になります。論理と算術。

0

これは既知であり、Big O Notationであり、与えられたアルゴリズムの計算時間の複雑さを見つけるために使用されます。 hereあなた自身のためにそれを計算する方法に関する簡単なガイドを見つけることができます。それはJavaではありませんが、時間の複雑さという概念は言語に依存しないので、うまくいくはずです。しかし、類似の名前を持つメソッドは、異なる言語間で異なる時間の複雑さを持つ可能性があることに注意してください。

1

短い答え:O()、o()などは、変数に応じて関数が大きくなる傾向を説明する表記です。例えば成長は関数内の最高多項式次数によって駆動されるため、f(x)= x^2 + x - 6 => O(x^2) この特定のトピックの詳細:Big O notation

長い答え:これらの表記法は、アルゴリズムと計算理論の研究の根幹です。あなたはそれについて素敵な本を読んでみたいかもしれません。 One of the most famous books on Algorithms out there

また、OpenMITはコース全体を無料で利用できます。非常に面白い!