• 第一类斯特林数,第二类斯特林数,组合数


    第一类斯特林数

    定义

    我们把 \(n\) 个数放入 \(m\) 个圆排列的方案数。

    递推公式:

    \(S_{i}^{j}\) = \(S_{i-1}^{j-1}\) + \((i-1)\times S_{i-1}^{j}\)

    证明:

    我们考虑第 \(i\) 个数他是怎么放的。他有两种情况。

    第一种: 就是他自己新开一个桌子 那么前面的 \(i-1\) 个人就要用 \(j-1\) 个桌子 也就是 \(S_{i-1}^{j-1}\)

    第二种:他就要和别人放在一个桌子,也就是剩下的 \(i-1\) 人要用 \(j\) 个桌子,他可以放在 \(i-1\) 个人的左边(或右边) 这个的方案数就是 \((i-1)\times S_{i-1}^{j}\)

    第二类斯特林数

    定义

    \(n\) 个不同的元素划分到 \(m\) 个不同的集合的方案数

    递推公式

    \(S2_{i}^{j} = S2_{i-1}^{j-1} + i \times S2_{i-1}^{j}\)

    证明:

    我们还是像上边那样,考虑第 \(i\) 个数他是怎么放的。

    第一种: 他自己新开一个集合 也就是 前面的 \(i-1\) 个人要用 \(j-1\) 个集合 也就是 \(S2_{i-1}^{j-1}\)

    第二种: 他和别人放在一个集合,这也就是和上面的不同的地方 ,这次我们要根据集合来考虑,而不是根据前面的人考虑。因为那样会重复计算。他可以与前 \(j\) 个集合放在一起

    这个的方案数就是 \(i \times S2_{i-1}^{j}\)

    组合数

    这是最常见也是高中会学到的知识

    定义:

    \(n\) 个数中选 \(m\) 个数的方案数

    计算式:

    \(C_{n}^{m}\) = \(n! \over {m! \times (n-m)!}\)

    递推式:

    \(C_{n}^{m} = C{n-1}^{m-1} + C_{n-1}^{m}\)

    证明:

    计算式就不用证了吧,高中课本上都有。

    我们就证一下递推式吧 (学过的同学一眼就能看出来这是杨辉三角)

    考虑第 \(n\) 个数他是选还是不选 选的话就是从 \(n-1\) 个数中 选出 \(m-1\) 个数,不选的话就要从中选出 \(m\) 个数。

    这就得到了,我们上面的那个递推式。

    范德蒙德卷积

    我谔谔,不想说啥。

    公式: \(\displaystyle \sum_{i=0}^{k} C_{n}^{i} \times C_{m}^{k-i}\) = \(C_{n+m}^{k}\)

    证明: 这个柿子可以看成从 \(n\) 个数中选 \(i\) 个数,再从 \(m\) 个数中选 \(k-i\) 个数,乘起来就相当于从 \(n+m\) 个数中选 \(k\) 个数

    这个柿子,我在考试中没有推出来,丢人

    二项式定理

    \((a+b)^n = \displaystyle\sum_{i=0}^{k} C_{n}^{k} \times a^k \times b ^{n-k}\)

    这个不用证了吧,高中都学过。

    性质

    1. \(C_{n}^{m} = C_{n}^{n-m}\)

    2. \(C_{n+r+1}^{r} = C_{n+r}^{r} + C_{n+r-1}^{r} + ..... + C_{n}^{0}\)

    3. \(C_{n}^{l} \times C_{l}^{r} = C_{n}^{r} \times C_{n-r}^{l-r}\)

    4. \(C_{n}^{0} + C_{n}^{1} + C_{n}^{2} + ..... C_{n}^{n} = 2^n\)

    证明

    \(n+r+1\) 个数中选出 \(r\) 个数 等同于 你从剩下的数中一次选一个数的方案数,分步加法计算原理 。 故性质2 成立。

    性质三等式左边可以看做先从 \(n\) 个数里面选 \(l\) 个数再从这 \(l\) 个数里面选 \(r\) 个数,等同于等式右边的 先从这 \(n\) 个数里面选 \(r\) 个数,在从剩下的数里面选 \(l-r\) 个数。

    选的顺序对结果是没有影响的。

  • 相关阅读:
    [CareerCup] 4.4 Create List at Each Depth of Binary Tree 二叉树的各层创建链表
    [CareerCup] 4.3 Create Minimal Binary Search Tree 创建最小二叉搜索树
    [CareerCup] 4.2 Route between Two Nodes in Directed Graph 有向图中两点的路径
    [ZT] 医学图像分析相关的会议
    [CareerCup] 4.1 Balanced Binary Tree 平衡二叉树
    [CareerCup] 3.7 Adopt Animal 领养动物
    [LeetCode] 241. Different Ways to Add Parentheses 添加括号的不同方式
    OpenCV Save CvRect to File 保存CvRect变量到文件
    [CareerCup] 3.6 Sort Stack 栈排序
    [CareerCup] 3.5 Implement Queue using Two Stacks 使用两个栈来实现队列
  • 原文地址:https://www.cnblogs.com/genshy/p/13571416.html
Copyright © 2020-2023  润新知