[アルゴリズム]矩形和
3821 ワード
矩形の合成問題の解答と説明
:今日はDPやダイナミックプランニングと呼ばれるダイナミックプランニング法に関する問題にほとんど執着しています(?)同じように、李文帝も同じだ.このタイプの答えはもっと解...まず今週はできるだけ多くの問題に触れたいのですが...難しすぎます.
もんだいぶんせき
問題は、
もんだいせっけい
もし
1)要求解の値を定義する(ローカル問題を定義する)。
そうすれば、こんなルールが见つかるはずだ.正直、これは創意的な面で、どうやってこれを発見できるかは説明できません.これは大量の練習、あるいは正直直感的なものです.いずれにしても、上の図を説明すれば、(0,0)~(1,1)を要求する和が成立することがわかります. T(n,m) = T(n,m-1)+T(n-1,m)-T(n-1,m-1) + T(n,m)
ここで、T(n,m)とは、(0,0)を基準として任意のn,mの間の数の和を求める式であり、この図を基準として式を説明すると、T(1,1)は、0,0を基準として1,1の間の数の和を求め、T(1,1)=表中の(1,0)+(0,1)-(0,0)+(1,1)+(1,1)+(1,1)+(1,1)
= -2 + -8 + 1 + -9 = -18
表示されます.これは、赤い線で区切られた部分の和+黄色い線で区切られた部分の和+が、現在検索する範囲の右下隅にある要素の値(浅緑の円)になります.黄、赤い線を計算するときに2回(0,0)計算される式です.この場合、x=0、すなわち、最初の行の式が通じない点に注意してください.T(0,3)を求めるために上記の式T(0,2)+T(−1,3)−T(−1,2)+T(0,3)を用いると、−1は一部に値がないので式は使えなくなる.したがって、最初の行は、例えば、現在の要素に前の要素を加える方法で計算されるべきである.T(n,m) =
1)最初の行:
=実表(n,m)+T(n,m-1)
=表中の(n,m)に対応する要素+その軸上の前の要素の和
2)2行目から:
= T(n,m-1)+T(n-1,m)-T(n-1,m-1) + T(n,m)
: 그럼 우리는 1번 단계로 어떤 값을 구할지를 결정했고(0,0부터 임의의 수 n,m까지의 요소들의 합을 구하기), 그것을 하다가 그것을 구하기 위한 식까지(위의 식)구했다. これは動的計画法の第2段階が完了したことを示している.
3)実コード実装
:以上のダイナミックプランニング式はコードで実現されており、エラーの部分j-1,i-1がそれぞれ0未満である場合、すなわち、上記で確立した式が適用できない部分については、最初の行のみが例外処理され、そうすることはできず、最上位と最左辺の行に対して例外処理を行うべきである.実際の実施では、アレイごとに実施されるので、x軸が-1の計算、y軸が-1の計算を例外的に処理しなければならない!
:最上位の問題テーブルをテストケースに戻し、0、0から特定の座標の和までの配列を生成し、上図に出力します.出力がよく見えるので、次のステップに進みます.
:問題で示した例を考えると,(1,2)~(3,3)を求める.私たちが把握している情報に基づいてこれらの情報を導出するには、まず(0,0)からの情報を持っているので、これらの情報を利用するには、上図のようにピンク部分(問題の例)の和を求めることができ、それをめぐってand(0,0)を囲むことができます.最初の範囲の薄い緑色のブロック部分からピンク部分と青部分とオレンジ部分を外せばいいのではないでしょうか.(この場合は重複する部分を取り除く必要があります)浅緑色の部分(0,0から3,3までの範囲)-
[青の範囲(0,0から3,1の範囲)+オレンジの範囲(0,0から0,3の範囲)-減算を繰り返す範囲:黄色の範囲]
:上記の式を考えると、完全に問題を解くことができます.しかし、この場合、もう1つのブランチは処理する必要があります.
-このときlocationは[x,y,z,a]リスト(x,y,z,aは上で指定したインデックス範囲の順)
-boardは、上記で作成した0、0から特定の座標の合計からなる2次元配列
ブランチ処理
=>これは私たちが最初にカラーブロックで表した場合の分割処理です.」ライトグリーン-(青+オレンジ-黄色)「
まとめとコメント
:この問題はダイナミックプランニング法のほかに、考慮すべき要素がたくさんあります.しかし、ダイナミックプランニング法にますます自信があるようだ.要求される値を定義することが最も重要であり、値を定義する過程でトピックを利用して再帰構造を見つけなければならない.すなわち,これまでの自分(例えばn−1)を用いてnの構造を求めることができる.これを見つけて、それを救う方法を見つけて、それから問題を解けばいいです.話は簡単だが、難しいから練習を続けよう.
Reference
この問題について([アルゴリズム]矩形和), 我々は、より多くの情報をここで見つけました https://velog.io/@0715yk/Algorithm-직사각형의-합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol