私はサイズがLxL
の正方格子を持っています。この格子では、古典的な4近傍格子または8近傍格子(対角を含む)を持つことができます。周期的境界を持つ格子上の距離
(i1,j1)
と(i2,j2)
の2つの点の座標が与えられているので、周期的な境界条件も考慮して、4近傍グリッドと8近傍グリッドの間の距離を計算します。
周期的境界条件がない4近傍の場合、距離はマンハッタン距離d=|i1-i2|+|j1-j2|
です。 定期的な境界を考慮したい場合は、距離を何度か計算して(たとえば(i2,j2)
で(i2,j2-L)
)、最小限に抑えることができますが、もっと効率的な方法があると確信しています。
については、Calculate distance on a grid between 2 points(私の場合はsqrt(2)
を1に置き換えます)の境界条件に関する問題は解決しません。
これらの距離の計算方法に関する擬似コードはありますか?より速く、より良い。
おそらく最適ではありませんが、境界条件を反映するようにリンクされた答えを修正する必要があります。「同じ行または同じ列のいずれかになるまで、目標に向かって斜めに移動する」と表示されます。境界条件では、4つの可能な対角線の方向はすべて「目標に向かって」とみなすことができます。各方向にそれを行い、分を取る。あなたはすでに4人の仲間のようにしています。 –
明確にする:「周期的な境界条件」とは、オブジェクトがグリッドの上から移動した場合、グリッドの上から移動し、その逆に移動し、グリッドの左側から移動すると、グリッドの右側に再び現れます。グリッドとその逆?また、与えられた列 '(i1、0)'と '(i1、L-1)'の上端点と下端点は区別されますが、 'と'(i1、L) 'は同じ点ですか? –
@RoryDaulton周期的な境界では、事実上、スペースはトーラスの形をしているので、トップ・ボトムと左右がつながっています。あなたが言うように、私は '(L、L)=(0,0)'を使い、 '(i1,0)'と '(i1、L-1)'は距離1にあります。 – VictorSeven