0

ある種のアルゴリズムまたはそのようなものを使用して、セルオートマトンを高速化することは可能ですか? XNA で作成された Conway の Game of Life 実装を使用しており、完全に動作しますが、128x128 セルより大きいグリッドを使用すると、非常に遅くなるという問題があります。

コードや XNA がテクスチャと描画を処理する方法とは関係ないと思いますが、非常に多くのセルを更新する (つまり、各セルの隣接セルを評価し、それに基づいて新しい状態を取得する) という事実は、大量の計算です。 .

もちろん、理想的なセル オートマトンは無限大である必要がありますが、実際にはそれは不可能です。しかし、私の意見では、128x128 はシステムがどのように動作するかを実際に確認するには小さすぎます。

どんな助けでも大歓迎です!

4

3 に答える 3

1

Hashlife アルゴリズムは、四分木、ハッシュ、記憶を使用して CA の時間と空間を圧縮し、パフォーマンスを大幅に向上させます。実装例については、Gollyを確認してください。

私はまだ自分でそれを理解しようとしており、良いライブラリを探しています。

ここに良い説明があります(サンプルコード付き): http://www.drdobbs.com/jvm/an-algorithm-for-compressing-space-and-t/184406478

于 2013-01-21T00:46:24.530 に答える
0

OpenGL と GLSL を使用することをお勧めします。このようにして、CPU から GPU へのデータ転送を排除し、10 倍以上の高速化を実現できます。

于 2012-06-07T06:01:21.447 に答える
0

これを数回試してみると、時間がどこに行くかがわかります。

推測する必要はありませんが、私の推測では、基本的に常にレンダリングに費やされています。近隣の評価は多くのコードのように見えるかもしれませんが、非常に単純である可能性があります。変更されていないセルの再レンダリングを回避する方法があれば、大幅に節約できます。

于 2012-01-11T22:27:27.967 に答える