Dynamic Programmingとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > Dynamic Programmingの意味・解説 

ダイナミック‐プログラミング【dynamic programming】

読み方:だいなみっくぷろぐらみんぐ

動的計画法


ディー‐ピー【DP】

読み方:でぃーぴー

《dynamic programming》動的計画法予算経営長期計画決定などに利用する数理計画法一手法。


動的計画

読み方どうてきけいかく
【英】:dynamic programming

概要

1957年, ベルマン (R.E. Bellman) によって提案され多変最適化問題を解くための手法. 目的関数再帰性(可分性)と単調性があり, 制約式が逐次的であるとき, 原問題をある部分問題群に埋め込んで, 各部問題最適値を定義し, 相隣る問題最適値間の関係式(再帰式)を導く. これを逐次解いて, 最後に問題最適解求め方法である. 解法効率化のためには, 決定変数, 状態変数, 評価関数などの選択設定個々創意工夫要する.

詳説

 多変最適化問題目的関数再帰性(可分性)と単調性をもち, 制約条件逐次性があるとき, 再帰式導いて, これを1変数ずつ解いて最後に問題最適解求めようとする方法を, 動的計画(dynamic programming)と呼ぶ. 原理としては \mbox{(i)}\, 最適性の原理 (principle of optimality), \mbox{(ii)}\, 不変埋没原理(principle of invariant imbedding), \mbox{(iii)}\, 因果律原理(principle of causality), の三つに基づく[1]. 最適性の原理には \mbox{(1)}\, オリジナル版, \mbox{(2)}\, シンプル版, \mbox{ (3)}\, "\mbox{Life}\, "版, \mbox{(4)}\, 構造解析版, \mbox{(5)}\, 数学版, などがある[9]. 数学的にマックスマックス定理遡ることができる[2][4]. 応用面では, 逐次決定過程 [3][6]の基本原理として用いられ, マルコフ決定過程政策改良法, 最短経路問題ダイクストラ法, 巡回セールスマン問題など種々の最適化問題解法としてアルゴリズム組み込まれている.

 一般に, 再帰型関数 h : [0, \infty)^{N} \to \mathbf{R}^{1}\,


h(x_{1}, x_{2}, \ldots , x_{N}) =
 h_{1}(x_{1};h_{2}(x_{2};\ldots , h_{N-1}(x_{N-1};h_{N}(x_{N})) \ldots ))\,


で表わされる. このとき, 部分関数 h_{n} : [0, \infty)^{N-n+1} \to \mathbf{R}^{1}\,


h_{n}(x_{n}, \ldots , x_{N}) := h_{n}(x_{n};\ldots ,
 h_{N-1}(x_{N-1};h_{N}(x_{N})) \ldots )\,


定義する. 構成要素の1変数関数 h_{n}(x;\cdot), h_{N}(\cdot)\, がすべて単調な(狭義単調な)とき, 特に単調性(狭義単調性)をもつ再帰型関数という. 単調性をもつ再帰型関数 f,\, g目的式と制約式にする主問題


\mbox{P}(c) \quad
\begin{array}{lll}
\mbox{max.} & f(x_{1}, x_{2}, \ldots , x_{N}) \\
\mbox{s. t.}& g(x_{1}, x_{2}, \ldots , x_{N}) \le c, & x_{1},x_{2},\ldots ,x_{N} \ge 0, 
\end{array}\,


の解(最大値関数最大関数)は次のように求められる

問題 \mbox{P}(c)\, 部分問題{\mathbf P} = \{\mbox{P}_{n}(c)\}:\,


\mbox{P}_{n}(c) \quad
\begin{array}{lll}
\mbox{max.} & f_{n}(x_{n}, \ldots , x_{N}) \\
\mbox{s. t.}& g_{n}(x_{n}, \ldots , x_{N}) \le c, & x_{n}, \ldots ,x_{N} \ge 0, 
\end{array}\,


埋め込み, この最大値u_{n}(c)\, とする. このとき, 制約式の狭義単調性両式連続性仮定すると, 再帰式


u_{n}(c) =\max_{x \ge 0} \, f_{n}(\,x\,; 
u_{n+1}(g_{nx}^{-1}(c))) \quad 1 \le n \le N-1\,
u_{N}(c) =f_{N}(g_{N}^{-1}(c))\,


成り立つ. ただし, g^{-1}_{nx}(\cdot)\, g_{n}(x;\cdot)\, 逆関数. この再帰式を後向き解いて, 最後に問題最大値 u_{1}(c)\, 得られる. これが動的計画法である. さらに, 主問題 \mbox{P}(c)\, 逆問題


\mbox{I}(c) \quad
\begin{array}{lll}
\mbox{min.} & g(x_{1}, x_{2}, \ldots , x_{N}) \\
\mbox{s. t.}& f(x_{1}, x_{2}, \ldots , x_{N}) \ge c, & x_{1},x_{2},\ldots ,x_{N} \ge 0, 
\end{array}\,


の解(最小値関数最小関数)の間には互いに逆関数の関係にある(逆定理 [5]). これは線形計画における双対定理類似して, 動的計画の双対定理考えられる[11].

 また, 狭義単調性をもつ再帰型関数 h\, 終端k\, をもつときは


h(x_{1}, \ldots , x_{N}, k) = h_{1}(x_{1};\ldots , h_{N-1}(x_{N-1};h_{N}(x_{N};k)) \ldots )\,


で表わされる. これに対して反転関数(逐次パラメトリック逆関数) h^{-1} : \mathbf{R}^{N+1} \to \mathbf{R}^{1}\,


h^{-1}(x_{N}, \ldots , x_{2}, x_{1}, c) 
:\;=\; h^{-1}_{N}(x_{N};\ldots , h^{-1}_{2}(x_{2};h^{-1}_{1}(x_{1};c)) \ldots
 )\,


定義する. このとき, 目的f\, , 制約g\, (ただし g_{N}(x_{N};l)
 := g_{N}(x_{N}) + l )\, をもつ主問題反転問題


\mbox{R}(c) \quad
\begin{array}{lll}
\mbox{min.} & f^{-1}(x_{N}, \ldots , x_{1}, u_{1}^{-1}(c)) \\
\mbox{s. t.}& g^{-1}(x_{N}, \ldots , x_{1}, c) = 0, & x_{N},\ldots ,x_{1} \ge 0, 
\end{array}\,


考えると, 反転問題最小値は主問題終端値となる (反転定理 [7]).

 さらに, 準線形化, 最大変換(共役変換)による双対理論組み込んだ三面鏡理論 [8]が制御過程上で展開されている. 逆問題, 反転問題, 双対問題基本的に動的計画法で解くことができるが, それぞれの問題最適解直接解くことなく, 対応する定理によって得られる[7].

 再帰性, 単調性ない場合最適化としては, 非可分性との関連結合性などの下で事前条件付き決定過程, 事後条件付き決定過程[10]がファジィ動的計画, 非加法再帰的効用関数経済学などで研究されている. これらの問題マルコフ政策クラス再帰式導かれる.



参考文献

[1] R. Bellman, Dynamic Programming, Princeton Univ. Press, 1957.

[2] G. H. Hardy, J. E. littlewood and G.lya, Inequalities, 2nd ed., Cambridge Univ. Press, 1952.

[3] 茨木俊秀,『組合せ最適化理論』, 電子通信学会, 1979.

[4] 伊理正夫ほか, 座談会最大問題最小問題めぐって」,『数学セミナー』, 7月号 (1966), 40-48.

[5] S. Iwamoto, "Inverse Theorems in Dynamic Programming I, II, III," Journal of Mathematical Analysis and Applications, 58 (1977), 113-134, 249-279, 439-448.

[6] 岩本誠一,「逐次決定過程としての動的計画論I,II」,『オペレーションズ・リサーチ』, 22 (1977), 427-434, 496-501.

[7] 岩本誠一,『動的計画論』, 九州大学出版会(経済工学シリーズ), 1987.

[8] S. Iwamoto, "A three mirror problem on dynamic programming," in Proceedings of the Third Bellman Continuum Workshop, 363-382, 1989.

[9] 岩本誠一,「動的計画の最近の進歩」, 第2回RAMPシンポジウム論文集, 129-140, 1990.

[10] S. Iwamoto, "Conditional decision processes with recursive reward function,"Journal of Mathematical Analysis and Applications, 230 (1999), 193-210.

[11] 近藤次郎,『最適化法』, コロナ社, 1984.


動的計画法

(Dynamic Programming から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/14 11:16 UTC 版)

動的計画法(どうてきけいかくほう、: Dynamic Programming, DP)は、計算機科学の分野において、アルゴリズムの分類の1つである。対象となる問題を複数の部分問題に分割し、部分問題の計算結果を記録しながら解いていく手法を総称してこう呼ぶ。

定義

細かくアルゴリズムが定義されているわけではなく、下記2条件を満たすアルゴリズムの総称である。

  1. 帰納的な関係の利用:より小さな問題例の解や計算結果を帰納的な関係を利用してより大きな問題例を解くのに使用する。
  2. 計算結果の記録:小さな問題例、計算結果から記録し、同じ計算を何度も行うことを避ける。帰納的な関係での参照を効率よく行うために、計算結果は整数、文字やその組みなどを見出しにして管理される。

概要

「動的計画法(dynamic programming)」という言葉は1940年代リチャード・E・ベルマンが最初に使いはじめ、1953年に現在の定義となった[1]

効率のよいアルゴリズムの設計技法として知られる代表的な構造の一つである。対象となる問題を帰納的に解く場合にくり返し出現する小さな問題例について、解を表に記録し表を埋めていく形で計算をすすめ、冗長な計算をはぶくアルゴリズムのことをいう。特定のアルゴリズムを指すのではなく、上記のような手法を使うアルゴリズムの総称である。一般的に、帰納的な定義にしたがって再帰法でアルゴリズムを作ると計算結果の再利用は行わないが、入力が単純な構造で解が等しくなることの確認が容易であるとき、同じ入力について計算済であることの確認、結果の再利用をメモリ領域を消費して行い、計算を高速化する。初歩的な説明で使われるフィボナッチ数の計算、ハノイの塔の必要移動回数の計算などでは、一次元の表(列)によって指数オーダーの計算時間を入力の数の大きさに対して線形時間に落とすことができる。(ただし、これらの級数の計算では、漸化式で参照するのは高々 2 つ前の計算結果だけなので、変数を1, 2 個用意してループすればことたりる。)効果が顕著なのが組合せ問題で、文字列の近似照合(編集距離の計算)、ナップサック問題の解法などが、二次元の表により指数時間の手続きが多項式時間に効率化される有名な例である。マルチプルアラインメントのように表が三次元以上必要になると、時間に対するトレードオフとなるメモリ領域量が大きくなりすぎるため、規模の大きな入力には実用的でなくなる。

近似アルゴリズムの分野では、多項式時間での解法が存在しないと思われる一部の問題に対して、この方法を適用することで、擬似多項式時間では最適解を得ることができる。

実現方法

以下の2種類の実現方法がある。

  • 履歴管理を用いるトップダウン方式(: top-down with memoization) - 分割統治法において、計算結果を記録(メモ化)して再利用する方法。再帰を併用する場合はメモ化再帰: memoized recursion)とも呼ばれる。
  • ボトムアップ方式: bottom-up method) - 先に部分問題を解いていく方法

適用条件

最適化問題に適用する場合、一般的に、以下の2つが適用する問題に成立していないといけない。(厳密には成立しなくても動的計画法の定義は満たせる)

  • 部分構造最適性: optimal substructure)や最適性原理: principle of optimality[2]
  • 部分問題重複性: overlapping subproblems

部分構造最適性とは、以下の2条件が成立していることをさす。

  1. 部分問題も同じ最適化問題が成立している
  2. 部分問題間が独立している

部分問題を解き、それを利用して、全体の最適化問題を解く戦略のため、部分構造最適性が動的計画法には必要である。部分構造最適性の例として、最短経路問題では、A → B → C という最短経路において、A → B や B → C も最短経路でないといけない(このことは背理法により証明可能)。また、部分問題間が独立であるためには、部分問題で資源の共有があってはならない。最短経路問題では A → B と B → C で同じ辺が出現しないため(同じく背理法により証明可能)、資源の共有が発生していない。貪欲法においても厳密解を求めるのなら部分構造最適性は必要である。

部分問題重複性とは、同一の部分問題が繰り返し出現することである。動的計画法では重複する部分問題の計算結果を記録し再利用する事により計算量を削減する。

厳密なことを書くと、全体問題と部分問題は完全に同一である必要性はなく、また、部分問題間が独立でなくても、それらが何らかの計算式により依存関係を解決し結合させる方法があれば、部分構造最適性が成立しなくても動的計画法の定義を満たすアルゴリズムは作れる。しかし、そのような実用例は少ない。

例題

動的計画法の適用例を示す。

フィボナッチ数列

フィボナッチ数列とは第 n 項の値が第 n - 1 項と第 n - 2 項の和となる数列のことである。この問題は最適化問題ではない。

定義を直接実装したプログラム

定義に基づいてプログラムを作成すると、次のようになる。

int fib(unsigned int n) {
    switch (n) {
        case 0: return 0;
        case 1: return 1;
        default: return fib(n - 1) + fib(n - 2);
    }
}

例えば、このプログラムを使ってフィボナッチ数列の第5項を求める場合を考えてみる。このプログラムは再帰的に呼び出されるので、その様子を以下に示す。

  fib(5) 
= fib(4) + fib(3) 
= (fib(3) + fib(2)) + (fib(2) + fib(1)) 
= ((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) 
= (((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1)) 

このように最終的に fib(0) と fib(1) の呼び出しに収束し、fib(0) と fib(1) の呼び出し回数の和が結果の値となる。この方法を用いたフィボナッチ数列の計算量は

非線形(制約付き)
凸最適化
組合せ最適化
メタヒューリスティクス

辞典・百科事典の検索サービス - Weblio辞書辞典・百科事典の検索サービス - Weblio辞書

「Dynamic programming」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

カテゴリ一覧

すべての辞書の索引



Weblioのサービス

「Dynamic Programming」の関連用語






6
16% |||||

7
16% |||||

8
14% |||||


10
12% |||||

Dynamic Programmingのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Dynamic Programmingのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
日本オペレーションズ・リサーチ学会日本オペレーションズ・リサーチ学会
Copyright (C) 2024 (社)日本オペレーションズ・リサーチ学会 All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの動的計画法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2024 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2024 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2024 GRAS Group, Inc.RSS