口胡排列与组合
排列
排列是分顺序的,比如集合\({1,2,3,4,5}\)
我们需要选出\(3\)个数
就是\(5*4*3\):第一次有五个位置可选,第二次有四个位置可选,第三次有三个位置可选
是与顺序有关的,也就是\((1,2,3)\)和\((3,2,1)\)是有本质上区别的
所以我们有排列公式,一个集合\(S\),\(|S|=n\),选\(m\)个数的排列:
\[A_n^m=n!/(n-m)!
\]
组合
组合是不分顺序的,还是那个集合
\((1,2,3)\)和\((3,2,1)\)是没有本质上区别的,也就是这时一种方案
我们定义\(C_n^m\),为一个集合\(S\),\(|S|=n\),选\(m\)个数的组合:
\[A_n^m=C_n^m*A_m^m\longrightarrow C_n^m=\dfrac{n!}{m!(n-m)!}
\]
再来几个性质加深下理解:
-
\(\sum\limits_{i=0}^nC_i^j=C_{n+1}^{j+1}\)
理解:枚举\(j+1\)的右端点\(i+1\),则相当于从\(i\)个点中选\(j\)个点 -
\(\sum\limits_{i=0}^n C_{n}^i(m-1)^{n-i}=m^n\)
理解:把\(n\)个有区别的小球丢进\(m\)个有区别的盒子,等同于从\(n\)个小球里选\(i\)个,剩下的丢进\(m-1\)个盒子了
可重集合的全排列
我们在数学上的集合定义是非重集,可信息学里常常又要处理可重集(集合里的元素可重复)
比如集合\((1,2,2,3,4,4)\),这便是一个可重集
而此时可重集的排列其实也是与选择顺序有关的,但选第二个跟选第三个本质上是相同的
设\(|S|\)有\(k\)种数字,分别有\(n_1,n_2...n_k\)个,求全排列
我们可以形象地理解为:我们留出\(n\)个空位,每次把一种数字插进去的组合
\[\begin{aligned}\\
ans&=C_n^{n_1}*C_{(n-n_1)}^{n_2}...*C_{(n-n_1-n_2...-n_{k-2})}^{n_{k-1}}*C_{n_k}^{n_k}\\
ans&=\dfrac{n!}{n_1!n_2!...n_k!}\\
\end{aligned}\]