0

私はセル オートマトン シミュレーションを開発しようとしていますが、問題は、各セル (青とベージュで示されている) の近くにあるセルと遠くにあるセルを取得し、どのセルが死んでいるかを判断し、いくつかのルールを使用してそれらを生き生きとさせることです。したがって、反復ごとに配列内のすべてのセルを実行し、これらのセルの近くと遠くのすべてのセルを効率的に取得したいと考えています。

ここに画像の説明を入力

ただし、グリッド上のセルの位置によっては、一部の隣接セルのみが使用可能になります。これまでのところ、これを行う唯一の方法は、使用可能なすべての隣接セルのリストを返す getNeighbours(cell) メソッドを使用することです。生きていないものを取得するために反復する必要があるそのセルの。

getNeighbours(cell):
   If cell.row > 0:
       neighbours.add((coordinate,value),CLOSE_TOP_MIDDLE)
   If cell.row > 1:
       neighbours.add((coordinate,value),FAR_TOP_MIDDLE)
   [...]

ただし、これはオーバーヘッドが大きく、グリッド内のセルごとに多くの比較を行う必要があります。

セルラーオートメーションで一般的に使用される一般的なアプローチはありますか? たぶん、私が使用できるデータ構造はありますか?これまでのところ、グリッドが十分に大きい場合、各反復には多くの時間がかかるためです。

4

1 に答える 1