我正在研究Wolfram的Mathematica生成随机数的方法,发现它使用Cellular Automata Rule 30。它的基本解释如下:
基本元胞自动机的演化完全可以通过一个表格来描述,该表格指定给定单元格在下一代中将具有的状态,基于其左侧单元格的值,单元格本身的值,以及右侧单元格的值。
由于对于与给定小区相邻的三个小区,存在2 x 2 x 2 = 2 ^ 3 = 8个可能的二进制状态,因此总共有2 ^ 8 = 256个基本元胞自动机,每个都可以用8位二进制数索引(Wolfram 1983,2002)。例如,下面说明了给出规则30的演变的表格(二进制,规则30写为 30 = 00011110 )。在该图中,三个相邻单元的可能值显示在每个面板的顶行中,并且中央单元在下一代中获得的结果值在下方显示在中心。
上图如何与表格上半部分的各个模式相关?我知道图表是由它们组成的,但是它是如何按顺序形成的。我没有看到任何行/列区别特征,或许可以告诉我那些层是使用给定表中的上行构建的。简而言之,我希望看到俄罗斯方块背后的这种现象
答案 0 :(得分:4)
图案按行顺序排列。我们从第一行开始:一个黑色单元格。
在下一行中,每个单元格查看上面一行中的三个相邻单元格,并将该模式与规则进行比较。因此,左侧小区看到--X
,中间小区看到-X-
,右侧小区看到X--
;根据规则,所有这三个产生黑色细胞(每个规则的底部细胞)。
在下一行中,中间五个单元格显示--X
,-XX
,XXX
,XX-
和X--
,因此它们变为{{1}用规则转换后。
请注意,任何看到上方有三个白色单元格的单元格也都是白色,因此我们不必担心45度金字塔外的单元格。另请注意,由于XX--X
和--X -> X
,45度金字塔的每一行始终都有一个黑色单元格。
答案 1 :(得分:4)
主图是不由上部的模式组成,它们由算法生成。
主图一次演变为一行。从第1行中心的单个黑色单元格开始。
表格的上半部分是用于生成图表下半部分的每一个新行的规则。
新行上每个单元格的颜色(黑/白)由新单元格上方的3个单元格确定。规则决定了颜色。例如,您的示例中的第一条规则是,如果上面的3个单元格都是黑色,那么新行中的单元格将为白色。
每个图表使用相同的8个模式来确定下一行单元格的颜色。
这8条规则的输出形成一个二进制字,如图所示,这是Rule
。在这种情况下,输出为00011110,二进制为30。因此,名称为规则30。
这些规则的基本兴趣是可以从这些简单的原则生成高度复杂的模式,对不起,这里没有俄罗斯方块:)