留学・音ゲー・研究備忘録

heine98の音ゲー・研究・留学の記録。Juliaとかlatexとか使います。

経済学と競技プログラミングの動的計画法

個人的に競技プログラミング動的計画法(Dynamic Programming)と経済学の動学的最適化の違いがしっくり来なかったのだけれど、今日ネットを眺めていたらわかった。

競技プログラミングではグラフのような構造でどの経路が最短かとか、ナップザック問題とかを指して、動的計画法と呼んでいるらしい。そしてそれらの代表的アルゴリズムの中には深さ優先探索とか幅優先探索、全探索、なんかをよく用いる気がする。この場合、選択肢は離散で、次の道A、B、C…と可算有限個であるからだ。

対して、少なくとも大学院レベルの経済学では、離散ないし連続時間の経済主体の最適化問題を指して動的計画法と呼ぶのだが、この問題のキモは、答えがある値で決まるのではなく、基本的に離散時間のモデルでは関数のセット(解析解は稀であり、関数の形を数値計算で解く)になる。

つまり、解は、もし今日の貯蓄(所与の変数)がこれくらいあって、そしたらどのくらい消費してどのくらい明日への貯蓄にしますか?今日の貯蓄が変わったら、どのくらい消費と明日への貯蓄が変化しますか?みたいなことを調べるのが目的になる。*1 これは、経済学で扱うのはすべて連続変数なので、選択肢が非可算無限個で、その中から最適な選択を示すとなれば必然的に関数形になるからだ。

んで、基本的にマクロ経済学での最適化問題(家計の最適化問題など)は解析的に解けない(数式で表せない)ので、少なくとも今日の貯蓄という所与の変数の方はめちゃくちゃ細かいグリッドで離散化して、その元で最適な選択を数値計算で導いて、擬似的な関数を得るということになる。

数学的には、(不等号)制約付き関数方程式を解くことであり、これはベルマン方程式で書くことで再帰的になり(ショックがある場合は定常なマルコフ過程であるとする)、これを元に関数の形を解として導くことになる。

競プロで動的計画法って言われて俺に馴染みがなさすぎたのは以上のような理由でした。

そんなことより誰か猿でもわかるように連続時間の動的最適化について教えてくれ

*1:もしくは、今あなたの目の前にケーキ1ホールがあって、これから1分毎にどのくらい食べていったらハッピーさが最大化されますか?みたいなのも超初歩問題で頻出