• 首页

  • 官方

  • 主题

  • 关注

  • 联系

栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导

栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导

前言:重在记录,可能出错。
这部分内容借鉴了网络上的一些内容。如:什么是卡特兰数?怎么理解出栈顺序有多少种?(递推式的构造)

一、结论

先说结论,设n个不同元素入栈,出栈元素不同排列的个数为f(n),则f(n)符合以下规律:

1. f(n)=1n+1C 2n  n

2. f(n)=i=1nf(i1)f(ni)

3.f(n+1)=4n+2n+2f(n)

二、推导

1.建立x,y平面直角坐标系。

  假设一只小蚂蚁从原点(0,0)出发,将入栈看作向右移动一,出栈看作向上移动一。

  当n个不同元素全部入栈、出栈后,有n次入栈和n次出栈,相当于小蚂蚁爬到(n,n)位置。

  显而易得的,小蚂蚁共有C 2nn种不重复的前进路线(小蚂蚁共需移动2n次,选择其中的n次为向右移动一,则剩下的n次为向上移动一)。

  分析,因为栈的特点是只允许在一端进行插入和删除,所以在执行出栈操作时,必须保证栈里存在元素,否则就会抛出栈空异常。即每一步操作,都需要保证此时出栈操作总数≤入栈操作总数。

  反映到坐标系上,即小蚂蚁不能越过y=x线或者不能碰到y=x+1线。

  显而易得的,对于会抛出异常的输出序列,当其首次抛出异常时,恰好首次出现入栈次数为m,出栈次数为m+1,剩余的入栈次数为n-m,出栈次数为n-m-1,后面的路线有C 2n2m1nm种。

  C 2n2m1nm,这是在2n-2m-1次操作中,选取n-m次为入栈操作的意思,显而易得的,这个组合数也可以表示在2n-2m-1次操作中,选取n-m次为出栈操作的意思。将n-m次入栈向右移动一,换成n-m出栈向上移动一,反映到坐标系,即将小蚂蚁首次碰到y=x+1后的路线关于y=x+1作对称。如下图:


image


  小蚂蚁从(0,0)碰到y=x+1到终点(n,n)就相当于从(0,0)到终点(n-1,n+1)。因此,小蚂蚁所有碰到y=x+1的到(n,n)的路线数就相当于到(n-1,n+1)的路线数,即C 2nn1种。

  小蚂蚁从(0,0)到终点(n,n)且不碰到y=x+1的路线有

C 2nn  C 2nn1=(2n)!n!n!  (2n)!(n1)!(n+1)!=(2n)!n!n!  nn+1(2n)!(n)!(n)!=(1nn+1)(2n)!n!n!=1n+1C 2nn

  综上,设n个不同元素进栈,出栈元素不同排列的个数为f(n),则f(n)=1n+1C 2nn


2.假设n个不同元素为a1 a2an,考虑最后一个出栈的元素是谁,是ai

  ai最后一个出栈,说明ai始终在栈底,即当到ai的时候,a1  a2ai1全部完成了正常的入栈、出栈,给ai留了一个空栈,这样的序列有f(i1)种;

  ai进入栈底后,不动,此时的栈相当于底厚了一点的“空栈”,等ai+1  ai+2an全部先完成正常的入栈、出栈,序列有f(ni)种。总共有f(i1)f(ni)种序列。

  综上,i的取值为1~n的正整数,所以f(n)=i=1nf(i1)f(ni)


3.我们先算出当n=1,n=2,n=3,n=4,n=5时的f(n)的值,再总结规律,f(1)=1,f(2)=2,f(3)=5,f(4)=14,f(5)=42这怎么看规律?就用眼珠子瞪,很简单啊,知道答案,硬凑就行了。!^.^!

f(2)f(1)=21,f(3)f(2)=52,f(4)f(3)=145,f(5)f(4)=4214f(2)f(1)=63,f(3)f(2)=104,f(4)f(3)=145,f(5)f(4)=186f(n+1)f(n)=6+4(n1)n+2=4n+2n+2f(n+1)=4n+2n+2f(n)

  综上,f(n+1)=4n+2n+2f(n)

posted @   戈小戈  阅读(2789)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示