Big-O表記法を紹介されたばかりで、いくつか質問があります。ただし、n0
の値を決定する方法については混乱しています。 3n^3 +20n^2 + 5
がO(n ^ 3)であることを示さなければなりません。これまでのところ:
3n^3 + 20n^2 + 5 <= cn^3
(3 - c)n^3 + 20n^2 + 5 <= 0
5 <= n^3(c - 3) - 20n^2
5 <= n^2(n(c - 3) - 20)
ここからn0とcを見つけるために何をすべきかわかりません。誰かが説明してもらえますか?
_3n^3 + 20n^2 + 5 <= cn^3
=> 20n^2 + 5 <= cn^3 - 3n^3
=> 20n^2 + 5 <= n^3(c - 3)
=> 20n^2/n^3 + 5/n^3 <= n^3(c - 3)/n^3
=> 20/n + 5/n^3 <= c - 3
=> c >= 20/n + 5/n^3 + 3
_
大なり記号を開始する場所に応じて、n0を選択して値を見つけることができます。
たとえば、n0 = 1の場合:
_c >= 20/1 + 5/1 + 3 which yields c >= 28
_
Big-O表記の定義により、境界が実際にこれほどタイトである必要はないことに注意してください。これは単純な関数なので、推測して確認するだけで済みます(たとえば、cに100を選択し、条件が実際に漸近的に真であることに注意してください)。
例えば:
_3n^3 + 20n^2 + 5 <= (5 * 10^40) * n^3 for all n >= 1
_
真を保持するその不平等は、f(n)がO(n ^ 3)であることを証明するのに十分です。
より良い証明を提供するために、実際には、f(n) <= cg(n) for all n > n0
のように2つの定数c
と_n0
_が存在することを示す必要があります。
C = 28を使用すると、これは非常に簡単です。
_3n^3 + 20n^2 + 5 <= 28n^3
20n^2 + 5 <= 28n^3 - 3n^3
20n^2 + 5 <= 25n^3
20/n + 5/n^3 <= 25
When n = 1: 20 + 5 <= 25 or 25 <= 25
For any n > 1, 20/n + 5/n^3 < 25, thus for all n > 1 this holds true.
Thus 3n^3 + 20n^2 + 5 <= 28n^3 is true for all n >= 1
_
(それはかなりひどく行われた「証拠」ですが、うまくいけばアイデアが示しています。)
3n^3 + 20n^2 + 5 <= cn^3
5 + 20n^2 <= n^3(c - 3)
5/n^3 + 20/n <= c - 3
For n0 = 20, c >= 5, since 5/n^3 + 20/n < 2
N ^ 3で割ると、3 + 20/n + 5/n ^ 3 <= C 20/n + 5/n ^ 3 <= C-3が得られます。
C値を1020/n + 5/n ^ 3 <= 7とします。
条件が満たされるまで、nのさまざまな値についてこれを解く必要があります。C= 10およびn0 = 3が解を与えます