卡特兰数与斯特林数

卡特兰数与斯特林数

卡特兰数

前言:这里我们定义 \(C_n\) 为卡特兰数的第 \(n\) 项。

递归定义式:\(C_n=\sum_{i=0}^{n-1}{C_i\times C_{n-i-1}}\)
理解:对于 \(n\) 个点构成的二叉树,其形态共有 \(C_n\) 个,你设根节点的左儿子子树大小为 \(i\),即形态有 \(C_{i}\) 个,右子树大小为 \(n-i-1\),即形态有 \(C_{n-i-1}\) 个,相乘即可。

组合定义式:\(C_n=C_{2n}^{n}-C_{2n}^{n-1}=\frac{1}{n+1}\times C_{2n}^{n}\)
这个后面证

卡特兰数的增长大约为 \(O(4^n)\)

例题:给定 \(n\)\(0\)\(n\)\(1\) 组成的一个 \(2n\) 个元素的排列,要求该排列的任意前缀,\(0\) 的数量不能少于 \(1\) 的数量,求满足排列的个数

结论:排列个数为 \(C_n\)
证明:我们可以建一个 \(n\times n\) 的网格,\(1\) 表示向上走,\(0\) 表示向右走,最终我们从 \((1,1)\) 走到 \((n,n)\),对于任意前缀 \(0\) 的数量不能少于 \(1\) 的数量这个限制,我们可以画出对角线,对角线以下的是合法的,而对角线上面的是不合法的,接着我们在对角线上再隔一格画一条线 \(y\),对于不合法的,我们沿 \(y\) 对称回来,这样他只会超过对角线最多一格,而他最后只会走到 \((n,n-1)\),即 \(C_n=C_{2n}^{n}-C_{2n}^{n-1}=\frac{1}{n+1}\times C_{2n}^{n}\)

错位排列

例题:有 \(n\) 个盒子编号为 \(1\)\(n\),有 \(n\) 个球编号为 \(1\)\(n\),求编号为 \(i\) 的球不放入编号为 \(i\) 的盒子的方案数

\(dp_i\) 表示 \(n\) 个元素的错位排列的方案数,则 \(dp_i=(n-1)\times (dp_{n-1}+dp_{n-2}),dp_1=0,dp_2=1\)

证明:当我们考虑到第 \(n\) 个时

  1. \(n-1\) 个元素全部错位排列,此时我们随便找一个数与 \(n\) 交换即可,方案数为 \((n-1)\times dp_{n-1}\)
  2. \(n-1\) 个元素恰有一个不错位排列,将 \(n\) 与其交换,剩余的 \(n-2\) 个元素仍为错位排列,方案数为 \((n-1)\times dp_{n-2}\)
  3. \(n-1\) 个元素有超过一个不错位排列,此时可以证明无法通过一次交换形成错位排列

圆排列

\(n\) 个元素中取 \(k\) 个元素,首尾相接形成长度为 \(k\) 的环,允许旋转,求不同的排列的方案数
\(ans=\frac{P_{n}^{k}}{k}\)

第一类斯特林数

\(n\) 个不同的球放入 \(k\) 个圆排列中,其方案数为第一斯特林数 \(s(n,k)\)
\(s(0,0)=1,s(k,0)=0,s(n,k)=s(n-1,k-1)+(n-1)\times s(n-1,k),1\leq k\leq n\)

第二类斯特林数

\(n\) 个不同的球放入 \(k\) 个相同的盒子,不允许空盒,其方案数为第二类斯特林数 \(s(n,k)\)
\(s(0,0)=1,s(k,0)=1,s(n,k)=k\times s(n-1,k)+s(n-1,k-1),1\leq k\leq n\)

posted @ 2024-01-30 15:23  noipwen  阅读(56)  评论(0)    收藏  举报