Dynamic Programming
動的計画法は問題を重複する部分問題へ分解し、その解を保存して再計算を避ける。ボトムアップまたはトップダウン(メモ化)で解く。
目的
最適部分構造とオーバーラップする部分問題を持つ最適化問題を効率的に解く。
メカニズム
最適部分構造を特定する:最適解は部分問題の最適解を含む。ボトムアップではサイズの昇順に表を埋め、トップダウンではメモ化付き再帰を用いる。古典例:ナップサック、最長共通部分列、編集距離、連鎖行列積。
ユースケース
- アルゴリズム設計
- 最適化タスクの解決
- シーケンス解析