其他分享
首页 > 其他分享> > 4.3 买票找零问题

4.3 买票找零问题

作者:互联网

4.3 买票找零问题

基础问题:在一场激烈的足球赛开始前,售票工作正在紧张的进行中。每一张球票为50元。现在有2n个人排队购票,其中有n个人手持50元的钞票,另外n个人手持100元的钞票,假设开始售票时,售票处没有零钱.问这2n个人有多少种排队方式,不至于售票处出现找不开钱的局面?

answer

\[res = C_{2n}^n - C_{2n}^{n-1} = \frac{1}{n+1}C_{2n}^n \]

Catalan 数

先介绍卡特兰数:

卡特兰数的证明:

给出一个n,要求一个长度为2n的0,1序列,使得序列的任意前缀中1的个数不少于0的个数

证明:

考虑一个含有n个1,n个0的2n位二进制数字,扫描到第2m+1位上的时候有m+1个0和m个1,则后面0,1 的个数分别为:有n-m个1和n-m-1个0,
将2m+2以及之后的0变成1,1变成0,则对应一个n+1个0和n-1个1的二进制数,不符合要求
从而\(C_n = C_n = C_{2n}^n - C_{2n}^{n+1} = \frac{1}{n+1}C_{2n}^n\)

拓展问题:

1 矩阵连乘问题:\(P = a_1 * a_2 * a_3 * ... * a_n\)依据乘法结合律,不改变矩阵的相互顺序,只用括号表示成对的乘积,试问有几种括号化的方案?

左括号相当于1,右括号相当于0,本质上就是卡特兰数

2 将多边形划分称为三角形问题。求一个凸多边形区域划分称为三角形区域的方法数。

我们从节点1开始考虑,要想分割成为三角形区域,节点1不能和他相邻的节点相连,所以节点1可以连接3,4...n-1
我们假设节点1连接i,则这条线将多边形区域分割成为i凸多边形和N+2-i凸多边形,即对于节点1,\(f_1(n) = f(3)*f(n+2-3) + ... + f(n-1)f(3)\)
总的分割方法是\(N*f_1(n)\),其中一半是重复情况

\[f(n) = \sum_{i=3}^{n-1}f(i)*f(n+2-i)*\frac{n}{2} \]

3 某一个城市的某个居民,每一天他需要走2n个街区去上班(他在其住所北n个街区和以东n个街区工作)。如果他从不穿越从家到公司的对角线,那么有多少条可能的道路?

符合卡特兰数

4 在圆上选择2n个点,将这些点成对连接起来,求使所得到的n条线段不相交的方法数?

类似于拓展2

5 n个节点可以构造出多少不同的二叉树?

n = 0 , f(0) = 1
n = 1 , f(1) = 1
n = 2 , f(2) = 4

\[f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(i)*f(n-i-1) + ... + f(n-1) * f(0) \]

其中\(f(i)*f(n-i-1)表示左子树有i个节点右子树有n-i-1个节点时候可构造的数目\)
符合卡特兰数


// 4.3 买票找零
// 卡特兰数
class Test{
	public static void main(String[] args) {
		/**
		基础问题:
			在一场激烈的足球赛开始前,售票工作正在紧张的进行中。每一张球票为50元。现在有2n个人排队购票,其中有n个人手持50元的钞票,另外n个人手持100元的钞票,假设开始售票时,售票处没有零钱。
			问这2n个人有多少种排队方式,不至于售票处出现找不开钱的局面?
		answer
			$$res = C_{2n}^n - C_{2n}^{n-1} = \frac{1}{n+1}C_{2n}^n$$

		*/
		/**
		先介绍卡特兰数:
			Catalan 满足递归式:$h(n) = h(0) * h(n-1) + h(1) * h(n-2) + ...+h(n-1) * h(0)$
			Catalan 另类递推式:$h(n) = \frac{h(n-1) * (4*n-2)}{n+1}$
			递推关系的解为:$C_n = C_{2n}^n - C_{2n}^{n+1} = \frac{1}{n+1}C_{2n}^n$
		卡特兰数的证明:
			给出一个n,要求一个长度为2n的0,1序列,使得序列的任意前缀中1的个数不少于0的个数
			证明:
				考虑一个含有n个1,n个0的2n位二进制数字,扫描到第2m+1位上的时候有m+1个0和m个1,则后面0,1 的个数分别为:有n-m个1和n-m-1个0,
				将2m+2以及之后的0变成1,1变成0,则对应一个n+1个0和n-1个1的二进制数,不符合要求
				从而$C_n = C_n = C_{2n}^n - C_{2n}^{n+1} = \frac{1}{n+1}C_{2n}^n$
		*/
		/**
		拓展问题:
			1 矩阵连乘问题:$P = a_1 * a_2 * a_3 * ... * a_n$依据乘法结合律,不改变矩阵的相互顺序,只用括号表示成对的乘积,试问有几种括号化的方案?
				左括号相当于1,右括号相当于0,本质上就是卡特兰数
			2 将多边形划分称为三角形问题。求一个凸多边形区域划分称为三角形区域的方法数。
				我们从节点1开始考虑,要想分割成为三角形区域,节点1不能和他相邻的节点相连,所以节点1可以连接3,4...n-1
				我们假设节点1连接i,则这条线将多边形区域分割成为i凸多边形和N+2-i凸多边形,即对于节点1,$f_1(n) = f(3)*f(n+2-3) + ... + f(n-1)f(3)$
				总的分割方法是$N*f_1(n)$,其中一半是重复情况
				$$f(n) = \sum_{i=3}^{n-1}f(i)*f(n+2-i)*\frac{n}{2}$$
			3 某一个城市的某个居民,每一天他需要走2n个街区去上班(他在其住所北n个街区和以东n个街区工作)。如果他从不穿越从家到公司的对角线,那么有多少条可能的道路?
				符合卡特兰数
			4 在圆上选择2n个点,将这些点成对连接起来,求使所得到的n条线段不相交的方法数?
				类似于拓展2
			5 n个节点可以构造出多少不同的二叉树?	
				n = 0 , f(0) = 1
				n = 1 , f(1) = 1
				n = 2 , f(2) = 4
				$$f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(i)*f(n-i-1) + ... + f(n-1) * f(0)$$
				其中$f(i)*f(n-i-1)表示左子树有i个节点右子树有n-i-1个节点时候可构造的数目$
			符合卡特兰数
		*/
		
	}
}

标签:...,买票,frac,4.3,找零,节点,括号,2n,卡特兰
来源: https://www.cnblogs.com/botak/p/13993526.html