如何生成三态细胞自动机规则?

时间:2016-05-19 14:41:12

标签: c algorithm cellular-automata

让邻域限制为n = 1(这意味着我们总是需要3个单元来评估下一代单元格)。

For

以下是2州规则的示例。请注意,规则的上一行是按特定顺序生成的,而下一行是数字30的位表示。

我无法找到3状态CA的等效的单个可视化。遵循2状态CA的逻辑,它应该包含27个可能的结果,但我不知道应该生成它们的顺序。下排应为30三进制(前导零占据总共27个位置)。

是否存在以常规CA顺序生成这些排列的通用算法(无论状态数是多少)?

非常感谢你,如果这个问题很愚蠢,那就很抱歉。 :(

1 个答案:

答案 0 :(得分:1)

您使用的是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

其中有27个3 ^ 3,而222_3 = 26,221_3 = 25,001_3 = 1,000_3 = 0

现在将30分解为3个27位数的基数:30 = 1 * 3 ^ 3 + 1 * 3 ^ 1,所以只有两个数字等于1,第四个和第二个(从右边),这里对于radius-1 3态CA,则为规则30:

000000000000000000000001010

此CA与规则30 radius-1 2-states CA具有非常不同的行为。

这是radius-1 3态的规则33(33 = 1 * 3 ^ 3 + 2 * 3 ^ 1):

000000000000000000000001020

因此,对于n,r,按降序枚举基数n中的所有2r + 1位数,并为每个数字关联[0,n [。