東大情報理工・東京科学大・阪大の大学別に、出題マップと類題を1冊にした教材(各4,980円)。収録内容と見本を商品ページで確認できる。
情報系の教材を見る時間計算量
大きさ n の入力に対してアルゴリズムが行う基本操作(比較、代入、算術演算など)の回数を時間計算量という。大きさ n の入力全体での最大値を最悪時の計算量、入力の分布を決めたときの期待値を平均時の計算量と呼ぶ。使う記憶領域の量を同じように数えたものを領域計算量という。
O・Ω・Θ 記法
f,g を十分大きな n で正の値をとる関数とする。
f(n)=O(g(n))f(n)=Ω(g(n))f(n)=Θ(g(n))⟺∃c>0, ∃n0, ∀n≥n0: f(n)≤cg(n)⟺∃c>0, ∃n0, ∀n≥n0: f(n)≥cg(n)⟺f(n)=O(g(n)) かつ f(n)=Ω(g(n)) O は上界、Ω は下界、Θ は上下両方からの評価を表す。f(n)=o(g(n)) は「任意の c>0 に対して、十分大きな n で f(n)<cg(n)」を意味する。
極限による判定
条件
f,g は十分大きな n で正。極限 L=limn→∞f(n)/g(n) が存在する(∞ を含む)。
主張
- 0<L<∞ なら f(n)=Θ(g(n))。
- L=0 なら f(n)=o(g(n))、特に f(n)=O(g(n))。
- L=∞ なら f(n)=Ω(g(n)) で、f(n)=O(g(n)) ではない。
要点
極限が存在しない場合はこの判定は使えず、定義に戻る。たとえば f(n)=n(2+sinn) と g(n)=n では比が振動するが、n≤f(n)≤3n から f(n)=Θ(n) である。
定義どおりに Θ を示す
f(n)=3n2+5n が Θ(n2) であることを、定数 c,n0 を具体的に与えて示せ。
解答
n≥1 のとき 5n≤5n2 なので f(n)≤8n2。また f(n)≥3n2。よって c1=3、c2=8、n0=1 として 3n2≤f(n)≤8n2(n≥1)が成り立ち、f(n)=Θ(n2)。
検算
極限でも limn→∞(3n2+5n)/n2=3 で、0<3<∞ から同じ結論になる。
マスター定理
条件
a≥1、b>1 は定数、f(n) は十分大きな n で正の関数で、T(n)=aT(n/b)+f(n)(n/b は ⌊n/b⌋ や ⌈n/b⌉ でもよい)。α=logba とおく。
主張
- ある ε>0 で f(n)=O(nα−ε) なら T(n)=Θ(nα)。
- f(n)=Θ(nα) なら T(n)=Θ(nαlogn)。
- ある ε>0 で f(n)=Ω(nα+ε) であり、さらにある定数 c<1 と十分大きな n で af(n/b)≤cf(n)(正則条件)が成り立つなら T(n)=Θ(f(n))。
要点
再帰木の深さ j の段の和は ajf(n/bj) で、葉は alogbn=nα 個ある。場合1は葉の和、場合3は根の項が全体を決め、場合2は logbn 段がほぼ同じ大きさになる。f(n) が nα より大きく(小さく)ても多項式の差 nε がなければ、3つのどれにも当てはまらない。
場合2は f(n)=Θ(nαlogkn)(k≥0)に広げられ、そのとき T(n)=Θ(nαlogk+1n) となる。この拡張版を使う答案では、拡張版であることを書いておく。T(n)=T(n−1)+f(n) のように引数が定数ずつしか減らない漸化式は、b>1 の形でないのでマスター定理の対象外である。
よく出る漸化式の解
代表的な漸化式(T(1) は定数)
- 二分探索
T(n)=T(n/2)+Θ(1) ⇒ T(n)=Θ(logn) マスター定理の場合2(a=1、b=2、α=0)。
- マージソート
T(n)=2T(n/2)+Θ(n) ⇒ T(n)=Θ(nlogn) - 木の走査
T(n)=2T(n/2)+Θ(1) ⇒ T(n)=Θ(n) 場合1(α=1、f(n)=O(n1−ε))。
- カラツバ法
T(n)=3T(n/2)+Θ(n) ⇒ T(n)=Θ(nlog23) log23≈1.585。場合1。
- 挿入ソートの最悪
T(n)=T(n−1)+Θ(n) ⇒ T(n)=Θ(n2) 和 ∑k=1nk=n(n+1)/2 から。
- 素朴なフィボナッチ
T(n)=T(n−1)+T(n−2)+Θ(1) ⇒ T(n)=Θ(φn),φ=21+5 特性方程式 x2=x+1 の大きいほうの解が増え方を決める。
増え方の順序
- 代表的な関数
1≺logn≺n≺n≺nlogn≺n2≺n3≺2n≺n!≺nn f≺g は f=o(g) の意味。任意の k>0、ε>0 で logkn=o(nε)、nk=o(2n)。
- スターリングの公式から
log2n!=nlog2n−nlog2e+O(logn)=Θ(nlogn)
再帰木の方法は次の順で進める。
- 漸化式を1段ずつ展開し、深さ j の段にある部分問題の数と大きさを書く(例:aj 個、大きさ n/bj)。
- 段ごとの和 ajf(n/bj) を求める。
- 深さ logbn まで足し、葉の分 Θ(nlogba) を加える。
- 得た式を予想として、必要なら帰納法(置換法)で上界・下界を示す。
2T(n/2)+n の厳密解
n=2k に対して T(1)=0、T(n)=2T(n/2)+n を解け。
解答
両辺を n で割って S(k)=T(2k)/2k とおくと S(k)=S(k−1)+1、S(0)=0 なので S(k)=k。よって
T(n)=nlog2n 再帰木で見ると、各段の和はどれも n で、段の数は log2n である。
検算
T(2)=2、T(4)=2⋅2+4=8、T(8)=2⋅8+8=24 で、nlog2n はそれぞれ 2,8,24。マスター定理の場合2の Θ(nlogn) とも一致する。
3T(n/2)+n の厳密解
n=2k に対して T(1)=1、T(n)=3T(n/2)+n を解け。
解答
展開すると深さ j の段の和は 3j⋅n/2j=n(3/2)j で、深さ k に 3k 個の葉がある。
T(n)=j=0∑k−1n(23)j+3k=2n((23)k−1)+3k=3⋅3k−2n 3k=3log2n=nlog23 なので T(n)=3nlog23−2n=Θ(nlog23)。
検算
T(2)=3+2=5 と 3⋅3−4=5、T(4)=15+4=19 と 3⋅9−8=19 が一致する。f(n)=n=O(nlog23−0.5) なのでマスター定理の場合1とも合う。
マスター定理の基本形で解けない漸化式
n=2k に対して T(1)=0、T(n)=2T(n/2)+nlog2n を解け。
解答
α=1 で、f(n)/nα=log2n は増えるが、どの ε>0 でも nε より遅い。よって場合3は使えない。再帰木では深さ j の段の和が 2j⋅(n/2j)log2(n/2j)=n(k−j) なので
T(n)=j=0∑k−1n(k−j)=n2k(k+1)=2nlog2n(log2n+1)=Θ(nlog2n) 検算
T(2)=2、T(4)=2⋅2+4⋅2=12 で、式の値は 2⋅1⋅2/2=2、4⋅2⋅3/2=12。拡張版の場合2(k=1)の Θ(nlog2n) とも一致する。
O を「ちょうどその増え方」の意味で使う。n=O(n2) も正しいので、上下両方を言うときは Θ を使い、下界も示す。
f(n)=nlogn、a=b=2 にマスター定理の場合3を当てはめる。nlogn は n1+ε より遅いので場合3の条件を満たさない。再帰木で解くか、拡張版の場合2を明示して使う。
場合3で正則条件 af(n/b)≤cf(n)(c<1)を確かめずに結論する。多項式の f では成り立つが、答案では一行で確認を書く。
T(n)=T(n−1)+n にマスター定理を使う。引数が定数ずつ減る漸化式は対象外で、和 ∑k=Θ(n2) を直接計算する。
対数の底を気にして O(log2n) と O(log10n) を区別する。底の変換は定数倍なのでオーダーは同じだが、2log2n=n と 2log10n のように指数に入ると異なる。
院試hubが年度別解説の大問を分類した集計から、この単元の内容を扱う出題を挙げる。問題文は各大学の公式過去問で確かめ、解き方は各年度の解説ページで読める。
このページの本文を数式のLaTeXのまま読むには Markdown版。最終更新 2026-11-16。誤りに気づいたら 運営者 へ連絡してほしい。
東大情報理工・東京科学大・阪大の大学別に、出題マップと類題を1冊にした教材(各4,980円)。収録内容と見本を商品ページで確認できる。
情報系の教材を見る