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