動的プログラミングの「動的」とは何ですか?


9

私の先輩の1人が就職の面接を受け、動的と呼ばれる理由を尋ねられました。彼は答えることができず、面接官をあきらめた後、それについて動的なものは何もないと言った、それはちょうどそのように呼ばれた。それは私には信じがたいことです。

これは、副問題が実行時に解決され、最終目標の達成に使用されるという事実を示していますか?実行時に発生する動的メモリ割り当てのように?

[回答]

質問する前に、この wikiの記事を読んでおくべきでした。申し訳ありません。


2
簡単に言えば、それは単なる名前です。文字通りの意味を持つ必要はありません。
Yuval Filmus 2013年

4
間違いなく、DP(テーブルフィリング)の一般的な実装は、アルゴリズムが取得できるのと同じくらい静的です。
ラファエル

回答:


1

私は常に、動的プログラミングを使用するアルゴリズムは、問題が貪欲なアルゴリズムで解決されるまで、問題の空間を「動的に」編集しているように見えることを意味していた。

たとえば、チェッカーボード問題の場合、動的プログラミングアルゴリズムはボード全体を編集し、最後に貪欲アルゴリズムを使用できます(同様に、ダイクストラの最短経路アルゴリズムなどを使用)。

これがすべての動的プログラミング問題に一般化するかどうかはわかりません。


9

実際、「動的プログラミング」という名前には特別なものはありません。テクニック自体は、再帰をスマートに巻き戻すことについてです。この質問を見て、@ Jeffeの回答を見てください。Belmanはその名前を故意に混乱させるために選択していると報告されています。


3
これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
John Dvorak

ウィキペディアの誰かが同意しないようです、私はこれを見つけました-テーブルの値はテーブルの他の値に基づくアルゴリズムによって入力され、テレビのようにテーブルに設定するという意味でプログラミングしているので動的ですで-プログラミングをする際、放送にどのような番組に関係しているウィキブックス
金時

@akki:テーブルがまったく不要な動的プログラミングの例があります...
Massimo Cafaro 2013年

1
O1メートルOメートルメートルメートル

2
@akki:DPが再帰をスマートに巻き戻すことについて私が言うとき、それはまさに私が言及するものです!しかし、名前自体は無意味であり、無意味なままです。
Massimo Cafaro、2013年

6

ここに興味深い話があります。ベルマンはこのパラダイムを開拓しました。しかし、これは実際には数学的研究でした。当時の当時の国防長官は、研究数学という言葉に夢中だった(クレイジーガイ、そうだ!)。ベルマンは、秘書が彼の仕事に激怒し、結局彼をトラブルに巻き込むであろうことを恐れていました。だから少し物事を曖昧にするために、彼はそれを動的プログラミングと呼んだが、それについて「動的」なものは何もない。


1
このソース?本当に面白い話のようです。
jmite 2013年

余談ですが、ダイナミックプログラミングを初めて考案したのは誰なのか不明です。ベルマンは、ダイナミックプログラミングの実装が最適である場合、いわゆるベルマンフォード方程式に従うことを証明したことを認められています。残念ながら、多くの人々はそれがベルマンを最初のアイデアの背後にある主要な研究者になると容易に信じているようです。
カルロスリナレスロペス

@jmite私はこれをどこかで読んだ(おそらくいくつかのブログ)。ソースを提供しようとする...
Subhayan

@jmiteストーリーは、講義5:動的プログラミングの Jeffの講義ノートと、wiki:動的プログラミングにあります。
hengxin 2013

3

リチャード・ベルマンはベルマンの言葉でそれを動的プログラミングと呼んだ ここに画像の説明を入力してください

私は(1950年の)秋の四半期をRANDで過ごしました。私の最初の仕事は、多段階の意思決定プロセスの名前を見つけることでした。

興味深い質問は、「動的プログラミング」という名前はどこから来たのですか?1950年代は数学的研究にとって良い年ではありませんでした。ワシントンにはウィルソンという非常に興味深い紳士がいました。彼は国防長官でした、そして彼は実際に病理学上の恐れと研究という言葉への憎悪を持っていました。私はこの用語を軽く使っていません。正確に使っています。彼の顔は息苦しくなり、彼は赤くなり、人々が彼の前で研究という言葉を使うと、彼は暴力的になるでしょう。あなたは彼がどのように感じたのかを想像できます。RAND Corporationは空軍に雇用されており、空軍は基本的にWilsonを上司としていた。したがって、私は実際にRAND Corporation内で数学をしているという事実からウィルソンと空軍を守るために何かをしなければならないと感じました。タイトル、名前、選べますか?そもそも、計画、意思決定、思考に興味がありました。しかし、計画はさまざまな理由で良い言葉ではありません。そこで「プログラミング」という言葉を使うことにしました。これは動的で、多段階であり、時変であるという考えを伝えたかったのです。一石二鳥を殺そうかと思った。古典的な物理的な意味で絶対的に正確な意味を持つ、つまり動的な単語を考えてみましょう。また、形容詞として非常に興味深い特性があり、ダイナミックという言葉を軽蔑的な意味で使用することは不可能です。悲惨な意味をもたらす可能性のある組み合わせを考えてみてください。それは不可能だ。したがって、動的プログラミングは良い名前だと思いました。それは、下院議員さえも反対することができなかった何かでした。

ソース:ハリケーンの目、リチャードベルマン(自叙伝)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.