私は上記のアルゴの最適な基礎構造と重複する問題(パンとバターのDP)の理解に誰も助けてくれますか?Kadaneのアルゴリズムにおける動的プログラミングの側面
答えて
重複部分問題のthis定義によれば、Kadaneのアルゴリズム(f[i] = max(f[i - 1] + a[i], a[i])
)の再帰的な製剤は、この性質を示しません。各サブ問題は、単純な再帰的実装で1回だけ計算されます。
しかしその定義hereに応じて最適な下部を示さない:我々は(f[i]
がf[i - 1]
を使用しています)私たちの与えられた問題への解決策を見つけるために小さな部分問題へのソリューションを使用しています。
は、動的プログラミングの定義here考えてみましょう:数学、コンピュータサイエンス、および経済学で
を、ダイナミックプログラミングは単純な部分問題にそれらを分解することで、複雑な問題を解決するための方法です。重複するサブ問題の性質を示す問題に適用可能であり、最適サブ構造(後述)。適用可能であれば、この方法は、深さ優先検索のような部分問題の重なりを利用しない素朴な方法よりもはるかに短い時間を要する。
ダイナミックプログラミングの背後にあるアイデアは非常に簡単です。一般に、与えられた問題を解決するためには、問題の異なる部分(部分問題)を解決し、部分問題の解決策を組み合わせて全体的な解決策に到達する必要があります。多くの場合、より素朴な方法を使用すると、多くの部分問題が生成され、何度も解決されます。それは破壊することによって問題を解決しない:動的計画法は、このような計算
これはKadaneのアルゴリズムは、DPアルゴリズムとみなすことができるか否かの解釈の余地の数を減らし、一度だけ、各部分問題を解決しようとしますそれはより簡単なサブ問題になりますが、そのコア再帰的アプローチは、DPが効率的に処理するためのものである重複するサブ問題を生成しないため、DPの専門外に置くことになります。一方、基本的な再帰的アプローチがサブ問題をオーバーラップさせる必要はないと言えるかもしれませんが、再帰的アルゴリズムはDPアルゴリズムになります。これはDPに私の意見。しかし、私は文章の中でこれを確実に解決するものは何も知らないので、生徒に印を付けたり、本や記事をラベル付けしたりすることはしません。
私はDPアルゴリズムではなく、実装に応じて貪欲で再帰的なアルゴリズムだと言います。私は上記の理由からアルゴリズム的な観点からは貪欲であると言いますが、客観的には他の解釈も有効と考えています。
それは記憶装置の2つの要素だけを含むことも興味深いです。これは再び典型的なDPアルゴリズムのように感じさせない。ほんのわずかなストレージしか必要としないDPと考えられる他のアルゴリズムについて知っていますか? –
@PeterdeRivaz - フィボナッチの繰り返しは数えられます:最適な部分構造と重複するサブ問題があり、 'O(1)'メモリで実装することもできます。 – IVlad
- 1. アルゴリズムの動的プログラミング
- 2. アルゴリズム - 動的プログラミング
- 3. スカラのKadaneのアルゴリズム
- 4. Kadaneのアルゴリズムでのクエリ
- 5. Kadaneアルゴリズム負の数値
- 6. 遺伝的プログラミングにおけるテストケースの動的数は?
- 7. 最大サブアレイ(Kadaneのアルゴリズム) - テイル再帰
- 8. KadaneのアルゴリズムによるO(N)の最小和サブアレイ
- 9. 目的のC++プログラミングにおけるオブジェクトの配列
- 10. 機能的プログラミングにおけるシーケンスの理解
- 11. プログラミングの機械的な側面に関する詳細情報が必要
- 12. 遺伝的アルゴリズムにおけるトーナメントセレクションの複数反復
- 13. ゲームAIの遺伝的アルゴリズムにおけるフィットネス機能アルファ
- 14. 遺伝的アルゴリズムにおける母集団の分布
- 15. Needleman-Wunschアルゴリズムの動的プログラミング実装でのトレースバック
- 16. 宣言的プログラミングにおけるインターン文字列
- 17. 遺伝的アルゴリズムにおけるクロスオーバー確率
- 18. 関数型プログラミングにおけるメモリリーク
- 19. 機能プログラミングにおけるチェスプログラミング
- 20. 動的プログラミングのコアダンプエラー
- 21. デュアル画面向けのHDMI出力プログラミング
- 22. 遺伝的プログラミングと検索アルゴリズム
- 23. WCFによる動的プログラミング
- 24. 周波数検出への遺伝的アルゴリズムのアプローチ(光プレチスモグラムにおける)
- 25. 動的プログラミング - 配列のターゲットの総和を見つける
- 26. Python動的プログラミング
- 27. オブジェクトスタッキング、動的プログラミング
- 28. 遺伝的アルゴリズムにおける遺伝子と染色体の表現
- 29. HaskellのData.Mapによる動的プログラミング?
- 30. 関数型プログラミングにおける関数の型の決定
KadaneのアルゴリズムはIIRCです。 – nhahtdh
+1、私は自分自身でこれに苦労してきました。 DPとみなすかどうかは決めることができません。最適な部分構造はありますが、重複する部分問題はありません。私はDPとラベル付けされているのを見ましたが、厳密に言えば、そうではないと思います。 – IVlad
誰かが私の持っているのと同じ質問をすることはできません;) –