第七章 组合数学
全文均为手敲,如果发现有误,请于评论区交流讨论留言,作者会及时修改
7.1 计数原理
-
加法原理:分类计数;乘法原理:分步计数;减法原理:求补计数。
-
常用计数公式
从 n 个元素中选取 k 个 , 满足以下条件 : ( 1 ) 可重排列 : n k ( 2 ) 无重排列 : P ( n , k ) = n ! ( n − k ) ! ( 3 ) 可重组合 : ( n + k − 1 k ) = ( n + k − 1 ) ! ( n − 1 ) ! k ! ( 4 ) 无重组合 : ( n k ) = n ! ( n − k ) ! k ! ( 5 ) 圆周排列 : 1 k P ( n , k ) ( 6 ) 项链排列 : 1 2 k P ( n , k ) \begin{aligned} &从n个元素中选取k个,满足以下条件:\\ &(1)可重排列:n^k\\ &(2)无重排列:P(n,k)=\frac{n!}{(n-k)!}\\ &(3)可重组合:\begin{pmatrix}n+k-1\\k\end{pmatrix}=\frac{(n+k-1)!}{(n-1)!k!}\\ &(4)无重组合:\begin{pmatrix}n\\k\end{pmatrix}=\frac{n!}{(n-k)!k!}\\ &(5)圆周排列:\frac 1kP(n,k)\\ &(6)项链排列:\frac 1{2k}P(n,k)\\ \end{aligned} 从n个元素中选取k个,满足以下条件:(1)可重排列:nk(2)无重排列:P(n,k)=(n−k)!n!(3)可重组合:(n+k−1k)=(n−1)!k!(n+k−1)!(4)无重组合:(nk)=(n−k)!k!n!(5)圆周排列:k1P(n,k)(6)项链排列:2k1P(n,k)
-
不定方程正整数解的个数
x 1 + x 2 + ⋯ + x k = n 的正整数解个数为 ( n − 1 k − 1 ) x_1+x_2+\cdots+x_k=n的正整数解个数为\begin{pmatrix}n-1\\k-1\end{pmatrix} x1+x2+⋯+xk=n的正整数解个数为(n−1k−1)
若更改为求非负整数解,则通过换元即可求得 ( n + k − 1 k − 1 ) \begin{pmatrix}n+k-1\\k-1\end{pmatrix} (n+k−1k−1)
-
有限多重集排列
对于种类数为 k 的 n 个元素 , 每个种类分别有 n k 个元素 , 其排列数为 n ! n 1 ! ⋯ n k ! 对于种类数为k的n个元素,每个种类分别有n_k个元素,其排列数为\frac{n!}{n_1!\cdots n_k!} 对于种类数为k的n个元素,每个种类分别有nk个元素,其排列数为n1!⋯nk!n!
-
不相邻组合
在 { 1 , 2 , ⋯ , n } 中选择 k 个不相邻的数 , 方案数为 ( n − k + 1 k ) 在\{1,2,\cdots,n\}中选择k个不相邻的数,方案数为\begin{pmatrix}n-k+1\\k\end{pmatrix} 在{1,2,⋯,n}中选择k个不相邻的数,方案数为(n−k+1k)
通过构造双射转化为 { a 1 , ⋯ , a k − ( k − 1 ) } ⊂ { 1 , ⋯ , n − k + 1 } \{a_1,\cdots,a_k-(k-1)\}\sub\{1,\cdots,n-k+1\} {a1,⋯,ak−(k−1)}⊂{1,⋯,n−k+1}的无重组合
-
有限多重组合
对于种类数为 k 的 n 个元素 , 每个种类分别有 n k 个元素 , 其任意数目的组合数为 ( n 1 + 1 ) ⋯ ( n k + 1 ) 对于种类数为k的n个元素,每个种类分别有n_k个元素,其任意数目的组合数为(n_1+1)\cdots(n_k+1) 对于种类数为k的n个元素,每个种类分别有nk个元素,其任意数目的组合数为(n1+1)⋯(nk+1)
-
常用组合恒等式
( 1 ) ( n k ) = ( n − 1 k ) + ( n − 1 k − 1 ) ( 2 ) k ( n k ) = n ( n − 1 k − 1 ) ( 3 ) ( n k ) ( k r ) = ( n r ) ( n − r k − r ) ( 4 ) ( m + n k ) = ∑ i = 0 k ( m i ) ( n k − i ) ( 5 ) ( m + n m ) = ∑ i = 0 m ( m i ) ( n i ) ( 6 ) ( n + 1 k + 1 ) = ∑ i = k n ( i k ) ( 7 ) ( 2 n n ) = ∑ i = 0 n ( n i ) 2 ( 8 ) 2 n = ∑ i = 0 n ( n i ) \begin{aligned} &(1)\begin{pmatrix}n\\k\end{pmatrix}=\begin{pmatrix}n-1\\k\end{pmatrix}+\begin{pmatrix}n-1\\k-1\end{pmatrix}\\ &(2)k\begin{pmatrix}n\\k\end{pmatrix}=n\begin{pmatrix}n-1\\k-1\end{pmatrix}\\ &(3)\begin{pmatrix}n\\k\end{pmatrix}\begin{pmatrix}k\\r\end{pmatrix}=\begin{pmatrix}n\\r\end{pmatrix}\begin{pmatrix}n-r\\k-r\end{pmatrix}\\ &(4)\begin{pmatrix}m+n\\k\end{pmatrix}=\sum_{i=0}^k\begin{pmatrix}m\\i\end{pmatrix}\begin{pmatrix}n\\k-i\end{pmatrix}\\ &(5)\begin{pmatrix}m+n\\m\end{pmatrix}=\sum_{i=0}^m\begin{pmatrix}m\\i\end{pmatrix}\begin{pmatrix}n\\i\end{pmatrix}\\ &(6)\begin{pmatrix}n+1\\k+1\end{pmatrix}=\sum_{i=k}^n\begin{pmatrix}i\\k\end{pmatrix}\\ &(7)\begin{pmatrix}2n\\n\end{pmatrix}=\sum_{i=0}^n\begin{pmatrix}n\\i\end{pmatrix}^2\\ &(8)2^n=\sum_{i=0}^n\begin{pmatrix}n\\i\end{pmatrix} \end{aligned} (1)(nk)=(n−1k)+(n−1k−1)(2)k(nk)=n(n−1k−1)(3)(nk)(kr)=(nr)(n−rk−r)(4)(m+nk)=i=0∑k(mi)(nk−i)(5)(m+nm)=i=0∑m(mi)(ni)(6)(n+1k+1)=i=k∑n(ik)(7)(2nn)=i=0∑n(ni)2(8)2n=i=0∑n(ni)
-
排列生成算法
递归生成算法、邻位对换算法、逆序生成算法
逆序数 b 1 b 2 ⋯ b n b_1b_2\cdots b_n b1b2⋯bn,其中 b k b_k bk表示比 k k k大但在 k k k前面的数字的个数
-
组合生成算法
二进制算法、反射 G r a y Gray Gray码
二进制算法:用二进制数 a n − 1 ⋯ a 1 a 0 ‾ \overline{a_{n-1}\cdots a_1a_0} an−1⋯a1a0表示 { x n − 1 , ⋯ , x 1 , x 0 } \{x_{n-1},\cdots,x_1,x_0\} {xn−1,⋯,x1,x0}中的组合,第 k k k个组合即为 k k k的二进制记数所对应的集合
-
r r r子集生成算法
r r r子集的字典序:若 A ∪ B / A ∩ B A\cup B/A\cap B A∪B/A∩B的最小整数属于 A A A,则称 A A A先于 B B B
从 12 ⋯ r 12\cdots r 12⋯r开始,依次列出直接后继,即可生成所有 r r r子集
-
二项式定理
( x + y ) n = ∑ k = 0 n ( n k ) x n − k y k (x+y)^n=\sum_{k=0}^n\begin{pmatrix}n\\k\end{pmatrix}x^{n-k}y^k (x+y)n=k=0∑n(nk)xn−kyk
-
链与反链
设集合 S S S含有 n n n个元素
若 T ⊂ ρ ( S ) T\sub\rho(S) T⊂ρ(S)为 S S S上的一个反链,则 ∀ A , B ∈ T , ( A ⊈ B ∧ B ⊈ A ) \forall A,B\in T,(A\nsubseteq B\wedge B\nsubseteq A) ∀A,B∈T,(A⊈B∧B⊈A)
最大反链含有 ( n ⌊ n / 2 ⌋ ) \begin{pmatrix}n\\\lfloor n/2\rfloor\end{pmatrix} (n⌊n/2⌋)个子集,且各子集元素个数相同
若 T ⊂ ρ ( S ) T\sub\rho(S) T⊂ρ(S)为 S S S上的一个链,则 ∀ A , B ∈ T , ( A ⊂ B ∨ B ⊂ A ) \forall A,B\in T,(A\sub B\vee B\sub A) ∀A,B∈T,(A⊂B∨B⊂A)
最大链含有 n + 1 n+1 n+1个子集
S S S上的一条反链最多只能包含 S S S的任意一条链中的一个子集
S S S上的一条链最多只能包含 S S S的任意一条反链中的一个子集
-
多项式定理
( x 1 + ⋯ + x k ) n = ∑ n 1 + ⋯ + n k = n n ! n 1 ! ⋯ n k ! x 1 n 1 ⋯ x k n k (x_1+\cdots+x_k)^n=\sum_{n_1+\cdots+n_k=n}\frac{n!}{n_1!\cdots n_k!}x_1^{n_1}\cdots x_k^{n_k} (x1+⋯+xk)n=n1+⋯+nk=n∑n1!⋯nk!n!x1n1⋯xknk
-
牛顿二项式定理
( x + y ) α = ∑ n = 0 ∞ α ( α − 1 ) ⋯ ( α − n + 1 ) n ! x n y α − n (x+y)^\alpha=\sum_{n=0}^\infty\frac{\alpha(\alpha-1)\cdots(\alpha-n+1)}{n!}x^ny^{\alpha-n} (x+y)α=n=0∑∞n!α(α−1)⋯(α−n+1)xnyα−n
-
负二项式定理
1 ( 1 − x ) k = ∑ n = 0 ∞ ( n + k − 1 n ) x n , x ∈ ( − 1 , 1 ) \frac 1{(1-x)^k}=\sum_{n=0}^\infty \begin{pmatrix}n+k-1\\n\end{pmatrix}x^n,x\in(-1,1) (1−x)k1=n=0∑∞(n+k−1n)xn,x∈(−1,1)