|
|
A014486号 |
| 以10为基数写入的2n个二进制数字的完全平衡序列列表。每个项的二进制展开包含n个0和n个1,从左到右(最高有效位到最低有效位),0的数量永远不会超过1的数量。 |
|
374
|
|
|
0, 2, 10, 12, 42, 44, 50, 52, 56, 170, 172, 178, 180, 184, 202, 204, 210, 212, 216, 226, 228, 232, 240, 682, 684, 690, 692, 696, 714, 716, 722, 724, 728, 738, 740, 744, 752, 810, 812, 818, 820, 824, 842, 844, 850, 852, 856, 866, 868, 872, 880, 906, 908, 914
(列表;图表;参考;听;历史;文本;内部格式)
|
|
|
抵消
|
0,2
|
|
评论
|
这些编码宽度为2n的山脉、n+1个顶点和n个边的有根平面树、n个节点的平面种植树、n+1片叶子的有根的平面二叉树(2n个边、2n+1个点、n个内部节点、包含根)、Dyck单词、二元括号、括号、,加泰罗尼亚语系中的非交叉握手和分隔以及许多其他组合结构,列举如下A000108号.
序列确实从n=0开始,因为在Dyck语言的二进制解释中(例如,括号中“1”代表“(”,“0”代表“)”),如果(0)=0,那么它将代表“0”和“1”平衡的空字符串(因此括号是平衡的)-丹尼尔·弗格斯2013年2月17日
|
|
参考文献
|
Donald E.Knuth,《计算机编程的艺术》,第4A卷:组合算法,第1部分,Addison-Wesley,2011年,第7.2.1.6节,第443页(算法P)。
|
|
链接
|
杰森·贝尔、托马斯·芬恩·利德贝特和杰弗里·沙利特,正则语言逼近的加法数理论,arXiv:1804.07996[cs.FL],2018年。
N.G.De Bruijn和B.J.M.Morselt,关于梧桐树的一点注记,J.组合理论2(1967),27-34。
R.K.盖伊,第二强大数定律,数学。Mag,63(1990),第1期,3-20。
Dana G.Korssjoen、Biyao Li、Stefan Steinerberger、Raghavendra Tripathi和Ruimin Zhang,用图论寻找实数序列的结构:一个问题列表,arXiv:2012.04625[math.CO],2020-2021。
|
|
例子
|
a(19)=226_10=11100010_2=A063171号(19) 作为括号表达式:(()))(),作为二叉树,从左到右以深度第一的方式进行,二进制展开中的1代表内部(分支)节点,0代表叶:
0 0
\ /
1 0 0 (0)
\ / \ /
1 1
\ /
1
请注意,在这个编码方案中,二叉树的最后一个叶子(在括号中)是隐式的。如果我们将其内部节点(1)解释为cons单元,每个向左分支是“car”,向右分支是对的“cdr”部分,终端节点(0)是()的(NIL),则该树也可以转换为Lisp、Scheme和Prolog等语言中的特定S表达式。这样我们就有了(cons(cons)(())()(cons,)())='((()。() ) . () ) . ( () . ())=(((()))()),即与上述括号表达式相同,但由额外的括号包围。此映射由Scheme函数执行A014486号->括号如下。
术语和相应的有序根树开始于:
0:o(零)
2:(o)
10:(oo)
12:(o)
42:(ooo)
44:(o(o))
50:(o)o)
52:((oo))
56:((o))
170:(oooo)
172:(oo(o))
178:(o(o)o)
180:(o(oo))
184:(o(o))
(结束)
|
|
枫木
|
#Maple程序CatalanUnrank改编自CAGES书籍的算法3.24和Ruskey论文中的Scheme函数CatalanOnrank。有关相应的c程序,请参见a089408.c程序。
CatalanSequences:=proc(upto_n)local n,a,r;a:=[];对于n从0到upto_n do,对于r从0到(二项式(2*n,n)/(n+1))-1 doa:=[op(a),CatalanUnrank(n,r)];od;od;返回a;结束;
CatalanUnrank:=proc(n,rr)local r,x,y,lo,m,a;r:=(二项式(2*n,n)/(n+1))-(rr+1);y:=0;lo:=0;a:=0;对于x从1到2*n做m:=Mn(n,x,y+1);如果(r<=lo+m-1),则y:=y+1;a:=2*a+1;否则lo:=lo+m;y:=y-1;a:=2*a;fi;od;返回a;结束;
Mn:=(n,x,y)->二项式(2*n-x,n-((x+y)/2))-二项式;
#备选方案:
bin:=n->ListTools:-反转(转换(n,base,2)):
isA014486:=进程(n):本地B,s,B;s:=0;
如果n>0,则
对于bin(n)do中的b
s:=s+ifelse(b=1,1,-1);
如果0>s,则返回假fi;
od-fi;
s=0结束:
选择(isA014486,[seq(0..240)])#彼得·卢什尼2024年3月13日
|
|
数学
|
猫[n]:=(2 n)/不/(n+1)!;b2d[li_List]:=折叠[2#1+#2&,0,li]
d2b[n_Integer]:=整数位数[n,2]
树[n_]:=联接[表[1,{i,1,n}],表[0,{i,1,n}]]
nexttree[t_]:=展平[Reverse[t]/。{a___,0,0,1,b__}:>反向[{排序[{a,0}]//反向,1,0,b}]]
wood[n_/;n<8]:=嵌套列表[nexttree,tree[n],cat[n]-1]
表[反面[b2d/@wood[j]],{j,0,6}]//压扁
tbQ[n_]:=模块[{idn2=整数位数[n,2]},计数[idn2,1]==长度[idn2]/2和最小值[Accumulate[idn2/.{0->-1}]>=0];加入[{0},选择[Range[900],tbQ]](*哈维·P·戴尔2013年7月4日*)
balancedQ[0]=真;balancedQ[n_]:=模[{s=0},Do[s+=如果[b==1,1,-1];如果[s<0,返回[False]],{b,IntegerDigits[n,2]}];返回[s==0]];A014486号=FromDigits/@IntegerDigits[Select[Range[0,1000],balancedQ]](*Jean-François Alcover公司2016年3月5日*)
A014486Q[0]=真;A014486Q[n_]:=Catch[Fold[If[#<0,Throw[False],If[#2==0,#-1,#+1]]&,0,整数位数[n,2]]==0];选择[范围[0,880],A014486Q](*郑焕敏2016年12月11日*)
(*使用Knuth的TAOCP第7.2.1.6节中的算法P-参见参考和链接。*)
alist[n_]:=块[{a=扁平[表[{1,0},n]],m=2*n-1,j,k},
FromDigits[#,2]和/@Reap[
虽然[正确,
母猪[a];a[[m]]=0;
如果[a[[m-1]]==0,
a[[--m]]=1,j=m-1;k=2*n-1;
当[j>1&&a[j]]==1时,a[[j-]]=0;a[[k]]=1;k-=2];
如果[j==1,则中断[]];
a[[j]]=1;m=2*n-1]
]][[2, 1]]];
加入〔{{0},{2}},数组〔alist,4,2〕〕(*保罗·沙萨2024年3月16日*)
|
|
黄体脂酮素
|
(定义(CatalanUnrank大小等级)(让循环((a 0)(m(-1+大小)))(y大小)(等级等级)(c(A009766号(-1+尺寸))(如果(负?m)a(如果(>=等级c)(回路(1+(*2a))m(-1+y)(-等级c)(A009766号m(-1+y))(回路(*2a)(-1+m)y秩(A009766号(-1+m)年))
;;; 这会将完全平衡的二进制字符串“n”转换为相应的S表达式:
(定义(A014486号->括号n)(let loop((n n)(stack(list(list))))(cond((zero?n)(car stack))((zero-(module n 2))(loop(floor->exact(/n 2))
(定义(cons2top!堆栈)(let((ex-cdr(cdr-stack)))(set-cdr!堆栈(car-ex-cdr)))
(PARI)是A014486(n)=my(v=二进制(n),t=0);对于(i=1,#v,t+=if(v[i],1,-1);如果(t<0,返回(0));t==0\\查尔斯·格里特豪斯四世,2011年6月10日
(PARI)a_rows(N)=my(a=Vec([[0],N));对于(r=1,N-1,my(b=a[r],c=List());foreach(b,t,my(v=if(t,估值(t,2),0));对于(i=0,v,listput(~c,(t<<2)+(2<<i)));a[r+1]=Vec(c));a\\路德·范托尔(Ruud H.G.van Tol)2024年5月16日
(SageMath)
B=箱(n)[2::],如果n!=0其他0
s=0
对于b中的b:
如果b=='1'else-1,则s+=1
如果0>s:返回False
返回0==s
(Python)
从itertools导入计数,islice
从sympy.utilities.可交互导入multiset_permutations
产量0
对于计数(1)中的l:
对于multiset_排列中的s('0'*l+'1'*(l-1)):
c、 m=0,(l<<1)-1
对于范围(m)内的i:
如果s[i]==“1”:
c+=2
如果c<i:
打破
其他:
产量(1<<m)+int(''.join(s),2)
|
|
交叉参考
|
|
|
关键字
|
非n,美好的,容易的,基础
|
|
作者
|
|
|
扩展
|
来自的其他评论安蒂·卡图恩2000年8月11日和2004年5月25日
添加了a(0)=0(已于2011年6月删除),乔格·阿恩特2013年2月27日
|
|
状态
|
经核准的
|
|
|
|