|
评论
|
第n行(即序列M(n))表示n维布尔立方体(超立方体){0,1}^n的等(汉明)权向量,其中n=1,2。。。{0,1}^n的向量A_i=(A_1,A_2,…,A_n)的序列号用#A_i表示,它是n位二进制表示为A_1、A_2、…、。。。,当{0,1}^n的向量按字典顺序排列时,它们的序列号形成序列0,1,2。。。,2^n-1。序列M(n)有n+1个项,用#M(n,0),#M(n,1),…,表示#m(n,n)。这里#m(n,k)是与大小为2^n的二进制向量m(n、k)相对应的自然数,对于k=0,1。。。,n、如果向量a_i({0,1}^n的)的权重等于k,或者如果i=0,1,…,则m(n,k)的第i个坐标是单位。。。,2^n-1。因此,m(n,k)是n维布尔立方体所有向量的特征向量,其权重等于k。每个特征向量m(n、k)由其在m(n)中的序列号#m(n)表示,对于k=0,1。。。,n.(名词)。
向量m(n,k),对于某些k,0<=k<=n,可以用作掩码,以检查n个变量的给定布尔函数在权重k的向量上是否取1值——这就是为什么选择符号m和m的原因。该检查是通过函数的真值表向量和掩码之间的按位连接完成的,因此速度非常快。
类似于帕斯卡三角形,该三角形生成了一系列子序列(有关说明,请参见示例部分):
A) 按列读取(从左到右):
1, 2, 8, 128, 32768, 2147483648, 9223372036854775808, ...:A058891号(n+1)(类型a(n)的整数=2^(2^(n-1)-1),对于n=1,2,…)。这里#m(n,0),对于n=1,2。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=0(该关系由安德鲁·霍罗伊德);
1, 6, 104, 26752, 1753251840, 7530159316599308288, ... (截至2018年7月8日不在OEIS中):#m(n,1),n=1,2。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=1;
1、22、5736、375941248、16146555367130677248、。。。(截至2018年7月8日不在OEIS中):#m(n,2),n=2,3。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=2,依此类推。
B) 由斜边读取,或与斜边平行:
1, 1, 1, 1, ...:A000012号(所有1的序列)。这里#m(n,n),对于n=1,2。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=n;
2, 6, 22, 278, 65814, 4295033110, ...:A060803型(总和{k=0..n}2^(2^k))。这里#m(n,n-1),对于n=1,2。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=n-1;
8, 104, 5736, 18224744, 282668995843688, ... (截至2018年7月8日不在OEIS中):#m(n,n-2),n=2,3。。。,是{0,1}^n的所有向量的特征向量的序列号,权重=n-2,依此类推。
|
|
例子
|
M(0)=1
M(1)=2,1-根据定义给出。对于n>1,我们使用归纳方法(即迭代)而不是递归,因为计算M(n)项的直接递归函数是无效的。
为了获得M(2),我们应用n=2的递归公式:
#m(2,0)=2^(2^(2-1))*#m(1,0)=4*2=8;
#m(2,1)=2^(2^(2-1))*#m(1,1)+#m(1.0)=4*1+2=6;
#m(2,2)=1。
因此,M(2)=8,6,1。
为了获得M(3),我们计算:
#米(3,0)=2^(2^(3-1))*#m(2,0)=16*8=128;
#m(3,1)=2^(2^(3-1))*#m(2,1)+#m(2,0)=16*6+8=104;
#m(3,2)=2^(2^(3-1))*#m(2,2)+#m(2.1)=16*1+6=22;
#m(3.3)=1。
因此,M(3)=128、104、22、1。
让我们澄清一下术语的含义。{0,1}^3的字典顺序是(0,0,0),(0,0,1),(0,1,0)。。。,7.我们有:
m(3,0)=(1,0,0,0,1,0,0)是权重为0的唯一向量的特征向量,因此#m(3.0)=2^7=128;
m(3,1)=(0,1,1,0,1,0,0)是权重为1且#m(3,1)=104的所有向量的特征向量;
m(3,2)=(0,0,0,1,0,1,1,0)是权重为2的所有向量的特征向量,然后#m(3,1,2)=22;
m(3,3)=(0,0,00,0,1)权重为3的唯一向量的特征向量,#m(3,1)=1。
L(3)=L(3,0),。。。,l(3,3)=(0),(1,2,4),(3,5,6),(7)=0,1,2,4,3,5,6,7。
我们记得m(n,k)的坐标从左到右编号为0,1。。。,2^n-1和L(n)包含所有这些整数,并在子序列中进行分区。
对于L(3)的子序列,我们注意到:
l(3,0)=0,这是权重为0的{0,1}^3的唯一向量(0,0,0)的序列号。它对应于m(3,0),因为m(3,1)仅在其最左边的坐标中包含一个单位。
l(3,1)=1,2,4,这是权重为1的{0,1}^3的所有3个向量的序列号。所以l(3,1)对应于m(3,1)——注意,1、2和4是m(3+1)包含单位的坐标。
l(3,2)=3,5,6,这是权重为2的{0,1}^3的所有3个向量的序列号。它对应于m(3,1)——注意,3、5和6是m(3,2)包含单位的坐标。
l(3,3)=7,这是权重3的{0,1}^3的唯一向量(1,1,1)的序列号。它对应于m(3,3)。
三角形开始:
1,
2、1,
8、6、1,
128, 104, 22, 1,
32768, 26752, 5736, 278, 1,
2147483648、1753251840、375941248、18224744、65814、1、,
…(结束)
|