2012-04-30 5 views
1

私はこれらの2つの質問を持っています。私はどのように答えをするかを理解していると思います(質問の後の答え)。私は時間の複雑さの計算とBigOを見つける方法を理解しているかどうかを見たいだけでした。
汎用フォームは、式の右側の各値の単なる積です。
BigOは多項式で最大のパワーです。この考え方は正しいのでしょうか?Big-Oと一般的な時間単位ですか?

int sum = 0; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < n * n; j++) 
     for (int k = 0; k < 10; k++) 
     sum += i; 

このコードでは、いくつの汎用時間単位が使用されますか? n(n^2)* 10 このコードの実行時間はどれくらいですか? O(n^3)

答えて

1

はい。基本的にbig Oの定義では、時間単位(あなたが呼んだとき)は上から、ある(任意に高い)自然数から無限大に至るまでの一定の時間によって境界が定められていると言います。より数学的な記法では、これは次のようになります。f(n)< C * g(n)となる定数Cと数Nが存在する場合、関数f(n)はO(g)すべてのn> N.

f(n)= n(n^2)* 10かつg(n)= n^3です。

また、関数がO(n^4)であると言うこともできます。大きなシータ記号を使用して、これも下限であることを示すことができます.f(n)は$ \ theta(n^3)です。

は、ここではこれに関する詳細を参照してください:https://en.wikipedia.org/wiki/Big_O_notation私はそれが対数だった場合、私はそれだけでなく、それを理解していなかったと思いまし

1

はい、あなたの理解は正しいです。しかし、時には対数項を扱わなければならないこともあります。 対数項を見る方法は、n ^(1 +ε)と見なすことができます。 εは少量です。

+0

興味深いです。 – LF4

+0

@ LF4:まあ、ここでは素朴な説明です。あなたはlog(n)がO(n)とO(n^2)の間にあることを知っています。私たちがやる方法は、log(n)をn ^(1 + e)として取ることです。ここで、eは非常に小さい量です。これはすべてを離れて説明します。 – Apurv

関連する問題