指数時間 O(2ⁿ) — 問題が爆発するとき

O(2ⁿ)指数時間計算量を理解し、問題を扱いにくくする理由、動的計画法とメモ化が指数アルゴリズムを救える方法を学びます。

Complexity Classes

詳細な説明

O(2ⁿ)指数時間とは?

アルゴリズムがO(2ⁿ)とは、入力の各追加要素で操作数が倍増することを意味します。

成長率

n 2ⁿ
10 1,024
20 1,048,576
30 1,073,741,824
40 ~1.1兆

典型的なO(2ⁿ)問題

  1. ナイーブFibonacci再帰 — メモ化なしでは冗長な呼び出しが指数的に増加
  2. 冪集合生成 — n要素の集合のす2ⁿ個の部分集合を生成
  3. 部分和問題(総当たり) — ターゲットに合計する部分集合を全探索
  4. ハノイの塔 — n枚のディスクの移動に2ⁿ - 1回の移動が必要

脱出経路

  • 動的計画法: FibonacciはO(2ⁿ)からO(n)に削減可能
  • 分枝限定法: 探索木の枝を切り落とす
  • 近似アルゴリズム: 多項式時間で準最適解を受け入れる

ユースケース

指数計算量の認識は、NP困難問題を理解し、総当たりから動的計画法、近似、ヒューリスティクスへの切り替えタイミングを知るために不可欠です。

試してみる — Big-O Reference

フルツールを開く