仲間から次の質問をされました。
Which of the following expressions is not sublinear?
O(log log n)
O(n)
O(logn)
O(root(n))
私は https://en.wikipedia.org/wiki/Time_complexity#Sub-linear_time を通過しましたが、できませんでしたが、完全に理解したかどうかはわかりません。誰かが私を正しい方向に向けることができますか?.
以下の定義に見られるように、xが無限大に近づくときの比率の限界が正の数(または無限大)になる場合、関数f(x)は別の関数g(x)よりも速く成長すると言われています。
サブリニアの場合、関数がc * nよりも遅くなることを証明したいとします。ここで、cは正の数です。
したがって、リスト内の関数f(n)ごとに、f(n)と(c * n)の比率が必要です。制限が0の場合、これは関数、f(n)は準線形です。それ以外の場合は、nと同じ(概算)速度またはそれ以上で成長します。
lim n->inf (log log n)/(c*n) = 0 (via l'Hopital's)
(サブリニア)
lim n->inf (n)/(c*n) = 1/c != 0
(線形)
lim n->inf (log n)/(c*n) = 0 (via l'Hopital's)
(サブリニア)
lim n->inf (sqrt(n))/(c*n) = 0
(サブリニア)
あなたが混乱している理由は理解できたと思います:リンクしたウィキペディアのページでは Little-Oh 表記を使用しています:
準線形時間
T(n) = o(n)の場合、アルゴリズムは準線形時間(多くの場合、綴られた準線形時間)で実行すると言われています
T(n) = o(n) is astronger T(n) = O(n)と言うよりも必要です。
特にO(n)の関数の場合、常に不等式を持つことはできません
f(x) < k g(x) for all x > a
選択したk
ごとに満足します。 y=x
およびk=1
はあなたが間違っていることを証明し、ほとんどああの表記はその式を満たすためにすべてのk
を必要とします。
Any O(n) function isnotalso in o(n)。したがって、非サブリニア式はO (n)。
勉強を続けるために この答え を読むことをお勧めします