引子
8个人排队买电影票,4个人持5元买票,4个人持10元买票.售票处在售票前只有票没有钱,票价5元 ,问有多少种排队方式 能让8个人顺利买票。
首先看一下答案:
- 5-5-5-5-10-10-10-10
- 5-5-5-10-5-10-10-10
- 5-5-5-10-10-5-10-10
- 5-5-5-10-10-10-5-10
- 5-5-10-5-5-10-10-10
- 5-5-10-5-10-5-10-10
- 5-5-10-5-10-10-5-10
- 5-5-10-10-5-5-10-10
- 5-5-10-10-5-10-5-10
- 5-10-5-5-5-10-10-10
- 5-10-5-5-10-5-10-10
- 5-10-5-5-10-10-5-10
- 5-10-5-10-5-5-10-10
- 5-10-5-10-5-10-5-10
从上面的列举来看,总共有14种情况。可以这样子想,这个符合的条件,是不是就是每次我去看的时候,5的个数总是大于等于10的个数。现在有这样一个队伍,每次买完东西的人就进去,排在队尾。那也是不是就是相当于如果我画一个坐标轴,横坐标代表每次有5块的人数为4,纵坐标表示有10块人的个数为4。每次往横坐标走一个格子相当于有一个5块的人进队,往纵坐标走一格相当于有一个10块的人进队。
那么我要求的结果也就是
,第一步走
的不穿过直线
的非降路径数。
比如取这样一条路径:
因为第一步一定要走的是点
,所以这个结果也就等于
的不穿过
的数目,倒数第二个点的一定会走到
点,所以也等于从
的不穿过
的数目。
两点之间路径数目
从图1可以看出,从
的路径,沿着水平方向从左向右走一个单位距离记作
,沿着垂直方向从下往上走记作
,那么,该路径中肯定有
个
和
个
。从而,每一条路径对应着多重集合
的全排列,为
。推广到从
点,对应的是集合
的全排列,为
不接触非降路径数
如果黑线接触了直线
,从黑线的最后接触
的那个点和原点作为对称轴,做一条对称的路径。那么每一条
的路径如果接触(包括穿过)一定对应着一条从
的路径。
-
的全部的路径数目:
方向的步数
,
方向的步数
,全部路径数目为
-
的全部的路径数目:
等于
,
,路径数为
-
的不接触数目:
,这个数就叫做
Catalan数
[1]。记作
所以不接触非降路径数(
)答案就是Catalan数。记作
。
更一般的,
也可以求出来,答案为
。其中需要保证这个点和
在
的同一侧,
。
不穿过非降路径数
不穿过
可以转化为不接触它的左移的一条线,也就是图中的黄线。所以对称点应该找关于黄线的一个为
。答案就是
。
,
;
,
所以不穿过非降路径数为
,跟一开始全部枚举的数目是一样的。
图4这个比例调整的不好,蓝线和黄线应该是垂直。
更一般的,如果从
注意这是
,这个要求
要在
的同一侧,
。所求的非降路径数为
。
背公式是次要的,主要是要知道方法和转化。
扩展
1.将
分析:将进栈、出栈分别记作
。进栈、出栈的操作序列是
的排列,其中, 排列的任何前缀中,
个数不少于
的个数, 等于从
的不穿过对角线的非降路径数。
例如:
输入:
输出:进,进,进,出,出,进,出,出,进,出
答案就是
。
2.在一个凸
这个是Catalan数的起源,是Euler在做这个问题时候得到的。这个问题有空再写
参考
- ^组合数学引论 https://book.douban.com/subject/4867855/