组合数学——第一讲

排列与组合

基本原理

加法原理

{ S 1 , S 2 , ⋯   , S n } \{ S_1 , S_2, \cdots , S_n\} {S1,S2,,Sn} is a partition of S S S then :

∣ S ∣ = ∑ i = 1 n ∣ S i ∣ |S| = \sum_{i=1}^{n} {|S_i |} S=i=1nSi

乘法原理

S S S is the set of some ordered pair < a , b > <a,b> <a,b>, if S = { < a , b > ∣ a ∈ P , b ∈ Q } S = \{ <a,b> | a \in P , b \in Q \} S={<a,b>aP,bQ} then:

∣ S ∣ = ∣ P ∣ × ∣ Q ∣ |S| = |P| \times |Q| S=P×Q

减法原理

S ‾ \overline{S} S is the commplement set of S S S , when U U U is the universal set :

S = ∣ U ∣ − ∣ S ‾ ∣ S = |U| - |\overline{S}| S=US

除法原理

If there is a k-to-1 correspondence between of objects of type A with objects of type B, and there are ∣ A ∣ |A| A objects of type A, then there are ∣ A ∣ k \frac{|A|}{k} kA objects of type B.

基本计数问题

在计数之前需要弄清楚:

  1. 是否有序
  2. 是否有标号
  3. 是否有限制条件
  4. 有限集还是无限集
  5. 是否可重
  6. 尝试一个小例子验证上述问题

排列数

P ( n , r ) P(n,r) P(n,r)表示从 n n n个元素中有序地选择 r r r个元素的方案数。 P ( n , r ) = n ! ( n − r ) ! P(n,r) = \frac{n!}{(n-r)!} P(n,r)=(nr)!n!

其中循环排列的个数是 P ( n , r ) r \frac{P(n,r)}{r} rP(n,r)

组合数

( n r ) \binom{n}{r} (rn)表示从 n n n个元素中选择- r r r个元素作为一个集合的方案数(无序)。通常 ( n r ) = n ! r ! ( n − r ) ! \binom{n}{r} = \frac{n!}{r!(n-r)!} (rn)=r!(nr)!n!

特别的规定 ( 0 0 ) = 1 \binom{0}{0} = 1 (00)=1

二项式系数的特征

二项式定理

组合数又称做二项式系数,这是因为知名的二项式定理

( x + y ) n = ∑ i = 0 n ( n i ) x i y n − i (x+y)^n = \sum_{i=0}^{n} \binom{n}{i} x^i y^{n-i} (x+y)n=i=0n(in)xiyni

一个特例是: ∑ i = 0 n ( n i ) = 2 n \sum_{i=0}^{n} \binom{n}{i} = 2^n i=0n(in)=2n表示组合数的和。

另一个特例是:选择奇数个元素和偶数个元素的方案数一样多 ∑ i = 0 n ( − 1 ) i ( n i ) = 0 \sum_{i=0}^{n} (-1)^{i} \binom{n}{i} = 0 i=0n(1)i(in)=0

比例关系
  1. ( n r − 1 ) ( n − r + 1 ) = ( n r ) r \binom{n}{r-1} (n-r+1) = \binom{n}{r} r (r1n)(nr+1)=(rn)r

    这变相的解释了组合数 ( n i ) \binom{n}{i} (in)关于 i i i的最值。

  2. ( n − 1 r − 1 ) n = ( n r ) r \binom{n-1}{r-1} n = \binom{n}{r} r (r1n1)n=(rn)r

Pascal

( n r ) = ( n − 1 r ) + ( n − 1 r − 1 ) \binom{n}{r} = \binom{n-1}{r} + \binom{n-1}{r-1} (rn)=(rn1)+(r1n1)

对称性

( n r ) = ( n n − r ) \binom n r = \binom n {n-r} (rn)=(nrn)

组合数的和

( n + 1 r + 1 ) = ( n r ) + ( n − 1 r ) + ⋯ + ( r r ) \binom {n+1} {r+1} = \binom n r + \binom {n-1} r + \cdots + \binom r r (r+1n+1)=(rn)+(rn1)++(rr)

组合数的卷积(Vandermonde卷积)

( n + m k ) = ∑ i = 0 k ( n i ) ( m k − i ) \binom {n+m} k = \sum_{i=0}^{k} \binom n i \binom m {k-i} (kn+m)=i=0k(in)(kim)

( 2 n n ) = ∑ i = 0 n ( n i ) 2 \binom {2n} n = \sum_{i=0}^{n} {\binom n i}^2 (n2n)=i=0n(in)2

二项式反演

利用组合数在两类计数序列中可以建立下述联系

f n = ∑ i = 0 n ( − 1 ) i ( n i ) g i ⇔ g n = ∑ i = 0 n ( − 1 ) i ( n i ) f i f_n = \sum_{i=0}^{n} (-1)^{i} \binom{n}{i} g_i \Leftrightarrow g_n = \sum_{i=0}^{n} (-1)^{i} \binom n i f_i fn=i=0n(1)i(in)gign=i=0n(1)i(in)fi

f n = ∑ i = 0 n ( n i ) g i ⇔ g n = ∑ i = 0 n ( − 1 ) n − i ( n i ) f i f_n = \sum_{i=0}^{n} \binom{n}{i} g_i \Leftrightarrow g_n = \sum_{i=0}^{n} (-1)^{n-i} \binom n i f_i fn=i=0n(in)gign=i=0n(1)ni(in)fi

一个经典的策略是解决错排问题,假设已知错排数为 D n D_n Dn则有

n ! = ∑ i = 0 n ( n i ) D i n! = \sum_{i=0}^{n} \binom n i D_i n!=i=0n(in)Di 即枚举每种排列中错位的位置,并对这些位置错排。

D n = ∑ i = 0 n ( − 1 ) n − i ( n i ) i ! = ∑ i = 0 n ( − 1 ) n − i n ! ( n − i ) ! = n ! ∑ i = 0 n ( − 1 ) i i ! \begin{aligned} D_n & = \sum_{i=0}^n (-1)^{n-i} \binom n i i! \\ & = \sum_{i=0}^n (-1)^{n-i} \frac{n!}{(n-i)!} \\ & = n! \sum_{i=0}^{n} \frac{(-1)^i}{i!} \end{aligned} Dn=i=0n(1)ni(in)i!=i=0n(1)ni(ni)!n!=n!i=0ni!(1)i

多重集合排列

问题定义,有 k k k中元素,有序选出其中 r r r个元素的排列数:

  1. 无限情形 k r k^r kr
  2. 有限情形,第 i i i中元素有 n i n_i ni个, r = ∑ n i r = \sum {n_i} r=ni ,则 r ! n 1 ! n 2 ! ⋯ n k ! \frac{r!}{n_1 ! n_2 ! \cdots n_k !} n1!n2!nk!r!。这同样是把一个集合划分成 k k k个有标号的集合的方案数。
  3. 有限情形的另一个情况需要生成函数。考虑每种元素对应的如下多项式,若有无限个,对应 f i ( x ) = e x f_i(x) = e^x fi(x)=ex,如果为 k k k个对应 f i ( x ) = ∑ i = 0 k x i i ! f_i(x) = \sum_{i=0}^{k} \frac{x^i}{i!} fi(x)=i=0ki!xi,故求 ∏ f i ( x ) \prod f_i(x) fi(x)可以得到其指数生成函数。

多重集合的组合

问题定义,有 k k k中元素,选出其中 r r r个元素的组合数:

  1. 无限情形 ( r + k − 1 r ) = ( r + k − 1 k − 1 ) \binom {r+k-1} r = \binom {r+k-1}{k-1} (rr+k1)=(k1r+k1)
  2. 有限情形 { a 1 ⋅ k 1 , a 2 ⋅ k 2 , ⋯ a n ⋅ k n } \{a_1 \cdot k_1, a_2 \cdot k_2 , \cdots a_n \cdot k_n\} {a1k1,a2k2,ankn}这样的有穷集合。
    • 对于 a i ⋅ k i a_i \cdot k_i aiki 考虑问题的反面,即不满足此条件的方案数为 A i A_i Ai
    • 问题变成 ∣ ⋂ A i ‾ ∣ = ∑ s ′ ∈ 2 A ( − 1 ) ∣ s ′ ∣ s ′ | \bigcap \overline{A_i} | = \sum_{ s' \in 2^A } (-1)^{|s'|} s' Ai=s2A(1)ss
    • 按照情况枚举所有可能即可。
  3. 对于有下界的情形,做换元即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值