|
评论
|
一个完整的标记二叉树的根为0级,2个节点为1级(每个节点用可用符号1、2中的一个标记),2^n个节点为n级(每个都用唯一的n位序列标记)。树可以通过采用一个规则来构造,即在每个连续级别上,每个子节点通过向父节点的标签添加一个符号来形成其标签。
通过禁止某些子节点,可以在状态驱动规则上使用来创建不完整的树。如果节点的状态是其标签的最后L位,则可能存在2^L个状态。设a(L,n)是表示应用任何给定规则后n级有效节点数的单个值,a(L,n)是值a(L、2)、a(L和3)……的序列。。。,a(L,n)。
假设这个规则:对于给定的L,所有的2^L状态都允许通常的二叉分支,除了一个状态将输出限制为单个子节点。该对中被禁止的子项具有与父项状态相同的最后一个数字的标签。
此规则创建一组序列{a(L,n)},这些序列与标准的“n步斐波那契”或“n-anacci”序列基本相同。这些可以显示为矩形数组中的行,以L递增:
2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...
2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, ...
2, 4, 8, 15, 29, 56, 108, 208, 401, 773, 1490, 2872, 5536, 10671, ...
2, 4, 8, 16, 31, 61, 120, 236, 464, 912, 1793, 3525, 6930, 13624, ...
2, 4, 8, 16, 32, 63, 125, 248, 492, 976, 1936, 3840, 7617, 15109, ...
2, 4, 8, 16, 32, 64, 127, 253, 504, 1004, 2000, 3984, 7936, 15808, ...
2, 4, 8, 16, 32, 64, 128, 255, 509, 1016, 2028, 4048, 8080, 16128, ...
取该表的反对角线,得到当前条目F(n)。
与标准n-anacci序列的比较:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...
0、0、1、1、2、4、7、13、24、44、81、149、274、504、927、1705、3136。。。
0, 0, 0, 1, 1, 2, 4, 8, 15, 29, 56, 108, 208, 401, 773, 1490, 2872, ...
0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 31, 61, 120, 236, 464, 912, 1793, ...
0, 0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 32, 63, 125, 248, 492, 976, ...
0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 32, 64, 127, 253, 504, ...
0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 32, 64, 128, 255, ...
显示A(L,n)序列仅在没有L+2启动值时不同。这是构造方法的一个伪影,因为当标签太短而无法包含状态序列时,(L,n)是未定义的-即,对于级别<L的所有节点。
这种构造方法可以推广(参见链接),这表明简单规则定义的输出包含丰富的已知序列。
该数组的作者使用F(n)表示展平表的第n项(对于n>=1)。此外,作者似乎使用A(L,n)表示表中第L行和第n列中的术语。显然,L>=2,但不清楚n是从1开始还是从2开始。因此,在下面的注释和公式中,我使用m为列编制索引,并将m从1开始。
设A(L,m)是水平(行)L和列m中的项,其中L>=2,m>=1。这里L是广义斐波那契数列的阶。
对于m=1,…,我们有A(L,m)=2^m,。。。,L-1和A(L,L)=2^L-1。也,
A(L,m)=A(L、m-1)+A(L和m-2)+…+对于m>=L+1,A(L,m-L)。
设F(n)为作者序列(展平表)中的第n项,对于k>=2和i=1..k-1,我们得到F((k-1)*(k-2)/2+i)=A(k-i+1,i)。
(结束)
|