動的計画理論

基本的な考え方

通常、動的プログラミングアルゴリズムは、特定の最適なプロパティに関する問題を解決するために使用されます。そのような問題では、多くの実行可能な解決策があるかもしれません。値に各ソリューションの対応は、我々は見つけるの希望を持って 最適値の ソリューションを。動的プログラミングアルゴリズム 分割統治は 同様に、基本的な考え方は、問題がいくつかのサブ質問、最初のサブ問題解決、元の問題の解決策、およびこれらのサブ問題から得られた溶液に分解されるであろう解決することです。分割統治法とは異なり、動的計画法によって解決される問題に適しています。また、分解後に得られる副問題は、多くの場合、互いに独立していません。このような問題を解決するために分割統治法を使用すると、分解によって得られる副問題の数が多すぎて、いくつかの副問題が何度も繰り返し計算されます。解決されたサブ質問への回答を保存して、必要なときに見つかった回答を見つけることができれば、多くの二重計算を回避して時間を節約できます。テーブルを使用して、解決されたすべてのサブ質問への回答を記録できます。副問題が将来使用されるかどうかに関係なく、それが計算されている限り、結果は表に記入されます。これが動的計画法の基本的な考え方です。特定の動的プログラミングアルゴリズムはさまざまですが、フォーム入力フォームは同じです。

 

 

分類

動的プログラミングは一般に、線形動的ルール、地域動的ルール、ツリー動的ルール、バックパック動的ルールの4つのカテゴリに分類できます。
 
例:
線形動的ルール:迎撃ミサイル、合唱隊、地雷掘り、学校の建設、剣士の決闘など。
地域の動的ルール:石のマージ、バイナリツリーの追加、単語数のカウント、砲兵配置など。
ツリー型の動的ルール:貪欲な9頭のドラゴン、二分探索木、パーティーの喜び、デジタル三角形など。
バックパックの問題:01バックパックの問題、完全なバックパックの問題、グループバックパックの問題、2Dバックパック、パッキングの問題、搾乳( Tongji ACM質問1132)など。
 
アプリケーション例:
最短経路の 問題、 プロジェクト管理 、ネットワークフローの最適化など。
POJ動的計画トピックリスト:
簡単:
  1018、1050、1083、1088、1125、1143、1157、1163、1178、1179、1189、1191、1208、1276、1322、1414、1456、1458、1609、1644、1664、1690、1699、1740、 1742,1887,1926,1936,1952,1953,1958,1959,1962,1975,1989,2018,2029,2039,2063,2081,2082,2181,2184,2192,2231,2279,2329,2336,2346、 2353、2355、2356、2385、2392、2424。
簡単ではない:
  1019、1037、1080、1112、1141、1170、1192、1239、1655、1695、1707、1733(間隔の減算、加算、および収集)、1737、1837、1850、1920(ハノータの拡張バージョン)、1934 (すべての最も長い共通の部分列)、1964(最大長方形領域、O(n * m)アルゴリズム)、2138,2151,2161,2178。
推奨:
  1015、1635、1636、1671、1682、1692、1704、1717、1722、1726、1732、1770、1821、1853、1949、2019、2127、2176、2228、2287、2342、2374、2378、2384、 2411。  [1] 

 

 

 

https://www.cnblogs.com/hithongming/p/9229871.html

おすすめ

転載: www.cnblogs.com/BlairGrowing/p/12735294.html