数论 II(组合数学)

数论 II(组合数学)


>> 排列数

定义

排列( A r r a n g m e n t Arrangment Arrangment)数指的是从 n n n 个不同元素中任取 m   ( m ⩽ n ) m\ (m\leqslant n) m (mn) 个元素排成一列(考虑元素先后出现次序)称此为一个排列,此种排列的总数即为排列数,即叫做从 n n n 个不同元素中取出 m m m 个元素的排列数。记做 A n m A_{n}^{m} Anm

排列原理

#Ex1 加法原理:做一件事,完成它可以有 n n n 类办法,在第一类办法中有 m 1 m_1 m1 种不同的方法,在第二类办法中有 m 2 m_2 m2 种不同的方法, ⋯ \cdots ,在第 n n n 类办法中有 m n m_n mn 种不同的方法,那么完成这件事共有 K = m 1 + m 2 + m 3 + ⋯ + m n K=m_1+m_2+m_3+\cdots+m_n K=m1+m2+m3++mn 种不同方法。

#Ex2 乘法原理:做一件事,完成它需要分成 n n n 个步骤,做第一步有 m 1 m_1 m1 种不同的方法,做第二步有 m 2 m_2 m2 种不同的方法, ⋯ \cdots ,做第 n n n 步有 m n m_n mn 种不同的方法,那么完成这件事共有 K = m 1 m 2 m 3 … m n K=m_1m_2m_3…m_n K=m1m2m3mn 种不同的方法。

* 注意“类”和“步”的区别:类是独立的集合,而步是集合所组成的链。

性质

#1 A n m = n ! ( n − m ) ! A_{n}^{m}=\dfrac{n!}{(n-m)!} Anm=(nm)!n!

$\qquad $求排列数 A n m A_{n}^{m} Anm 可以按依次填 m m m 个空位来考虑:假设有 排好顺序 m m m 个空位,从 n n n 个不同元素 a 1 , a 2 , a 3 , ⋯   , a n a_1,a_2,a_3,\cdots,a_n a1,a2,a3,,an 中任意取 m m m 个去填空,一个空位填 1 1 1 个元素,每一种填法就对应 1 1 1 个排列,因此,所有不同填法的种数就是排列数。

\qquad 1 1 1 步,第 1 1 1 位可以从 n n n 个元素中任选一个填上,共有 n n n 种填法;

\qquad 2 2 2 步,第 2 2 2 位只能从余下的 n − 1 n-1 n1 个元素中任选一个填上,共有 n − 1 n-1 n1 种填法;

\qquad 3 3 3 步,第 3 3 3 位只能从余下的 n − 2 n-2 n2 个元素中任选一个填上,共有 n − 2 n-2 n2 种填法;

⋯ \qquad\cdots

\qquad m m m 步,当前面的 m − 1 m-1 m1 个空位都填上后,第 m m m 位只能从余下的 n − m + 1 n-m+1 nm+1 个元素中任选一个填上,共有 n − m + 1 n-m+1 nm+1 种填法。

\qquad 根据乘法原理,共有 ∏ i = n − m + 1 n i \prod_{i=n-m+1}^{n}i i=nm+1ni 种填法。

\qquad 因而有
A n m = ∏ i = n − m + 1 n i = n ! ( n − m ) ! A_{n}^{m}=\prod_{i=n-m+1}^ni=\dfrac{n!}{(n-m)!} Anm=i=nm+1ni=(nm)!n!
\qquad 特别地,规定 0 ! = 1 0!=1 0!=1


>> 组合数

定义

组合( C o m b i a n t i o n Combiantion Combiantion)数指的是从 n n n 个不同元素中,任取 m   ( m ⩽ n ) m\ (m\leqslant n) m (mn) 个元素并成一组,叫做从 n n n 个不同元素中取出 m m m 个元素的一个组合;从 n n n 个不同元素中取出 m   ( m ⩽ n ) m\ (m\leqslant n) m (mn) 个元素的所有组合的个数,叫做从 n n n 个不同元素中取出 m m m 个元素的组合数。记做 C n m C_{n}^{m} Cnm

性质

#1 C n m = n ! m ! ( n − m ) ! C_{n}^{m}=\dfrac{n!}{m!(n-m)!} Cnm=m!(nm)!n!

\qquad 相较于排列数,组合数并不关心数的顺序。在排列中,对于如 1 , 2 , 3 1,2,3 1,2,3 3 , 1 , 2 3,1,2 3,1,2 的数列,认为不同;但在组合中则认为相同。因此 n , m n,m n,m 相等的 A n m A_n^m Anm C n m C_n^m Cnm C n m C_n^m Cnm 应小于 A n m A_n^m Anm ,而小于的倍数便是 m m m 个数的全排列数。因而有:
C n m = A n m m ! = n ! m ! ( n − m ) ! C_n^m=\dfrac{A_n^m}{m!}=\dfrac{n!}{m!(n-m)!} Cnm=m!Anm=m!(nm)!n!
#2 C n m = C n n − m C_n^m=C_n^{n-m} Cnm=Cnnm

\qquad n n n 个不同元素中选出 m m m 个元素后,剩下的 n − m n-m nm 个元素也便唯一确定。


>> 组合数学经典模型——盒子与球

* 对于盒子与球问题的条件,这里用 ( x , y , z ) (x, y, z) (x,y,z) 表示,其中 x x x 表示球是否相同(对应 1 / 0 1/0 1/0), y y y 表示盒子是否相同(对应 1 / 0 1/0 1/0), z z z 表示是否允许有空盒(对应 1 / 0 1/0 1/0),共 2 3 = 8 2^3=8 23=8 种问题。

对于 8 8 8 中基本问题,可分为 5 5 5 类。

#1 ( 0 , 0 , 1 ) (0,0,1) (0,0,1)

\qquad 不同的球,不同的盒子,允许有空盒,此时在放每个球时,只需要考虑将它放到哪个盒子中,共有 r r r 种可能的选择,由乘法原理知问题的答案是 r n r^n rn

#2 ( 1 , 0 , 0 ) (1,0,0) (1,0,0)

\qquad 在组合数学中,对于集合的分划问题,可以使用“隔板法”:将 n n n 个球排成一行,在 n − 1 n-1 n1 个间隔中加入 r − 1 r-1 r1 块隔板,恰好将这些球分为 r r r 类,且每一类都至少有 1 1 1 个球,一个类便放在一个盒子里,从而将问题转化为插入隔板的方案数(集合分划的方案数)。共有 n − 1 n-1 n1 个空隙可插入隔板,只需要 r − 1 r-1 r1 个隔板便可以划分出 r r r 类,从而答案是 C n − 1 r − 1 C_{n-1}^{r-1} Cn1r1

#3 ( 1 , 0 , 1 ) (1,0,1) (1,0,1)

\qquad 这里的例子来源于 L a ˊ s z l o ˊ   L o v a ˊ s z L\acute{a}szl\acute{o}\ Lov\acute{a}sz Laˊszloˊ Lovaˊsz 。对于允许空盒的情况,我们可以想象先给每一个盒子装一个“虚拟”的小球从而将此问题转化为 ( 1 , 0 , 0 ) (1,0,0) (1,0,0)。一个通俗的比喻:将 n n n 枚相同的 1 1 1 元硬币分给 r r r 个小朋友,我们在分硬币前,首先向每个小朋友借一枚 1 1 1 元硬币,就有了 n + r n+r n+r 枚硬币,再分给小朋友们,且每个小朋友至少分到一枚硬币,此时是转化成了 ( 1 , 0 , 0 ) (1,0,0) (1,0,0),只不过空隙的总数变成了 n + r n+r n+r,因此答案是 C n + r − 1 r − 1 C_{n+r-1}^{r-1} Cn+r1r1

#4a ( 0 , 1 , 0 ) (0,1,0) (0,1,0)

\qquad 4 4 4 类的特征是:集合划分问题

\qquad 对于球 r r r 个,盒 n n n 个的情况,最终无非就是把 r r r 个球分成 n n n 个非空集合。我们把球 r r r 个,盒 n n n 个的排列组合个数记作 S ( r , n ) S(r, n) S(r,n) 。我们把球 r r r 个,盒 n − 1 n - 1 n1 个的排列组合个数记作 S ( r , n − 1 ) S(r, n - 1) S(r,n1) 。我们把球 r + 1 r + 1 r+1 个,盒 n n n 个的排列组合个数记作 S ( r + 1 , n ) S(r + 1, n) S(r+1,n) 。对于 S ( r + 1 , n ) S(r + 1, n) S(r+1,n) ,我们假设在 S ( r , n ) S(r, n) S(r,n) 的基础上多加一个球并考虑有多少种情况。

\qquad 我们可以分情况讨论:

$\qquad\quad$1. 如果 r r r 个球已经放在了 n − 1 n - 1 n1 个盒子里,那么新来的这个球单独放在了一个盒子里,这样就有 S ( r , n − 1 ) S(r, n - 1) S(r,n1) 种方式。

$\qquad\quad$2. 如果 r r r 个球已经放在了 n n n 个盒子里了,那新来的这个球只能放到任意一个盒子里。所以有 n × S ( r , n ) n\times S(r, n) n×S(r,n) 种方式。

\qquad 综上,把两种情况的方式数加在一起(加法原理)即 S ( r + 1 , n ) = S ( r , n − 1 ) + n × S ( r , n ) S(r + 1, n) = S(r, n - 1) + n\times S(r, n) S(r+1,n)=S(r,n1)+n×S(r,n) 。如果只有一个盒子,那答案一定是 1 1 1, 即 S ( n , 1 ) = 1 S(n, 1) = 1 S(n,1)=1 ,如果球的数量和盒子数量相等,又不能为空,肯定也只有一种方式,即 S ( i , i ) = 1 S(i, i) = 1 S(i,i)=1。这是边界条件。

#4b ( 0 , 1 , 1 ) (0,1,1) (0,1,1)

\qquad 对于 r r r 个球, n n n 个盒子。可以空的方法就比 ( 0 , 1 , 0 ) (0,1,0) (0,1,0) 中多很多了。比如全部都放在一个箱子里,或者全部都放在两个箱子里等。只要不把全部放在超过 n n n 个箱子里都是合理的。那么就有 ∑ i = 1 n S ( r , i ) \sum_{i=1}^nS(r,i) i=1nS(r,i) 种方法,即把所有比 n n n 少的盒子数的排列都加载一起。

#4c ( 0 , 0 , 0 ) (0,0,0) (0,0,0)

\qquad ( 0 , 1 , 0 ) (0,1,0) (0,1,0) 相似,但是这次每一个球都是不一样的, n n n 个不同的盒子的全排列是 n ! n! n! 。所以 r r r 个不同的球, n n n 个不同的盒子,不为空的排法是 S ( r , n ) × n ! S(r, n) \times n! S(r,n)×n!

#5a ( 1 , 1 , 0 ) (1,1,0) (1,1,0)

\qquad 5 5 5 类的特征是:正整数划分问题

\qquad 此问题其实就是对于正整数 r r r 最多分成 n n n 份的方式。记做 B ( r , n ) B(r,n) B(r,n)。先把 m m m 个盒子各自放一个球,还剩 n − m n-m nm 个球,这些球可以放在 m m m 个盒子里,因为允许为空,所以是 B ( 1 , n − m ) + B ( 2 , n − m ) + ⋯ + B ( m , n − m ) B(1,n-m) + B(2,n-m) + \cdots +B(m,n-m) B(1,nm)+B(2,nm)++B(m,nm) 。得 B ( r , n ) = B ( 1 , n − m ) + B ( 2 , n − m ) + ⋯ + B ( m , n − m ) B(r,n)=B(1,n-m) + B(2,n-m) + \cdots +B(m,n-m) B(r,n)=B(1,nm)+B(2,nm)++B(m,nm)

#5b ( 1 , 1 , 1 ) (1,1,1) (1,1,1)

\qquad 参照 ( 1 , 0 , 1 ) (1,0,1) (1,0,1),用虚拟小球的思想。我们先把每个盒子放上一虚拟的小球,再做按 ( 1 , 1 , 0 ) (1,1,0) (1,1,0) 处理。即将正整数 r + n r+n r+n 最多分成 n n n 份的方式。

问题代号球是否相同盒是否相同是否允许空盒答案
( 0 , 0 , 0 ) (0,0,0) (0,0,0) S ( r , n ) × n ! S(r,n)\times n! S(r,n)×n!
( 0 , 0 , 1 ) (0,0,1) (0,0,1) r n r^n rn
( 0 , 1 , 0 ) (0,1,0) (0,1,0) S ( r , n ) S(r,n) S(r,n)
( 0 , 1 , 1 ) (0,1,1) (0,1,1) ∑ i = 1 n S ( r , i ) \sum_{i=1}^nS(r,i) i=1nS(r,i)
( 1 , 0 , 0 ) (1,0,0) (1,0,0) C n − 1 r − 1 C_{n-1}^{r-1} Cn1r1
( 1 , 0 , 1 ) (1,0,1) (1,0,1) C n + r − 1 r − 1 C_{n+r-1}^{r-1} Cn+r1r1
( 1 , 1 , 0 ) (1,1,0) (1,1,0) B ( r , n ) B(r,n) B(r,n)
( 1 , 1 , 1 ) (1,1,1) (1,1,1) B ( r + n , n ) B(r+n,n) B(r+n,n)

(完结,比较短)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值