【问题标题】:Stablized cellular automation稳定元胞自动机
【发布时间】:2021-04-28 09:45:01
【问题描述】:

我正在研究蜂窝自动化模拟。 规则如下:

  • 每个单元格与其 Moore 的邻域交互以更新其值。
  • 单元格位于任何无限维网格中。
  • 单元格可能有一个随机的初始值。
  • 规则是稳定的,经过一定的迭代,会收敛到一个统一的状态。

对于某种编程语言来说不是必需的,所以我们只有基本的数据类型,即 bool、int、它们的 n 维数组等。

我有一个可以随时加载到内存中的任何单元格的初始值。有没有算法可以在不循环整个无限网格的情况下计算其稳定值?

具体来说,我正在研究的规则是 B5678/S45678 二维仿生细胞自动化。

【问题讨论】:

  • 如果您希望每个单元格(即无限数量的单元格)以随机初始值开始,我看不出如何计算任何内容。
  • “经过一定的迭代,它们趋于稳定”:这很模糊。请具体说明“稳定”的含义,“趋于”的确定性以及“确定的迭代”。
  • 根据 Wolfram 的说法,基本元胞自动机可以根据其行为分成几类。在这种情况下,我使用的规则肯定是 Class 1 (Elementary_cellular_automaton)。在更高的维度上,它将达到均匀状态,准确地说是一个“不动点”。

标签: algorithm cellular-automata


【解决方案1】:

是否有任何算法可以在不循环整个无限网格的情况下计算[特定单元格的]稳定值?

对于这个特定的 CA 规则,是的,有点。特别是,您可以almost surely 通过仅检查有限数量的周围单元来确定晶格上任何给定单元的最终稳定状态。但是,您可能需要检查的单元数可以任意大。


首先,让我注意life-like cellular automaton 规则代码“B5678/S45678”表示“多数投票”规则,其中每个单元在下一个时间步长的状态是其自身组成的九个单元中的当前多数状态和它的八个邻居。

这条规则恰好满足单调性:将一个或多个单元格的初始状态从“关闭”翻转到“开启”不会导致任何单元格的未来状态从“开启”翻转到“关闭”,反之亦然反之亦然。换句话说,格子的未来状态是当前状态的单调递增函数。

这种单调性有一些重要的后果。特别是,这意味着如果您有一个处于“开”状态的细胞簇,四周被处于“关闭”状态的细胞包围(反之亦然),并且如果这个簇当前是稳定的(在某种意义上即应用 CA 更新规则一次不会导致集群中的任何单元改变状态),那么它实际上将永远稳定,无论晶格上其他地方发生什么。

这是因为其他地方的事件可能影响集群的唯一方法是改变它周围的一个或多个单元的状态。并且由于所有周围的单元格都处于“关闭”状态,而集群中的单元格处于“开启”状态,单调性确保将任何周围单元格的状态更改为“开启”状态不会导致任何单元格的未来状态群集更改为“关闭”。 (当然,同样的论点也比照适用于由“on”细胞包围的“off”细胞簇。)

(事实上,您实际上并不需要“开启”单元的集群实际上被“关闭”单元包围,反之亦然 - 稳定所需要的只是集群是稳定的,即使它周围的所有细胞都处于相反的状态。)

因此,一般来说,要确定一个细胞的最终状态,只需模拟其周围细胞的时间演化,直到它成为这样一个稳定集群的一部分。

在(几乎可以肯定)有限时间内做到这一点的一种方法是将连续时间步长的 2D 晶格序列视为形成堆叠的 2D 切片的 3D 晶格,并计算此 3D 的连续“金字塔形”部分格子由中心单元在时间步 n 之前的状态、其邻居到时间步 n - 1 的状态、它们的邻居到时间步 n - 2,依此类推。每隔一段时间,检查这个不断增长的金字塔的每一层,看看它们中是否有一个包含中心细胞的稳定簇(在上述意义上)。


假设中心单元实际上最终成为这样一个稳定的有限簇的一部分(随机初始化的晶格上的几乎所有单元最终都遵循此规则;证明留作练习!),此方法最终将找到该簇。然而,根据周围细胞的初始状态,这种稳定可能需要任意长的时间,而细胞的最终状态可能取决于任意远距离的其他细胞的状态。

例如,假设我们感兴趣的单元格恰好位于格子的一个区域中,在该区域中,初始单元格状态恰好像棋盘上的正方形一样排列:四个正交邻域每个细胞都处于相反的状态,而四个对角线邻居都处于与中心细胞相同的状态。显然,这种棋盘格排列是局部稳定的,因为每个单元格(几乎没有!)在其邻居中占多数,但是任何方向上的偏离棋盘边缘周围不稳定平衡的任何偏差都将作为连锁反应传播到整个单元格。因此,棋盘上任何特定单元格的最终稳定状态将取决于棋盘区域周围的单元格的状态,可以任意远。

【讨论】:

  • 谢谢,这很好地解决了我的问题。我们能否计算出几乎可以肯定地确定其最终状态所需的最小范围?还是我应该尝试找到一个最佳值?
  • @mwit30room8:对于数学意义上的“几乎肯定”,没有足够的有限范围:在这种情况下,“几乎肯定”意味着成功概率趋于 100%,因为范围趋于无穷大。如果您确定某个您认为足够好的确定的成功概率(例如,95% 或 99% 或 99.9999%),您可以估计实现该概率所需的范围。 (这可以精确计算,至少对于小范围,但在实践中使用随机抽样可能更容易。)
  • 顺便说一句,我稍微修改了我的答案,指出处于一种状态的细胞群实际上不必完全被处于相反状态的细胞完全包围,以便在相关意义上算稳定.真正需要的是集群保持稳定,即使所有周围的细胞处于相反状态,无论它们是否真的是。这是相关的,因为它可以让您找到更小的集群,从而使用更小的范围。
  • 我的意思是当我想到它的时候。对于 0 次迭代,您需要 1(单元格)的半径,对于 1,您需要 2(其邻居),对于 2,您需要 3,依此类推。这是单元格可以从中获取数据的范围。现在的重点是找到“何时”它会稳定。它只是“几乎可以肯定”(来自试验)还是我们可以精确计算(我们可以处理某种可能的错误)?
  • 对于将来可能会问这个问题的任何人,一些结构可能会自我维持但不稳定。在某些规则中有一些示例(在这种情况下,宽度为 2 的长矩形路径除了结束之外是稳定的)。所以,要计算某一代,就需要使用一定的半径,但要稳定,这是不可能的。要计算它稳定的可能性,可能更难。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多