どのようなプロパティに問題があるので、どのメソッドを動的プログラミングや欲張りメソッドを使用するか決定できますか?ダイナミックプログラミングまたは貪欲方法を使用した問題の解決策?
答えて
動的プログラミングの問題は、最適な部分構造を示します。これは、問題に対する解を、厳密に小さいサブ問題に対する解の関数として表すことができることを意味する。
このような問題の1つの例は、matrix chain multiplicationです。
欲張りアルゴリズムは、ローカル最適な選択が完全に最適な解決につながる場合にのみ使用できます。これは直ちに見るのが難しいかもしれませんが、一般的に実装するのは簡単です(複数の小さな問題のすべての解決策ではなく、貪欲な選択肢)。
有名なグリーディアルゴリズムの1つは、最小スパニングツリーを見つけるためのKruskal's algorithmです。
再帰によって解決できる問題は、「厳密に小さいサブ問題の解の関数として表現できます。 DPを適用できるようにするには、最適な基礎構造*と*重複する部分問題の両方を持つ問題が必要です。後者の部分は、すでに解決されたサブ問題に対する解決策を保存する価値があるものです。あなたがこれを言いますと+1します。 –
それを知ることは本当に厳しいルールです。誰かがすでに言ったように、赤いライトを点灯させるべきことがいくつかありますが、最後には経験だけがあなたに伝えることができます。
Cormen、Leiserson、Rivest and Stein's Algorithmsの第2版には、欲張り方法が最適解を生み出す時期について説明する「欲張り方法の理論基盤」(16.4節)があります。実際の興味の多くのケースをカバーしていますが、最適な結果をもたらすすべての欲張りアルゴリズムがこの理論の観点から理解できるわけではありません。
また、動的プログラミングから欲張りアルゴリズムへのリンクhereも出てきました。特定の欲張りアルゴリズムについて語っているのは、動的プログラミングの改良点です。クイックスキャンから、あなたにとって興味深いかもしれません。
各段階で利用可能なローカル情報を決定する際には、欲張り方法を適用します。各段階で決定された一連の決定に従って、最適な解決策を見つけることができます。 しかし、ダイナミックなアプローチでは、一段階で意思決定を行うことが確実でない可能性があります。そのため、可能性の高い要素の1つを解決する可能性のある決定を行います。
- 1. 文法問題を解決するための実用的な解決策
- 2. pyparsingを使用した非貪欲な解析
- 3. 貪欲法
- 4. fnparseを使った非貪欲な構文解析
- 5. mysql - グループを使用して問題を解決しました。
- 6. プリプロセッサマクロを貪欲にする方法は?
- 7. DFSまたはGreedy BFSを使用して解決策を解決しましたか?
- 8. のRewriteCondは貪欲
- 9. cs50 Pythonの貪欲 - 解析中のEOF?
- 10. CLRストアドプロシージャを使用しているときの問題と解決策?
- 11. ダイナミックプログラミングを使用したナップザック
- 12. ダイナミックプログラミングを使用したフィボナッチシリーズ
- 13. まだ貪欲でない一致は依然として貪欲です
- 14. antlr4文法非貪欲
- 15. Model View Presenterテストの解決策... DTOまたはDomainオブジェクト、またはその両方を使用しますか?
- 16. .netアプリケーションの展開の問題。 thinappは解決策ですか?
- 17. 私は以下の問題の解決策を探しています現在
- 18. 探索率が低下するε-貪欲政策
- 19. Perlの貪欲な正規表現は、次のコードを与える貪欲
- 20. PyQt - 信号をシミュレートする方法は?または他の解決策?
- 21. 解決方法のWPF ListBoxの問題
- 22. 解決策が必要このエラーを解決する方法?
- 23. DBでこの解決策を解決する方法
- 24. swiftmailerはHotmailで問題を解決しました
- 25. は 'time'コマンドで問題を解決しました
- 26. java.lang.NoClassDefFoundError:失敗した解決策:Lokio/Buffer;
- 27. iOSアプリの問題 - 解決方法
- 28. ダイナミックプログラミングを使用したリストのパーティション
- 29. 私はここで割り当て問題への解決策を通じて読んでいた「割当問題」解決の質問
- 30. GWT - 私は次のような問題のためのエレガントな解決策を探しています
音が宿題のようです。 –