for i=1 to n^2
for j=1 to i
// some constant time operation
私はO(N^4)を言いたいが、私は確信することはできません。これをどのように把握していますか?
for i=1 to n^2
for j=1 to i
// some constant time operation
私はO(N^4)を言いたいが、私は確信することはできません。これをどのように把握していますか?
n^4が正しいです。 i
はn^2まで直線的に上がり、(n^2)回実行されるため、内部ループは(n^2)/ 2回の平均実行時間を要します。
ああ、欠けているリンクです:内側のループの平均時間は(n^2)/ 2です。ありがとう、それは理にかなっている。それはまた私が犯した数を確認します。 – styfle
あなたは正しいですか、それはN^4
です。
置換を行うM = N^2
今すぐあなたのループはこれに変更します。
for i in 0..M
for j in 0..i
これはO(M^2)
あなたのよく知っている、したがって、結果は逆置換後O((N^2)^2) = O(N^4)
です。
一定時間操作が実行されますので、それはあなたができる、それはΘ(n^4)
だことを証明するには、明らかにO(n^4)
だ
n^2 + n^2 + ... + n^2 (n^2 adders)
= n^2 * n^2
= n^4
:未満である
1 + 2 + 3 + ... + n^2 (n^2 adders)
回liitleの数学を使用してください:
1 + 2 + 3 + ... + n^2
= n^2 * (n^2 + 1)/2
= n^4/2 + n^2/2
>= n^4/2
n^5 = outer * inner
outer = n^2
inner = n^2 + n^2-1 + n^2-2 +...1
あなたの表記では、 'inner = 1 + 1 + ... + 1' –
ビッグオーの実行時間乗法を使用します。したがって、外側ループ(N^2)のビッグ・オーは内側(N^2)のビッグ・オと乗算されます。したがって、Big Ohは(N^2 * N^2)であり、同様の基底の指数を追加する方法を覚えていれば、N ^(2 + 2)またはN^4が得られます。シグマ表記を使用
は、あなたは念入りな成長の順序を取得し終わる:
それは明らかである
'はO(n^4)'。それはまた、(明らかではない) 'Θ(n^4)'です。 –
心配しないで、私は間違って計算しました。 – Rabbit