web-dev-qa-db-ja.com

準線形アルゴリズムとは何ですか?

仲間から次の質問をされました。

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 を通過しましたが、できませんでしたが、完全に理解したかどうかはわかりません。誰かが私を正しい方向に向けることができますか?.

17
station

以下の定義に見られるように、xが無限大に近づくときの比率の限界が正の数(または無限大)になる場合、関数f(x)は別の関数g(x)よりも速く成長すると言われています。

enter image description here

サブリニアの場合、関数が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  

(サブリニア)

19
erip

あなたが混乱している理由は理解できたと思います:リンクしたウィキペディアのページでは 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)。

勉強を続けるために この答え を読むことをお勧めします

11
Marco A.