2017-08-11 2 views

答えて

2

テーブル自体の方向は、任意の違いはありません、それは些細なインデックス変換の下で同型です。つまり、そのディメンションのサイズからそのインデックスを減算することによって、任意のディメンション内でテーブルを簡単に反転できます。これは何の違いもなく、アルゴリズムはあなたがそれをしていることを「知っていない」と言うこともできます。そのような変換を抽象化するテーブルのようなオブジェクトを作ることさえできるので、深く下に向かうとテーブルが反対方向に満たされます。

サブ問題が解決される順序は、依存関係の構造に従わなければなりません。サブ問題を解決するための適切な順序を見つけることは、実際には「DPへの回帰」チェックリストの重要なステップです。通常、見落とされることはよくあります。 。あなたはここを参照してください(と何もすぐに明らかに再帰的な定義から)することができますどのような

Fibonacci graph

いくつかの引数を指定してその呼び出しです。しかし、例えば、ここではフィボナッチ再帰の構造は、ウィキペディアの礼儀であります引数の小さい呼び出しにのみ依存します。したがって、最も低い引数から高い順にテーブルを塗りつぶすことは有効な順序であり、テーブル内のセルが必要なときにはすでに計算されていることが保証されます。 (通常これは前のすべてのアイテムではなく、前の2つのアイテムだけを保持するためにさらに最適化されていますが、ここではそのポイントではありません)

特に高次元ではありませんが、 (SRC:geeksforgeeks.org)

Edit Distance structure

あなたはすべてのED(x、y)のが唯一のDXとdyが0または1とされないED(X-DX、Y-DY)に依存していることがわかりますともにであり、これは多くの注文(例えば、限定されない):

01 0,0から始まる(Y、X)(それらの答えに提示)
  • (X、Y)上の辞書式(ちょうど内側および外側ループを反転)
  • 抗対角線
    • 辞書式、ダウン1つのステップにより充填されたセルの矩形を拡張、右、下、再びなど
    • kでそれを拡張するダウン、右ステップにより空のセルの矩形を縮小
    • ステップなど
    • 四分のceで半径を拡大する円0,0

    あなたが保存しなければならないのは、eD(a、b)が計算されるときに、必要なものすべてが既に計算されているということです。これにより多くの自由が得られます。空のセルを空にした空のセルをすべて左と上に取り、ランダムに塗りつぶすこともできます。しかし、ではなく、がこの問題のために働いています。(m、n)から始まる表を塗りつぶしています - 必要なセルについて考えてください:まだ塗りつぶされていないセル1つのステップで最終回答を計算することができます)。

    依存グラフに関しては、どんなトポロジカルな順序も機能します。