ダイナミックプログラミング - 記事の動的プログラミングの本質を理解します

ダイナミックプログラミングは、多くの場合、難しい問題です。我々は、動的プログラミングの他の人々の理解を見ていきます、私はV-書かれた記事を共有しましょう:

https://www.zhihu.com/question/23995189/answer/1094101149?utm_source=com.tencent.tim&utm_medium=social&utm_oi=732325277794836480

非常に重要なポイントを与え:動的なプログラミングの問題に直面し、この記事内側:

最初のステップ:

これは、最も重要なステップです:はっきりD [i]は(一次元の動的プログラミング)またはd [i]は[J]との定義は、その意味を知っています!この手順は非常に重要であり、そしていくつかのトピックを直接見ることができる、と私たちは、自分の精錬を掘る必要があるトピックの一部

パートII:

状態遷移方程式の定義:

、D [i]とD 1次元ダイナミックプログラミングのための[I-1]又はさらにDは[I-2](通常はD [i]とD [I-1]、D [I-あります2関係]関係)。

二次元動的プログラミングは、DとD [i]は[J]は[I-1] [J-1]又はD [i]は[J-1]又はD [I-1]を[J]またはD [I -1] [J + 1]またはd [I + 1] [関係J-1]です。

それがあることを、本質的に、転写電流状態と隣接する状態との関係を定義することです。ここでは、完全に[J] [I] [I]又はD Dに起因するが、現在の状態の物理的な意味及び説明したものと同じである状態、の意味を決定することを認識する必要があります

第三段階:

状態遷移関係確立の境界によると:

一般に、1次元の場合のために、我々は、D [0]、D [1]を確立する、2次元の場合のために、Dを確立する[0] [0 ... N-1]、D [0 ... N-1 ] [0]またはD [i]は[I](対角)、二次元であり、それは一般的に最初の列の境界線または第1の斜めことが確立されている(DPが2次元マトリクスです)

 

上記の3つのステップの順序、動的なプログラミングの問題を解決するための上記の3つの手順に厳密に従っていないミスを、行ってください!

 

経験:話題のほとんどは、通常、2次元DP、文字列に関連し、特に問題は、すべての2次元DPの90%を必要とDPは通常、1次元配列クラスです。

三つのステップが行われる上、基本的にはこれで完了です!

おすすめ

転載: www.cnblogs.com/shaonianpi/p/12577296.html