Big-Ohの定義は、ローカル動作よりも漸近的な動作に関係します。関数が負の値になってn
という値になった場合、それが振動していると言えば、それ以上の心配があるかもしれません。しかし、この関数では問題はありません。あなただけが選択できるいくつかの値よりも大きいすべての値に対して関数を考慮することは自由です。n0
したがって、関数が負の値になると早期に負になる場合は、それらの数値が使用されないように証明を書いてください。例えば:
ベースケース:n = 3
の場合、f(n) = 2*3*3 - 2*3 - 7 = 18 - 6 - 7 = 5 <= 9 * c = c * 3 * 3 = c * n^2
の場合。これは、c >= 5/9
であれば真です。
誘導仮説:すべてのnが3から始まり、k
になると仮定すると、f(n) <= c * n^2
と仮定します。
誘導ステップ:f(k+1) <= c * (k+1)^2
を示す必要があります。我々はf(k+1) = 2(k+1)^2 - 2(k+1) - 7 = 2k^2+4k+2 - 2k - 2 - 7 = 2k^2 + 2k - 7 < 2k^2 + 4k < 2k^2 + 4k + 2 = 2(k^2 + 2k + 1) = 2(k+1)^2
を持っているので、選択はc = 2
がここで働く。
事実上、n
が増加すると、2n^2 - 2n - 7
は常に2n^2
より小さくなることが明らかです。
何かを証明したい場合は、定義を見直してください。 O(n^2)の定義は使用されません。 – mattm