T(n)=1+2+3+...+n
の複雑さは何ですか?答えはO(n^2)
です。ランタイムT(n)
を持つアルゴリズムの例は何ですか?1 + 2 + 3 + ... + n sumアルゴリズムの例
EDIT:私は1 + 2 + 3 + ... + nの合計を計算することについて話していませんでした。
T(n)=1+2+3+...+n
の複雑さは何ですか?答えはO(n^2)
です。ランタイムT(n)
を持つアルゴリズムの例は何ですか?1 + 2 + 3 + ... + n sumアルゴリズムの例
EDIT:私は1 + 2 + 3 + ... + nの合計を計算することについて話していませんでした。
関数の成長の順序は、完了するために必要な操作の数と関係があります。 O(n)を持つ関数の例は、あなたが質問で言及した関数の遅いバージョンです。 Pythonで:
これは、完了に要する時間がnに基づいて線形になるため、O(n)になります。
質問で例として挙げた関数は、n(n+1)/2
という操作を1回だけ行うだけで、実際はO(1)です。 n(n+1)/2
を計算するのに要する時間は、バーのバックエンドクォークを変更することはありませんが、このような場合には、実際にははとなりません。
問題は合計を計算するのにどれくらいの時間がかかったのではなく、関数T(n)をbig-Oとして漸近的に表現することでした。 – interjay
質問が編集されました。結果を計算するためのO(n^2)の(誤った)仮定に対する代替的な例についてでした。記述された例の結果は、O(1)で計算することができます。これは、真の正しい代替方法です。あなたが本当にそれを望むなら、O(n)は自明です:ちょうどループと和。 T(n)= 1 +(1 + 2)+(1 + 2 + 3)+ ... +(1 + 2 +3 + ...)ではないので、O+ n)ですが、今では、すでに解決されている数学ではなく、意味論を主張しています。 –
@ SteveHarris質問の意図は、編集の前後で同じでした。 T(n)はアルゴリズムではなく、別のアルゴリズムの実行時間です。問題はどのアルゴリズムがT(n)の実行時間を有するかを尋ねる。そして、問題は、T(n)がO(n^2)のクラスにあるということで正しい。 – interjay
ランタイムT(n)を持つアルゴリズムの例を教えてください。
あなたはn
回とi
は、外側のループの指標であるi
回反復し、内側のループを反復する外側のループを持っている場合は、内側のループの本体はT(n)
回実行されます。
以下のアルゴリズムであろうそのようなネストされたループの例:
1
1 2
1 2 3
Upvotedですが、 'print" $ j "'が〜log_10(j)文字を出力するので、議論の余地があります。 1文字を基本操作として出力するとカウントすると、その例はO(n^2 log n)になります。何が印刷されていても、print文をO(1)と見なすと、O(n^2)になります。 –
@PaulHankin私は、内側のループのボディが 'T(n)'回実行されていると主張するだけで、私はその点で私のお尻をカバーしたと思うのですが(確かに尋ねられたものではありませんでした);-)その問題を解決できます"$ j"の代わりに "*"を印字してください。それは実際に宿題のより一般的な変形であるかもしれません。 – sepp2k
:共通の宿題に溶液であり、以下の形状の数ピラミッドを印刷
for i from 1 to n
for j from 1 to i
print "$j "
print "\n"
挿入ソートでは、最悪の場合、有界時間ステップであるT(n)=1+2+3+...+n
が必要です。選択ソートでは、毎回多くの手順が必要ですが、一般的ではありません。
@ sepp2kは素晴らしい答えを与えるが、ここではその最悪のケースで
Insertion Sort(したがって、私たちはこのようなアルゴリズムO(n^2)
と呼ばれる)T(N) = 1+2+3+...+n
があり、いくつかの実際の生活のアルゴリズムである: をそれは外側のループを持っていますループn
回、内部ループの場合は配列のソートされた部分をループして次の要素を挿入する位置を探します。ソートされた部分は外側ループの繰り返しごとに1ずつ増加するため、最悪の場合の内側ループは1+2+3+4+..+n-1
回
i
のために、私たちは素朴な実装を使用して、すべての
j
<
i
Interval Graph Coloring(インターバル・パーティション)を介して見ている漸化式 の直接実装:naive implementationを使用して
Longest Increasing Subsequence(LIS)各間隔x
の場合、x
と矛盾するまでにいくつの間隔を見つけなければならず、問題の答えは最大矛盾番号です。だから、外側のループは、各区間i
をループしている間に、内側のループは、ナイーブ素数判定テストを使用して、すべてのj
< i
Prime Generatingのためにループしている:もちろん、我々は内のすべてのi
にナイーブ素数判定テストを使用して、n
内のすべての素数を生成することができますn
。それはj
がi
を分けるかどうかを確認するために、すべてのj
< i
ため、我々ループ、すべてのi
のために、ある確かに多くのアルゴリズムは、このような構造を含む、と私は見ているそれらのほとんどが使用することによって改善することができるがありますより鮮明なアルゴリズムまたは高度なデータ構造。
algoriothms任意プライム篩を用い
私はこれを計算で一度行ったことを覚えています。この合計1 + 2 + 3 + ... + nはn(n + 1)/ 2と等しく、乗算を実行するとO(n^2)。私が間違っている場合は私を修正してください。 – Kamoukou
'n(n + 1)/ 2'は単に' O(1) 'の定数です。ここでは 'n!= O(n)'をクリアするために、実際の数 'n'を参照しています。 –