本网站由以下捐款支持:OEIS基金会.

用户:Peter Luschny/Sterns Diatomic

来自OeisWiki
跳转到:航行,搜索

有理树和二进制分区

关键词:Stern双原子数组,Dijkstra fusc函数,Stern-Brocot树,Calkin-Wilf树,L-树,Stern矩阵,超二元表示,超二元划分,
与序列有关: A002487号,A174980型,A174981号.

斯特恩双原子阵列重温

理查德·斯坦利最近问数学溢出(现在的问题是社区维基):

我对结论出乎意料的定理感兴趣。[...]
我最喜欢的是以下内容。设f(n)是写非负数的方法数整数n是2的幂之和,如果2的幂不能使用两次以上。例如,f(6)=3,因为我们可以将6写成4+2=4+1+1=2+2+1+1。我们有
(f(0),f(1),…)=(1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, ...).
结论是数字f(n)/f(n+1)遍历所有约化正数每个有理数恰好一次。

查找序列时,我发现Igor Urbiha的以下评论:

A002487号:=proc(m)局部a,b,n;a:=1;b:=0;n:=米;当n>0时,如果类型(n,奇数)为do,则b:=a+b,否则a:=a+b结束if;n:=地板(n/2);结束do;b;结束进程:

节目改编自E.Dijkstra,《计算机文选》,施普林格出版社,1982年,第232页。我考虑了一下此函数的泛化:

SternsDiatomic:=proc(m,i,j)局部a,b,n;a:=i;b:=j;n:=米;当n>0时如果n mod 2=1,则b:=a+b,否则a:=a+b-fi;n:=iquo(n,2);od;[a,b]结束:

以下是六种最简单的变体它生成:

seq(op(1,Sterns双原子(i,1,0)),i=0..32);1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 3, 1, 2, 1, 1, 1, 4, 3, 5, 2,seq(op(2,Sterns双原子(i,1,0)),i=0..32);0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, 1, 5, 4, 7, 3,
seq(op(1,Sterns双原子(i,0,1)),i=0..32);0, 0, 1, 0, 2, 1, 1, 0, 3, 2, 3, 1, 2, 1, 1, 0, 4, 3, 5, 2, 5,
seq(op(2,Sterns双原子(i,0,1)),i=0..32);1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, 1, 5, 4, 7, 3, 8,seq(op(1,Sterns双原子(i,1,1)),i=0..32);1, 1, 2, 1, 3, 3, 2, 1, 4, 5, 5, 4, 3, 3, 2, 1, 5, 7, 8, 7, 7,seq(op(2,Sterns双原子(i,1,1)),i=0..32);1, 2, 3, 3, 4, 5, 5, 4, 5, 7, 8, 7, 7, 8, 7, 5, 6, 9, 11, 10,

参数(i,j,op(k))映射为遵循OEIS中的序列。

生成序列的解释
(1,0,1) A070879美元mod a前导1 按行读取的斯特恩双原子数组
(1,2) A002487号 斯特恩双原子级数
(0,1,1) 缺少   ?
(0,1,2) A002487号mod a缺少0 斯特恩双原子级数
(1,1,1) A047679号mod a前导1 全Stern-Brocot树中的分母
(1,1,2) A007306号mod a缺少1 Farey树分数的分母

中的注释A002487号观察到:“因为A007306号(n) =a(2n+1),此程序可适用于A007306号通过替换b:=0乘b:=1。“事实上,这是我们设置中的情况(1,1,2)。至少我们找到了一个简单的计算方法A070879美元A047679号.(例如,复杂的方法A047679号在注释中使用Mathematica计算A007305号). 现在问题来了是:是否有适合于总体情况?

seq(SternsDiatomic(i,`*`,`#`),i=0..20);[1* + 0#, 0* + 1#], [1* + 0#, 1* + 1#], [1* + 1#, 1* + 2#],[1* + 0#, 2* + 1#], [1* + 2#, 1* + 3#], [2* + 1#, 3* + 2#],[1* + 1#, 2* + 3#], [1* + 0#, 3* + 1#], [1* + 3#, 1* + 4#],[3* + 2#, 4* + 3#], [2* + 3#, 3* + 5#], [3* + 1#, 5* + 2#],[1* + 2#, 2* + 5#], [2* + 1#, 5* + 3#], [1* + 1#, 3* + 4#],[1* + 0#, 4* + 1#], [1* + 4#, 1* + 5#], [4* + 3#, 5* + 4#],[3* + 5#, 4* + 7#], [5* + 2#, 7* + 3#], [2* + 5#, 3* + 8#],

Stern的双原子阵列是一个序列相对于两个符号(此处`*`和`#`)和一个操作(此处+)的对。为符号选择0和1会产生一个不错的结果;然而,这个选择掩盖了完整的计算结构。(Dijkstra命名了他的功能fusc公司因为它太模糊了。)行读取缺少的“双原子数组”:

n\k(不可用) 0 1 2 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0                              
1 1 0 1                            
4 2 0 2 1 1                        
13 0 2 1 2 1 1                
40 4 0 4 5 2 5 4 1 2 1 2 1 1

第n行的总和为(3n个-1)/2,第n行长度为2n个每一列都是一个算术级数。

如果我们命名函数卢斯科(这是Dijkstra的恶习模糊控制),让Maple计算

seq(lusc(k+1)/lusc(k),k=2..2);seq(lusc(k+1)/lusc(k),k=4..5);seq(lusc(k+1)/lusc(k),k=8..11);seq(lusc(k+1)/lusc(k),k=2^i.(2^i+2^(i-1)-1);

我们把所有减少的非负有理数只有一次。

0/11/2, 1/12/3, 3/2, 1/3, 2/13/4, 5/3, 2/5, 5/2, 3/5, 4/3, 1/4, 3/14/5,7/4,3/7,8/3,5/8,7/5,2/7,7/2,5/7,8/5,3/8,7/3,4/7,5/4,1/5,4/1

所以我们观察到双原子阵列显示的内容超出了实际需要。我们需要的是lusc序列.所以让我们用一些Maple代码总结一下我们的发现。

lusc函数:

lusc:=进程(m)局部a,b,n;a:=0;b:=1;n:=米;而n>0则会如果n mod 2=1,则b:=a+b,否则a:=a+b-fi;n:=iquo(n,2);od;结束语:

lusc序列:

luscSeq:=进程(n)局部i,k;对于i从1到n do打印(seq(lusc(k),k=2^i..2^i+2^(i-1)))od端:

甘蓝树:

luscTree:=进程(n)局部i,k;对于i从0到n do打印(seq(lusc(k+1)/lusc(k),k=2^i..2^i+2^(i-1)-1))od端:

lusc序列开始

1, 0, 2, 1, 1, 3, 2, 3, 1, 2, 4, 3, 5, 2, 5, 3, 4, 1,3, 5, 4, 7, 3, 8, 5, 7, 2, 7, 5, 8, 3, 7, 4, 5, 1, 4,

显示这个很方便作为三角形的序列:

1, 02, 1, 13, 2, 3, 1, 24, 3, 5, 2, 5, 3, 4, 1, 35, 4, 7, 3, 8, 5, 7, 2, 7, 5, 8, 3, 7, 4, 5, 1, 4

从右向左读取行编写lusc序列的另一种甚至更自然的方法是:

0, 1, 1, 1, 2, 2, 1, 3, 2, 3, 3, 1, 4, 3, 5, 2, 5, 3,4, 4, 1, 5, 4, 7, 3, 8, 5, 7, 2, 7, 5, 8, 3, 7, 4, 5

为了便于比较:斯特恩双原子序列开始

0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, 1, 54, 7, 3, 8, 5, 7, 2, 7, 5, 8, 3, 7, 4, 5, 1, 6, 5, 9

有理树

总之,我们进入了树木的世界现在。这本百科全书有一个特别的页面,The_Stern-Brocot_or_Farey树,并提示许多相关序列。在维基百科上有一个条目SB-树CW-树.

让我们比较一下这些树。鉴于Stern-Brocot树穿过积极的有理数我们的树穿过非负的有理数。虽然可能是自然的从自然语言中省略零不是理性的省略理性的零。

列出简化理性的树。

给定一个约化分数,其中是它位于CW树?下一个函数通过列出(唯一)给出答案从树的根到包含分数的节点的路径。

FractionToPathInCWtree:=proc(a,b)本地路径,Rec;记录:=程序(a,b)如果a=1和b=1,则路径:=“@”.path;elif a<b then path:=“L”.path;Rec(a,b-a);elif a>b则路径:=“R”.path;Rec(a-b,b);else路径:=“?”fi-end;#不是相对最好的路径:=“”;Rec(a,b)结束:

(此处“L”.“ABC..”->“LABC..”表示串联操作。)注意尼科马科斯的算法是建立的在这个小功能中。这为一些惊人的新见解打开了大门。。。

相反,给定树中的路径从根开始,它将以什么分数结束?

PathInCWtreeToFraction:=进程(路径)局部a、b、x;对于路径do中的x如果x=“?”,则返回(-1)#无效路径elif x=“@”则a:=1;b:=1;#elif x=“L”,然后b:=b+a否则a:=a+b-fi;od;a/b端:

例如FractionToPathInCWtree(3,4)将输出“@RRL”,它表示:“从根开始@,向右,向右,单步左侧。您到达的节点包含3/4。“
反向路径InCWtreeToFraction(“@RRL”)将输出3/4。

接下来,我们要将CW-tree映射到以一对一的方式创建L树。树可以通过两种基本方式枚举。

“西式”枚举12 ? 4 ? 5 ? 6 ? 7. . .和“东方风格”的列举02 ? 16 ? 5 ? 4 ? . . .

CW-树在东部风格,西方风格的L树。假设分数a/b位于右侧对角线(在b=1的情况下)在一棵树中,则相同的分数位于另一棵树树也位于右对角线处,仅高出或低出一行,具体取决于观察方向。对于所有其他分数,情况更简单:
如果a/b位于CW树中的位置k(列举东方风格)然后它也位于L树中的位置k(西方样式枚举)。
这种一对一的对应关系表明rational在L树中只出现一次,因为我们知道CW-树具有此属性。

让我们来说明这个双射。

CWTree:=proc(n)局部i,R;对于从0到n-1的i,R:=2^i..2^(i+1)-1:打印(seq([3*2^i-k-2,fusc(k)/fusc(k+1)],k=R));od端:
[0,1]“东方风格”:[位置,值][2, 1/2],[1, 2  ][6, 1/3],[5, 3/2],[4, 2/3],[3, 3  ][14,1/4]、[13,4/3]、[12,3/5]、[11,5/2]、[10,2/5]、[9,5/3]、[8,3/4]、[7,4]
L树:=proc(n)局部i,R;对于i从1到n的do R:=2^i..3*2^(i-1)-1:打印(seq([k-2^(i-1),lusc(k+1)/lusc(k)],k=R));od端:
[1,0]“西方风格”:[位置,价值][2,1/2],[3,1  ][4,2/3],[5,3/2],[6, 1/3],[7, 2  ][8,3/4],[9,5/3],[10,2/5],[11,5/2],[12,3/5],[13,4/3],[14,1/4],[15,3]

另一个有用的工具来枚举L树(实际上它是lusc函数的基本递归)是为了给出顶点的子顶点数。

ChildrenByVertexNumber:=进程(n)局部K;K:=2^简化(楼层(对数[2](n)))+n;#忽略“简化”printf(“顶点%2d:%4a的子节点是%4a和%4a。\n”,n、 lusc(K+1)/lusc(K),luscseq(儿童按顶点编号(i),i=1..15);顶点1:0的子节点是1/2和1。顶点2:1/2的孩子是2/3和3/2。顶点3:1的孩子是1/3和2。顶点4:2/3的孩子是3/4和5/3。顶点5:3/2的孩子是2/5和5/2。...

如果我们绘图,就会出现一个漂亮的模式上的L树(红色)和CW树(黑色)相同的画布。

LTreeByVertexNumber:=进程(n)局部K;K:=2^简化(楼层(log[2](n)))+n;lusc(K+1)/lusc(K)结束:CWTreeByVertexNumber:=进程(n)fusc(n)/fusc(n+1)结束:R: =1.511:pplot:=(f,颜色)->点图({seq([k,f(k)],k=R)},颜色=颜色,厚度=3):A:=pplot(LTreeByVertexNumber,红色):B:=ppot(CWTreeByVertexNumber,黑色):C:=绘图(log[2](y),y=R,颜色=蓝色):显示([A,B,C]);

RationalTreePattern.png

从CW树到L树可以被看作是将零添加到CW树。它改变了希尔伯特的当新客人到来时,如何管理他的酒店树在这种情况下(推根而不是添加叶子)。我们还观察到这个过程中的某种对偶性与枚举顺序有关。。。

需要注意的是,Calkin和威尔夫将他们的树与下面列举的理性联系起来

(顺时针)1/1、1/2、2/1、1/3、3/2,2/3, 3/1, 1/4, 4/3, 3/5, 5/2, 2/5, 5/3, ...

而我们关联的枚举使用CW-树是通过从右向左读取树中的行

(顺时针*)1/1、2/1、1/2、3/1、2/3,3/2, 1/3, 4/1, 3/4, 5/3, 2/5, 5/2, 3/5, ...

更准确地说:从重写开始我们得到了一对枚举理性的一个是(CW*),另一个是

(五十) 0、1/2、1、2/3、3/2、1/3、2、3/4、5/3、2/5、,5/2, 3/5, 4/3, 1/4, 3, ...

现在是时候揭开神秘的神秘面纱了游览。

 0; 做魔术(%)od;

我邀请读者执行上面的一行Maple代码(并快速按下停止按钮)。你要做的就是事先做的是设置

魔法:=x->1/(1+楼层(x)-压裂(x)):

对于不熟悉枫叶的人:%是ditto运算符,引用先前计算的表达式。所以第一个表达式是“0”,下一个表达式是magic(0),下一种magic(零),等等。(这是否提醒了我们约翰·冯·诺依曼生成序数的方式?)然后奇迹发生了:

0, 1, 1/2, 2, 1/3, 3/2, 2/3, 3, 1/4, 4/3, 3/5, 5/2, 2/5, 5/3, 3/4, 4,...

这是东方风格的L型树枚举。(感兴趣的读者可能希望了解艾格纳和齐格勒,《从书中证明》,第三版。)

 ~~ ~

同样的枚举也可以通过Dijkstra的fusc函数的推广来计算。

LTreeEastEnum:=进程(m)局部a,b,a,b,n;n:=米;a、 b,a,b:=1,0,1,0;当n>0时,做a+b,a+b;如果n mod 2=1,则b,A:=%否则a,B:=%fi;n:=iquo(n,2);od;b/A端:

在下一章之后,我们将回到fusc函数的泛化。

二进制分区

故事可能就此结束。然而,这将错失理查德·斯坦利(Richard Stanley)在关于MathOverflow的问题中提出的观点。斯坦利强调了理性的列举之间令人惊讶的联系一个特殊的二元配分函数,Calkin和Wilf称之为数字b(n)属于夸张的整数n的表示。

超级二进制表示.png

b(n)是书写方式的数量整数n是2的幂之和,每个幂最多使用两次。对于例如,我们可以写8=1+1+2+4=2+2+4=4+4=8,所以b(8)=4。卡尔金威尔夫引用了布鲁斯·雷兹尼克的一篇论文,指出b(n)=fusc(n+1)。

这个现在的问题是:是否存在与lusc函数相关的配分函数以类似的方式?

正如我们已经注意到的那样(参见ChildrenByVertexNumber上述函数)-并且可以从分数的位置轻松证明在树中,lusc函数服从递归方程

ß(2n+1)=\223'(n)和\223](2n)=é+ß(n)+[n=2k个]

适用于n=1,2,3。。。,在一起ß(0)=0。[n=2k个]如果n是2的幂,则为1,否则为0(艾弗森支架)。第二个方程也可以在计算更简单的形式ß(2n)=max(\223»(n-1),1)+\223«(n)。

我们可以转移解释计算从CW树到L树的n的超二元表示。

HyperbinsPerLusc:=proc(n)局部n,L,H;N:=二进制翻转(N);L:=lusc(n);#L:=模糊数(N);如果N>1,则N:=N-1 fi;H:=双曲线表示(N);printf(“%s%2d%s%2d%s%2d%2d%s%s%a\n”,“lusc(”,n,“)=”,L,“->”,n,“.”,H)结束:

让我们仔细看看二进制结构我们在将lusc与fusc联系起来的公式中遇到的二元性功能。关系非常简单。让BinaryFlip(n)表示基2表示n的所有比特都被翻转了。

二进制翻转:=进程(n)局部i,B;B:=换算(n,基数,2);添加((1-B[i])*2^(i-1),i=1..nops(B))结束:

然后卢斯科(n)=fusc(二进制翻转(n))(n=0)。我们也可以用Maple(它经常会遇到自动简化显而易见的事情的问题)

lusc(n)=fusc(简化(2^(楼层(对数[2](n))+1))-n-1),

但这看起来很不酷。

seq(HyperbinsPerLusc(i),i=16..20);
阅读““as”是“”的夸张表示数。

lusc(16)=414. [[1, 1, 2, 2, 4, 4], [1, 1, 2, 2, 8], [1, 1, 4, 8], [2, 4, 8]]
lusc(17)=313. [[1, 2, 2, 4, 4], [1, 2, 2, 8], [1, 4, 8]]
lusc(18)=512. [[1, 1, 2, 4, 4], [2, 2, 4, 4], [1, 1, 2, 8], [2, 2, 8], [4, 8]]
lusc(19)=211. [[1, 2, 4, 4], [1, 2, 8]]
lusc(20)=510. [[1, 1, 2, 2, 4], [1, 1, 4, 4], [2, 4, 4], [1, 1, 8], [2, 8]]

然而,这并不令人信服。A类必须找到更好的解释。我们能再给理查德·斯坦利一个惊喜吗出乎意料的结论?我们现在需要的是双曲线翻转...

A类二进制分区整数的n、 n=0,是n的一个分区,它只有2的幂。A类超二进制分区是二进制等分出现次数为幂的划分第页,共2页。

超二进制分区的数量可以递归计算,并与A086449号(另请参见生成函数由H.Wilf给出)。

SuperBinary:=proc(n)选项记忆;本地索引集,k;索引集:=proc(n)局部i,i,z;i:=iquo(n,2);I:=I;i:=i-1;z:=1;而0<=i do i:=i,i;i:=i-z;z:=z+z od;I结束:如果n<2,则为1elif n mod 2=1,然后是超级二进制(iquo(n,2))else add(SuperBinary(k),k=索引集(n))结束:

然而,并不是所有的超二进制分区都是平等的。有些是二进制的。这些是超级二进制分区。显然[2]默认情况下是一个超级二进制分区,称为BIN。

超二进制分区是超二元划分如果满足两个条件:

  • 将分区反复除以2,直到所有部分都等于2最后一个分区是BIN的幂,这意味着

    BIN=[2]或BIN2=[2,2]或BIN=[2,2,2]或。。等。
     
  • 在这种重复还原的任何阶段,最多2个单线态(“1”部分)显示在分区中(包括开始分区)。

通过二进制分区的“除以2”我们了解整数除法的应用,例如[1,2,4,8]/ 2 = [0,1,2,4] = [1,2,4]. 这相当于说“首先删除‘1’,然后然后将其余部分分开”。

例如,让我们考虑11的超二进制分区。

[4, 4, 2, 1], [8, 2, 1]除以2->[2,2,1],[4,1]除以2->[1,1],BIN

因此只有[8,2,1]是一个超二进制11的分区。让我们试试另一个,19的超二进制分区。

[4,4,4,4,2,1], [8,4,4,2,1], [8,8,2,1], [16,2,1]除以2->[2,2,2,2,1],[4,2,1]、[4,4,1]、[8,1]除以2->[1,1,1,1],[2,1,1]、BIN^2、[4]除以2->-、-、-和BIN

我们得出的结论是,只有[8,8,2,1]和[16,2,1]是19的重叠二元分区。在枫叶的帮助下检查更容易。下面的函数需要一个超二进制分区作为输入如果它是一个超级二进制分区,则返回该分区。

超级DuperBinaryFilter:=proc(q)局部p;p:=q;如果convert(p,set)={2},则返回(q)fi;如果nops(选择(x->x=1,p))>2,则返回(NULL)fi;p:=删除(x->x=1,p);如果nops(p)=0,则返回(NULL)fi;p:=p/2;od端:

我们还可以生成超二元通过递归对整数n进行分区,如下所示。

超级双二进制:=进程(n)局部h,B,h,C,i,二进制翻转,双精度;二进制翻转:=进程(n)局部i,B;B:=换算(n,基数,2);加((1-B[i])*2^(i-1),i=1..nos(B))结束:双精度:=proc(W,T)局部A,B,L;B:=[];对于W do中的LA:=2*L;如果T=1,则A:=[op(A),1]fi;如果T=2,则A:=[op(A),1,1]fi;B:=[操作(B),A];od;B端;如果n<2,则返回([])fi;如果n=2,则返回([2])fi;h:=iquo(n,2);如果n mod 2=1,则如果BinaryFlip(n)=0,则返回([])fi;H:=超级双二进制(H);B:=双(H,1);其他的H:=超级双二进制(H);B:=双(H,0);H:=超级双二进制(H-1);C:=双(H,2);B:=【op(B),op(C)】;如果BinaryFlip(n)=n-1,则B:=[op(B),[seq(2,i=1..h)]]fi;fi;B端:

超二进制分区的原型哪个是超二元分区是[1,2,4,…,2k个].尽管这个分区非常“二进制”,这样的分区不能是减少(重复除以2)为BIN的幂。

超级二进制分区。

定理:n的超二元分区由lusc函数计数。

证明:让sdb代表“superduperbinary”,b(n)代表sdb分区n。我们认为b(n)=lusc(n)对于所有n=0。

正如我们已经看到的(从L树的构建方式来看),lusc函数服从复发

lusc(2n+1)=lusck个]

其中lusc(0)=lusc(1)=0。我们将证明lusc(n)和b(n)满足相同的递推公式并采用相同的初始值,因此它们同意所有非负整数。

这对于n=0,1是正确的,假设所有整数0,1,…都是正确的。。。,2个。

  • 现在b(2n+1)=b(n),因为如果给定一个2n+1的sdb分区,“1”必须正好出现一次(sdb的定义,不可能2次),因此删除此“1”除以2,得到n的超二进制分区。这个分区也是sdb分区,因为原始分区和被分割的分区减少到同一根这是BIN通过假设的力量。

    反之亦然,给定sdb分区n,将每个部分加倍并添加一个“1”以获得2n+1的sdb分区。

  • 假设n不是2的幂。现在b(2n)=b(n-1)+b(n),因为a sdb2n的分区p中可能有两个1或没有1。
     
    *如果p没有1,那么我们除以2得到n的sdb分区。
    *如果p有两个1,那么通过删除它们并除以2,我们得到一个sdbn-1的分区。

    反之亦然,如果p是n的sdb分区,则每个部分加倍,如果p为asdb分区n-1,然后将每个部分加倍,再加上两个1。

  • 如果2n=2k个则b(2n)=b(n)+1。这是因为b(2k-1- 1) = 0,作为2的唯一超二进制分区k-1-1是[1,2,4,…,2k-2]它不可简化为BIN的幂。因此sdb分区为2k个是BIN的幂或BIN的某些幂乘以2的某些幂。

    反之亦然,给定2的sdb分区k-1,将每个部分加倍以获得2的sdb分区k个最后添加BIN^(2k-1)到sdb分区就是这样生成的。量化宽松政策。

Dijkstra的fusc函数推广

Dijkstra的fusc函数不仅这是一种计算斯特恩双原子阵列的优雅方法,它是一个整体的蓝图重要序列家族。因此,似乎值得再看一眼这是我的建议。从下面给出的示例中,含义和用法应该很清楚。

SternDijkstra:=proc(L,p,n)局部k,i,len,M;长度:=nops(L);如果len<2,则返回(“错误”)fi;如果p<1或p>len,则返回(“错误”)fi;M:=L;k:=n;当k>0时M[1+(k mod len)]:=加(M[i],i=1..len);k:=iquo(k,len);od;op(p,M)结束:

第一个参数L是任意的列表中包含至少两个成员,第二个参数是约束1=p=长度(L),第三个参数是项n的索引= 0. 我们将把这对参数调用到Stern-Dijkstra函数(L,p)数组的类型.

seq(SternDijkstra([0,1],1,n),n=0..32);seq(SternDijkstra([1,0],2,n),n=0..32);0, 0, 1, 0, 2, 1, 1, 0, 3, 2, 3, 1, 2, 1,0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5,

每个孩子都知道是lusc和fusc序列,它们种植美丽的树木。然而,从下面的序列来看,种植了什么样的森林?

seq(SternDikstra([0,0,1],1,n),n=0..32);seq(SternDijkstra([0,1,0],2,n),n=0..32);seq(SternDijkstra([1,0,0],3,n),n=0..32);0,0,0,1,0,1,0,0,2,1,1,0,0,1,1, 1, 1, 2, 1, 2, 1, 1, 1, 3, 2, 4, 3, 1, 3, 4,0, 0, 1, 0, 0, 1, 1, 2, 2, 0, 0, 1, 0, 0, 1, 1,
[x,y,z],[x,x+y+z,z],[x,y,x+y+z],[x+y+z,x+2y+2z,z],[x,2x+y+2z,z],[x,2-x+2y+z,x+y+z],[x+y+z,y,x+2y+2z],[x,x+y+z,2x+y+2z],[x,y,2x+2y+z],[x+2y+2z,x+3y+3z,z],[2x+y+2z、3x+2y+4z、z]、[2x+2y+z、3x+4y+2z,x+y+z]、,[x+y+z,2x+3y+4z,z],[x,3x+y+3z,z][x,4x+3y+2z,x+y+4z],[x+y+z,2x+4y+3z,x+2y+2z]。。。

斯特恩矩阵

SDVect:=进程(L,n)局部k,i,len,M;长度:=nops(L);如果len<2,则返回(“错误”)fi;M:=L;k:=n;当k>0时M[1+(k mod len)]:=加(M[i],i=1..len);k:=iquo(k,len);od;M端:SDMat:=程序(n,dim)线性矩阵[矩阵]([seq(SDVect([seq`(如果`(j=i,1,0),j=1..尺寸)],n),i=1..尺寸])结束:SDMatTree:=proc(n,dim)局部i,R,j,k;对于i从0到n-1 doR:=添加(尺寸^j,j=0..i-1)。。添加(尺寸^j,j=0..i)-1:打印(seq(SDMat(k,dim),k=R));od端:
print(`dim 2的Stern矩阵的二叉树`);SDMatTree(3,2);print(`dim 3的Stern矩阵的三叉树`);SDMatTree(3,3);

斯特恩矩阵树。

你看到L树了吗?看第二列dim 2的Stern矩阵。所有这些矩阵的行列式是什么?Stern矩阵是所有矩阵的直接推广上述概念。有关此主题的说明将出现在其他位置。

OEIS的新序列

基于上述考虑我提交了序列A174980型A174981号到OEIS。此博客的pdf版本可在此处获得:[1]

  • 我还没有为超级二进制分区找到一个真正好的名称。有什么建议吗?