P. *_*nce 1 c algorithm cellular-automata
让我们将邻域限制为 n=1(这意味着我们始终需要 3 个单元来评估下一代单元)。
下面是 2 状态规则的示例。请注意,上面一行的规则是按特定顺序生成的,而下面一行是数字 30 的位表示。
我找不到 3 状态 CA 的等效可视化。按照 2 状态 CA 的逻辑,它应该包含 27 种可能的结果,但我不知道它们应该按什么顺序生成。下面一行应该是三进制的 30(前导零总共占据 27 个位置)。
是否有一个通用算法可以按照 CA 的常规顺序生成这些排列(无论状态数量如何)?
提前非常感谢您,如果问题很愚蠢,我们深表歉意。:(
您使用的称为 Wolfram 代码(来自 Stephen Wolfram),用于基本 CA。如果您使用更多的州或更大的社区,那么自然扩展就足够了。
你的问题并不愚蠢。
对于三个状态,这将为您提供三进制数。首先将所有三位数字以三进制形式写入(降序):
222, 221, 220, 212, 211, 210, 202, 201, 200, 122, 121, 120, 112, 111, 110, 102, 101, 100, 022, 021, 020, 012, 011, 010, 002, 001, 000
Run Code Online (Sandbox Code Playgroud)
其中3^3有27个,222_3 = 26, 221_3 = 25, 001_3 = 1, 000_3 = 0
现在将 30 分解为以 3 为底数的 27 位数字: 30 = 1*3^3+ 1*3^1,因此只有两位数字等于 1,即第四个和第二个(从右起),这是规则 30对于 radius-1 3 状态 CA:
000000000000000000000001010
Run Code Online (Sandbox Code Playgroud)
此 CA 的行为与规则 30 radius-1 2-state CA 非常不同。
这是半径 1 3 状态的规则 33 (33 = 1*3^3 + 2*3^1):
000000000000000000000001020
Run Code Online (Sandbox Code Playgroud)
因此,对于 n,r,按降序枚举以 n 为基数的所有 2r+1 位数字,并为每个数字关联一个 [0,n[ 中的值。