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

如果您尝试几次,您会看到时间都花在了哪里。

不应该猜测,但我的猜测基本上是所有时间都用于渲染。邻居的评估可能看起来像很多代码,但很可能它非常简单。如果您有办法避免重新渲染未更改的单元格,那可能会节省很多。

于 2012-01-11T22:27:27.967 回答
0

我会推荐使用 OpenGL 和 GLSL。通过这种方式,您可以消除从 cpu 到 gpu 的数据传输,并获得 10 倍或更多的良好加速。

于 2012-06-07T06:01:21.447 回答