我正在尝试开发一个元胞自动机模拟,问题是我想获得每个细胞的近邻和远邻(以蓝色和米色表示)并确定哪些细胞已经死亡并使用一些规则使它们复活。因此,在每次迭代中,我都会遍历数组中的所有单元格,并且我想以某种方式有效地获取这些单元格的所有近邻和远邻。
但是,根据网格上单元格的位置,只有一些邻居可用,到目前为止我想到的唯一方法是使用 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)
[...]
然而,对于网格中的每个单元格,这是一个很大的开销和大量的比较!
是否有任何通常用于蜂窝自动化的通用方法?也许我可以使用任何数据结构?因为到目前为止,如果网格足够大,每次迭代都将花费大量时间。