我正在对传统的生活游戏实施一些算法更改。
基本上,我目前有两种方法可以实现多线程搜索算法,从而提高先前算法的效率。
更快的搜索会超过内存要求并缩短计算时间吗?
应该提到的是,数组将基本上保持空白,但分配给它的总内存将远远大于链表,更不用说最远的最大非空数组元素的索引也可以存储,以便阻止程序搜索整个数组。
我还应该提到数组存储指向活细胞坐标的指针,因此只能保持与最坏情况测量一样大。我还计划忽略任何NULL
值,以便跳过已被删除的数组元素。
答案 0 :(得分:1)
生命游戏和搜索?????
如果你想要一个多线程Game Of Life,你可以自己计算第n / 2行,但不要将它存储在数组中,只需要在一个缓冲区中,运行两个线程来计算和存储0到n / 2行 - 1分别行n / 2 + 1到n-1,然后将行n / 2复制到结果中。
对于四个线程,首先计算n / 4,n / 2,3 nn / 4的行,给每个线程四分之一的作业,然后将三行复制到数组中。
答案 1 :(得分:0)
如果您的阵列与大多数GOL板一样稀疏,那么列表可能更多,更多更快。指向下一条数据的指针比扫描它更好。
也就是说,总体表现可能并不像其他人提到的那样好。