(これはより長い答えなので、要約の太字を読んでください)
あなたの例を取り上げて、私たちがしていることの背後にある目的を理解しながら、ステップバイステップで見ていきましょう。私たちはあなたの機能とそのBig Oh表記を見つけることの目標から始めます。
f(n) = 6n+4
まず、聞かせてO(g(n))表記ビッグああも私たちが見つけようとしていますf(n)。ビッグああの定義から、我々は見つける必要が簡略化され g(n)、いくつかの定数が存在する場所cとn0場所c*g(n) >= f(n)のすべてのために真であるnS」よりも大きいですn0。
まず、選択してみましょうg(n) = 6n + 4(O(6n+4)ビッグオハイオ州で得られる)。この場合、それはc = 1すべての値が常に等しいn0ため、Big Ohの定義からの数学的要件を満たします。g(n)f(n)
c*g(n) >= f(n)
1*(6n + 4) >= 6n + 4 //True for all n's, so we don't need to pick an n0
この時点で、数学的要件を満たしました。 我々が停止した場合O(6n+4)、これは何の書き込みよりも有用であることは明らかませんf(n)ので、アルゴリズムの一般的な時間の複雑さを理解する:それはビッグああ表記の真の目的を逃します! したがって、次のステップである単純化に進みましょう。
まず、我々はアウト簡素化することができます6nので、ビッグああですかO(4)?番号! (読者が理由を理解できない場合は、読者に運動をさせてください)
第二に、大王が4そうであるように単純化することができO(6n)ますか?はい! その場合、次のg(n) = 6nように:
c*g(n) >= f(n)
c*6n >= 6n + 4
この時点で、のc = 2各増分について、左側が右側(6)よりも速く(12)増加するように選択しますn。
2*6n >= 6n + 4
ここn0で、上記の式がnその値よりも大きいすべてに対して真である場合、正の値を見つける必要があります。左側が右側よりも速く増加していることは既にわかっているので、必要なことは1つの正解を見つけることだけです。したがって、n0 = 2上記を真にするので、それはg(n)=6n、またはO(6n)の潜在的なBig Oh表記であることがわかりf(n)ます。
さて、Big Ohがそうであるように単純化できますか?はい!6O(n) その場合、次のg(n) = nように:
c*g(n) >= f(n)
c*n >= 6n + 4
c = 7左が右よりも速く増加するので、選んでみましょう。
7*n >= 6n + 4
以上のすべてnの場合に上記が当てはまることがわかりn0 = 4ます。したがって、O(n)はの潜在的なBig Oh表記ですf(n)。g(n)もう単純化できますか?いや!
最後に、最も単純なBig Oh表記はであることがわかりました。f(n)O(n) なぜ私たちはこれらすべてを経験したのですか?ので、今私たちが知っていることは、f(n)直線的であることのビッグああ表記は、線形複雑であるため、O(n)。良いことは、時間の複雑さf(n)を他のアルゴリズムと比較できるようになったことです! たとえば、私たちは今、それが知っているf(n)機能に匹敵する時間が複雑でありh(n) = 123n + 72、i(n) = n、j(n) = .0002n + 1234、など。上記で説明したのと同じ単純化プロセスを使用すると、それらはすべて線形の時間複雑性を持つためO(n)です。
甘い!!!