動的プログラミングの名前を変更できるとしたら、それを何と呼びますか?
動的プログラミングの名前を変更できるとしたら、それを何と呼びますか?
回答:
リチャード・ベルマンの自伝は、彼が「動的プログラミング」という用語を意図的に気を散らすものに選んだことを示唆しています。
1950年代は数学的研究にとって良い年ではありませんでした。ワシントンには、ウィルソンという非常に興味深い紳士がいました。彼は国防長官であり、実際には病理学上の恐怖と「研究」という言葉への憎悪がありました。用語を軽く使用していません。私はそれを正確に使用しています。彼の顔が充満し、赤くなり、人々が彼の前で「研究」という用語を使用すると、彼は暴力的になります。それから、彼が「数学」という用語についてどのように感じたか想像できます。RAND Corporationは空軍に雇われており、空軍は本質的にウィルソンをボスとして雇っていました。したがって、ウィルソンと空軍を、RAND Corporation内で数学を実際にやっているという事実から守るために、何かしなければならないと感じました。
どのようなタイトル、名前、選択できますか?そもそも、計画、意思決定、思考に興味がありました。しかし、計画は、さまざまな理由から良い言葉ではありません。そのため、「プログラミング」という言葉を使用することにしました。これは動的であり、多段階であり、時変であるという考えを理解したかったのです。1石で2羽の鳥を殺そうと思いました。古典的な物理的な意味で、絶対に正確な意味を持つ言葉、すなわち「動的」を取り上げましょう。また、形容詞として非常に興味深い特性があり、それは軽dynamic的な意味で「動的」という言葉を使用することは不可能です。軽pe的な意味を与える可能性のある組み合わせを考えてみてください。それは不可能だ。したがって、「動的プログラミング」は良い名前だと思いました。それは下院議員でさえも反対できないものでした。
(そのAIの教科書でoutとしてラッセルとNorvig点は、しかし、この話は真実の創造的な装飾でなければなりません。ベルマンは、最初のフレーズ「動的計画」を使用し、1952年に、そしてチャールズアーウィンウィルソンは 1953年まで国防長官になっていませんでした。 )
とにかく、ベルマンの元々の動機は多段階の計画を示唆していますが、少なくともアルゴリズムの目的では、音節が少ないだけの質素なボトムアップ再帰のようなものが好きです。
メモ化はかなり一般的なバリアントです。
アルゴリズム設計における動的プログラミングに関する最近の講義の後、学生にこの手法の新しい名前を提案するように依頼しました。私は「タフなプログラミング」に楽しまれていましたが、このテクニックをより思い出深いものにしたかったのです。ここでの議論の後、トップダウン用とボトムアップ用の2つの名前を提案することができます:
Multiway-Divide and Memoized-Conquer(別名Divide ^ M&Conquer ^ M)、および
すべてのサブ問題をマージ(別名Merge_all)
このペーパー(paywalled doi)では、DPを使用して攻撃できる問題を「分解可能」と呼びます。
私は最近、これを何人かの同僚と議論しましたが、白熱した議論の後、表形式のコールキャッシングを思いつきました。
私たちの時代からオイラーの古き良き時代までの一種の橋のようなものとして、帰納的プログラミングという名前をお勧めします、ケプラーら または、逆帰納的プログラミングでさえ可能です。そして、はい、私にとって、DPは古い概念の概念で、誘導に強く関連しています。メモ化、キャッシュ、テーブルなどは単なるテクニックの要素であり、物事を解読するアプローチの中核ではありません。
おそらくtableとfillという単語が含まれているもので、これが起こるためです。