オーダ表記(計算量)
解説
ポイント
オーダ表記 O の定義を使って,左の関数が右の関数の定数倍におさまるかを判断する問題です。
考え方と解き方
f(n)=O(g(n)) は,n が大きくなれば f(n) がいつも g(n) の c 倍以下におさまるという意味です。
f(n) ÷ g(n) が限りなく大きくならなければ正,大きくなれば誤です。増え方は log n < n のべき < an < 2 の 2n 乗の順です。
ア:(5n3+1) ÷ n3 = 5 + 1/n3 で,6 以下です。c = 6 で成り立ちます。正しいです。
イ:nlog2n ÷ n1.5 = log2n ÷ √n です。log はどんな小さなべきよりゆっくり増えるので,比は 0 に近づきます。正しいです。
ウ:n33n ÷ 4n = n3 × (3/4)n です。(3/4)n は指数的に小さくなり,n3 の増え方に勝つので,比は 0 に近づきます。正しいです。
エ:両方の log2 をとると,左は 2n,右は n100 × log210 です。指数の 2n はべきの n100 にいずれ勝つので,左のほうが速く増え,定数倍ではおさまりません。誤りです。答えは ア 正,イ 正,ウ 正,エ 誤
覚えておくこと
- f(n)=O(g(n)):n が大きいとき f(n) ≦ c・g(n)。「比が限りなく大きくならないか」で判断する
- 増え方の順:log n < √n < n < n2 < … < 2n < 3n < 2 の 2n 乗。指数はべきに勝ち,べきは log に勝つ
- 指数どうしは底で決まる。3n は 4n より小さく,n3 を掛けても追いつかない
- 指数の指数をくらべるときは,両方の log をとって中身をくらべる
出典:令和3年度 技術士第一次試験 基礎科目 I-2-6(公益社団法人日本技術士会) ジャンル:情報・アルゴリズム