小球與盒子的問題

這類問題的基本模型是:你有$n$個小球,$m$個盒子,現在想把這$n$個小球放進$m$個盒子中,問有多少种放的方法

但是隻給出這樣的條件並不足夠,我們必須加上一些限制,否則結果是不確定的

一般加的有三個限制,即小球是否有區別、盒子是否有區別、允不允許有空盒子,也因此可以組合出八種不同的問題

接下來我們逐個討論這八種問題

一.小球有區別,盒子有區別,允許有空盒子

這是最簡單的,因爲每個小球都有$m$種不同的放法,於是總共有$m^{n}$種不同的放法

二.小球有區別,盒子有區別,不允許有空盒子

首先是初等的情況:如果$m>n$,那麼顯然是不可能放好的,方案數爲0

那麼如果$m=n$,答案就是$n!$(注意不是$n!m!$,這是初學者常犯的錯誤,你不能讓這倆一起變化)

而對於$n>m$的情況,我們不妨構造一個遞推式$f[n][m]$表示把$n$個不同小球放進$m$個不同盒子的方法,那麼當我們新增一個小球的時候,我們可以有:

$f[n+1][m]=m*(f[n][m]+f[n][m-1])$,這個遞推式成立的原因是:當我們新增一個小球的時候,面對$m$個盒子就有兩種可能,一種是原來這$m$個盒子都已經有球了,那麼這個小球隨便選個盒子放進去就行,另一種是原來只有$m-1$個盒子裏有球,這樣這個新來的球只能放在沒有球的那個盒子裏,但是由於盒子不同,沒有球的盒子可能是這$m$個盒子中任何一個,因此也有$m$種可能

三.小球沒區別,盒子有區別,不允許有空盒子

這種情況等價於求方程$x_{1}+...+x_{m}=n$的所有正整數解的組數

實際上就是決定每個盒子裏要放幾個小球,那麼我們採用隔板法,把小球排成一行,這樣小球之間一共有$n-1$個空隙,然後在這$n-1$個空隙中選擇$m-1$個空隙放下隔板,這樣第$i$個隔板與第$i+1$個隔板之間就是要放進第$i+1$個盒子的小球,於是答案即爲$C_{n-1}^{m-1}$

四.小球沒區別,盒子有區別,允許有空盒子

這種情況等價於求方程$x_{1}+...+x_{m}=n$的所有非負整數解的組數

這種情況也很容易,我們再拿$m$個小球過來,在每個盒子裏都放一個,這樣問題就轉化成了你有$n+m$個小球,放進$m$個盒子裏,不允許有空盒子的上面三的情況,那麼答案即爲$C_{n+m-1}^{m-1}$

但是如果換一個角度,我們說允許有空盒子,那麼我們忽略所有空盒子剩下的盒子就是不空的(廢話),那麼我們假設有$i$個盒子非空,那麼放法就是$C_{n-1}^{i-1}$,而由於盒子不同,選出這$i$個不空的盒子的方法爲$C_{m}^{i}$,於是答案即爲$\sum_{i=1}^{m}C_{m}^{i}C_{n-1}^{i-1}$,那麼我們還可以獲得一個組合恆等式:$\sum_{i=1}^{m}C_{m}^{i}C_{n-1}^{i-1}=C_{n+m-1}^{m-1}$

五.小球有區別,盒子沒區別,不允許有空盒子

這裏開始變得有些困難了,我們考慮遞推:設$f[n][m]$爲此時的方案數,那麼有轉移$f[n+1][m]=mf[n][m]+f[n][m-1]$

這個遞推式的合理性在於,當我們新加一個小球的時候有兩種可能的情況,一種是原來的$m$個盒子已經放滿了,那麼可以任選一個盒子放進去,另一種是還有一個空盒子,但是由於盒子沒區別,所以空的是哪個無所謂,故前者要乘$m$,後者不乘

記$S_{2}(n,k)=f[n][k]$,這就是第二類斯特林數

 

第二類斯特林數$S(n,k)$表示將$n$個不同元素劃分爲$k$個集合的方案數

遞推式:$S(n,k)=S(n-1,k-1)+kS(n-1,k)$

 

組合意義下的寫法:$S(n,k)=\frac{1}{k!}\sum_{i=0}^{k}(-1)^{i}C(k,i)(k-i)^{n}$

這樣的話,考慮快速求斯特林數的方法:

展開後面的組合數:

$S(n,k)=\frac{1}{k!}\sum_{i=0}^{k}(-1)^{i}\frac{k!}{i!(k-i)!}(k-i)^{n}$

然後扔到前面去:

$S(n,k)=\sum_{i=0}^{k}\frac{(-1)^{i}}{i!}\frac{(k-i)^{n}}{(k-i)!}$

這就是卷積了嘛

 

性質:

$m^{n}=\sum_{i=0}^{m}C_{m}^{i}S(n,i)i!$

六.小球有區別,盒子沒區別,允許有空盒子

 由於允許有空盒子,那麼我們忽略所有空盒子就是必須放滿的情況,那麼答案就是$\sum_{i=1}^{m}S_{2}(n,i)$(即只放在一個盒子~放在全部$m$個盒子的方案數之和)

七.小球沒區別,盒子沒區別,允許有空盒子

 這實際上就是把$n$拆成$m$個非負數之和的方案數,一般將這個數記作$P_{m}(N)$,但是這裏可以寫出一個遞推$P[n+m][m]=P[n][m]+P[n+m][m-1]$,這個遞推的思想是分兩類討論,一類是沒有空盒子,那麼相當於是在$n$進行$m$拆分的基礎上每個數加上$1$,而如果有空盒子,那麼不妨在$m-1$個盒子的基礎上多放一個空盒子就可以。

八.小球沒區別,盒子沒區別,不允許有空盒子

類似上面的處理,我們可以先在每個盒子裏放一個球轉化成七的情況,這樣答案就是上面的$P[n-m][m]$

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章