次のような状況があります。離散ドメイン 0、1、...、L には M 個の独立したランダム ウォーカーがあります。これを N 個の同一ドメインに対して行います。これにより、が domain 上の walker の位置である行列X
が得られます。ランダムなステップを作成するには、ランダムな +1 と -1 を含む同じ形状の行列を matrix に追加します。次に、エッジを処理します。これはうまくいきます。X[i, j]
i
j
X
ただし、このモデルを拡張して、相互に通過できない固体粒子を持たせたいと考えています。これは 2 つのケースで示されます。
- 1 つのパーティクルは位置
i
にあり、2 番目のパーティクルは位置 にありi+1
ます。最初のパーティクルは右に移動し、2 番目のパーティクルは左に移動します。 - 1 つのパーティクルは位置
i
にあり、2 番目のパーティクルは位置 にありi+2
ます。最初の粒子は右に移動し、2 番目の粒子は左に移動します。
すべての手順を個別に行う場合、各手順を手動でチェックして、それが合法的な手順であるかどうかを確認できます。ただし、これはO(M^2N)
パフォーマンスが悪いです。X[i,j], X[k, j]
できればベクトル化された方法で、どの行列要素のペアが互いに通過する2つの粒子になるかを検出するより効率的な方法はありますか? このようにして、シミュレーションにこれらのステップをスキップさせることができます。