3

少し前に、私はセルオートマトンのような Wa-Tor を書きました (ウィキペディアを参照)。安定したシステムを得るために多くの微調整を行った以外は、非常にシンプルでうまく機能しました。しかし、それ以来、セルを「現実的に」更新する方法を自分自身 (そして今はあなた) に尋ねています。

私の「世界」はグリッドで、常に左上から右下に更新されていました。IMO は、上と左に近いセルが常に高速であることも意味します。たとえば、セル [3, 3] の魚は、更新される前に [3, 2] のサメに食べられる可能性があります。セルが反対の位置にある場合、魚は更新される前にサメから離れることができるため、常にサメから逃げます。

これは「問題」(または少なくとも非現実的)であるというのは正しいですか?

現実的な設定では、すべてのセルを同時に更新する必要がありますが、そのようなものを実装する方法がわかりません。私が想像できる別の方法は、「シャッフルされた」順序でセルを評価することです。

この問題をどのように解決しますか / そのような問題は通常どのように解決されますか?

4

2 に答える 2

1

現実的な設定では、すべてのセルを同時に更新する必要がありますが、そのようなものを実装する方法がわかりません。

これが私が提案するアプローチです。「古い」グリッドと「新しい/現在の」グリッドの 2 つのグリッドを用意します。次世代を計算するときは、古いグリッドに基づいて計算し、結果を新しいグリッドに書き込みます。次に、新しいグリッドを表示します。新しいグリッドが「古い」グリッドになり、古いグリッドが新しいグリッドになるようにポインタを交換します。繰り返す。

于 2012-01-13T17:01:31.080 に答える
1

@Rogach が言及しているように、同時更新は機能しません。セル オートマトンは非決定論的であるため、2 匹の魚はお互いの次の位置を認識できず、衝突する可能性があります。

セルオートマトンが非決定論的であることを考えると、最善の解決策は、非決定論的な方法でグリッドを更新することだと思います。無作為に。更新するセルをランダムに選択します。セルをランダムに選択し、どのセルを更新したかを追跡して、各セルがティックごとに正確に 1 回更新されるようにするか、セルをランダムに選択して追跡を気にしないようにします。2 番目の方法は簡単ですが、一部のセルが更新される頻度が若干高くなる可能性があります。ランダム関数が均等に分散されている場合、平均してすべてのセルが同じ量だけ更新されます。

于 2012-01-15T13:19:32.723 に答える