首页 > 其他分享 >组合数学

组合数学

时间:2023-02-11 13:23:48浏览次数:35  
标签:begin end 组合 cap overline vmatrix 数学 rm

组合数学:

概念与计数:

基本计数原理:

分类计算加法原理,分布计算乘法原理。

简单容斥与摩根定理:

  • \(\begin{vmatrix}A\cup B\end{vmatrix}=\begin{vmatrix}A\end{vmatrix}+\begin{vmatrix}B\end{vmatrix}-\begin{vmatrix}A\cap B\end{vmatrix}\)
  • \(\begin{vmatrix}A\cup B\cup C\end{vmatrix}=\begin{vmatrix}A\end{vmatrix}+\begin{vmatrix}B\end{vmatrix}+\begin{vmatrix}C\end{vmatrix}-\begin{vmatrix}A\cap B\end{vmatrix}-\begin{vmatrix}A\cap C\end{vmatrix}-\begin{vmatrix}C\cap B\end{vmatrix}+\begin{vmatrix}A\cap B\cap C\end{vmatrix}\)

摩根定理: 交集的补等于补集的并,并集的补等于补集的交。

即 \(\overline{A\cup B}=\overline{A}\cap\overline{B}\) \(\overline{A\cap B}=\overline{A}\cup\overline{B}\)

\[\left| \bigcup_{i=1}^n A_i\right|=\sum_{\varnothing\not={\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}+1}\left| \bigcap_{{\rm j}\in{\rm J}} A_j\right|\\ \left| \bigcap_{i=1}^n \overline{A_i}\right|=\sum_{{\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}}\left| \bigcap_{{\rm j}\in{\rm J}} A_j\right|\\ \left| \bigcap_{i=1}^n A_i\right|=\sum_{{\rm J}\subseteq\{1,\cdots,n\}}(-1)^{\begin{vmatrix}{\rm J}\end{vmatrix}}\left| \bigcap_{{\rm j}\in{\rm J}} \overline{A_j}\right|\\ \]

组合计数:

排列数:

从 \(n\) 个不同元素中依次取出 \(m\)​ 个元素排成一列,产生的不同排列的数量为:(取 \(m\) 个,将 \(m\) 个排序)

\[A_n^m(P_n^m)=\frac{n!}{(n-m)!} \]

组合数:

从 \(n\) 个不同元素中取出 \(m\) 个组成一个集合(不考虑顺序),产生的不同集合的数量为:

\[C_n^m= \begin{pmatrix} n\\m \end{pmatrix} =\frac{n!}{m!(n-m)!} \]

性质:

  • \(A_n^k=C_n^k\times k!\)
  • \(C_n^m=C_n^{n-m}\)
  • \(C_n^m=C_{n-1}^m+C_{n-1}^{m-1}\) (杨辉三角)
  • \(\frac{k}{n}\times C_n^k=C_{n-1}^{k-1}\)
  • \(\sum_{i=0}^nC_n^i=2^n\)
  • \(\sum_{i=0}^n(-1)^iC_n^i=0\)

组合数求解:

单个组合数 \(O(n)\)

int C(int n, int k) {
	int p = 1, q = 1;
    for (int i = n - k + 1; i <= n; ++i)
        p *= i;
    for (int i = 1; i <= k; ++i)
        q *= i;
    return p / q;
}

求 \(C_i^j(i\in[0,n-1],j\in[1,i])\) 递推 \(O(n^2)\)

for (int i = 0; i < n; ++i) {
    C[i][0] = 1;
    for (int j = 1; j <= i; ++j) {
        C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
    }
}

二项式定理:

\[(a+b)^n=\sum_{k=0}^nC_n^ka^kb^{n-k}\\ (a-b)^n=\sum_{k=0}^n(-1)^kC_n^ka^kb^{n-k} \]

计数技巧:

算法:

标签:begin,end,组合,cap,overline,vmatrix,数学,rm
From: https://www.cnblogs.com/programmingysx/p/17111273.html

相关文章

  • 排列组合的方便方法(枚举)
    在之前我排列组合思考了一段时间最后得出这样的算法 #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>intcc(intc[],intv);intmain(){ ......
  • 前端学习案例8-寄生组合继承1
    ......
  • 前端学习案例7-组合继承
      组合继承......
  • 前端学习案例9-寄生组合继承2
    ......
  • 斯特林数学习笔记
    斯特林数学习笔记注:本篇只为作者自己看懂,方便以后复习。注意:如无特殊说明,以下公式的范围皆为\(n\ge0\)且\(n\)为整数。因为我太菜啦,所以很多东西都只有最浅显的部分......
  • 数学杂谈 #25
    论在做计数题前先学会找规律或在学习GF前先学会解微分方程的必要性(副标题:——把简单情景复杂化有感)问题你有一个长度为\(2n-1\)的以\(1\)开头的\(01\)交替串。......
  • bigdecimal 比较大小、bigdecimal 数学运算、bigdecimal 精度
    创建BigDecimal建议使用publicBigDecimal(Stringval),使用number参数可能会有精度问题设置精度setScale(3,BigDecimal.ROUND_HALF_UP),取三位小数,四舍五入比较大......
  • CSS组合选择器
    如果页面结构很复杂,给每个元素设置类名会是很‘头疼’的事情。我们来举个例子。通过布局和样式,实现这样的页面效果。在004目录下,创建一个css-combinators.html文件,构建......
  • Python | 排列与组合
    示例以下面的列表为例,importitertoolsL=[1,2,3,4]不考虑顺序comb1=list(itertools.combinations([1,2,3,4],1))'''[(1,),(2,),(3,),(4,)]'''comb2=......
  • BigDecimal用于高精确处理常用的数学运算
    importjava.math.BigDecimal;/***用于高精确处理常用的数学运算*Createdbylijuanon2016/8/27.*/publicclassArithmeticUtils{//默认除法运算精度......