前言
- 組合數學也是數學中一個比較重要的分支,而其中最經典的模型莫過於盒子與球問題。
問題
- 按照球是否不同,盒子是否不同,盒子是否允許為空,大致可以分為 \(2^3\),也就是 \(8\) 種問題。
- 給定 \(N\) 個不同的球,放進 \(M\) 個不同的盒子,盒子允許為空,有多少種方案?\((A)\)
- 給定 \(N\) 個不同的球,放進 \(M\) 個不同的盒子,盒子不允許為空,有多少種方案?\((B)\)
- 給定 \(N\) 個不同的球,放進 \(M\) 個相同的盒子,盒子允許為空,有多少種方案?\((C)\)
- 給定 \(N\) 個不同的球,放進 \(M\) 個相同的盒子,盒子不允許為空,有多少種方案?\((D)\)
- 給定 \(N\) 個相同的球,放進 \(M\) 個不同的盒子,盒子允許為空,有多少種方案?\((E)\)
- 給定 \(N\) 個相同的球,放進 \(M\) 個不同的盒子,盒子不允許為空,有多少種方案?\((F)\)
- 給定 \(N\) 個相同的球,放進 \(M\) 個相同的盒子,盒子允許為空,有多少種方案?\((G)\)
- 給定 \(N\) 個相同的球,放進 \(M\) 個相同的盒子,盒子不允許為空,有多少種方案?\((H)\)
解法
-
A :給定 \(N\) 個不同的球,放進 \(M\) 個不同的盒子,盒子允許為空,有多少種方案?
對於每一個球,都有 \(M\) 種選擇,所以答案即為 \(M^N\)
-
F :給定 \(N\) 個相同的球,放進 \(M\) 個不同的盒子,盒子不允許為空,有多少種方案?
經典隔板法問題,可以轉化為:在 \(N\) 個球之間的 \(N-1\) 個間隙中選擇 \(M-1\) 個位置將其分成 \(M\) 份,組合數直接求解。答案即為 \(C_{N-1}^{M-1}\)
-
E :給定 \(N\) 個相同的球,放進 \(M\) 個不同的盒子,盒子允許為空,有多少種方案?
和 \(F\) 題類似,只不過盒子允許為空,那么這個時候我們可以假設每個盒子里都已經放了一個球,這個時候實際上就有 \(N+M\) 個球了,類似的,我們再次使用隔板法。對於每一種方案,我們就可以想象成每個空隙右邊的第一個球是提前放好在盒子里的,如果將這個球省略,正好就是盒子允許為空的一種方案。故答案即為 \(C_{N+M-1}^{M-1}\)
-
G :給定 \(N\) 個相同的球,放進 \(M\) 個相同的盒子,盒子允許為空,有多少種方案?
設 \(f[n][m]\) 表示將 \(n\) 個球放到 \(m\) 個盒子里的方案數。我們可以分兩種情況來考慮:1.有一個盒子不放球的情況,那么答案就是 \(f[n][m-1]\)。2.所有的盒子都放一個球,那么答案就是 \(f[n-m][m]\)。根據加法原理,我們可以得到遞推式:\(f[n][m]=f[n][m-1]+f[n-m][m],m=\min(m,n)\)。邊界:\(f[0][m]=1,f[n][1]=1\)
-
H :給定 \(N\) 個相同的球,放進 \(M\) 個相同的盒子,盒子不允許為空,有多少種方案?
每個盒先放一個球,然后就可以變成問題 \(G\)。答案:\(0\quad(N<M)\) 或者 \(f[N-M][M]\)
-
D :給定 \(N\) 個不同的球,放進 \(M\) 個相同的盒子,盒子不允許為空,有多少種方案?
設 \(f[n][m]\) 表示將 \(n\) 個球放到 \(m\) 個盒子里的方案數。那么對於第 \(n\) 個球,則有兩種選擇:1.其單獨放在一個盒子里,那么答案就是 \(f[n-1][m-1]\)。2.其和其他的球共用一個盒子,因為有 \(m\) 個盒子可以選擇,那么答案就為 \(m\times f[n-1][m]\)。實際上這就是第二類斯特林數。根據加法原理,遞推式為 \(f[n][m]=f[n-1][m-1]+m\cdot f[n-1][m]\)。邊界:
if(m==n||m==1) return 1。 -
C :給定 \(N\) 個不同的球,放進 \(M\) 個相同的盒子,盒子允許為空,有多少種方案?
和 \(D\) 類似,分別考慮有 \(0\sim M-1\) 個盒子為空的情況,那么答案就為 \(\sum_{i=1}^nf[n][i]\)
-
B :給定 \(N\) 個不同的球,放進 \(M\) 個不同的盒子,盒子不允許為空,有多少種方案?
和 \(D\) 題類似,假如我們現在已經得到了將 \(N\) 個不同的球放進 \(M\) 個相同的盒子里的方案,那么實際上由於盒子是不同的,那么還需要對盒子進行排序,(因為盒子有異,所以交換兩個盒子的順序算不同的方案),乘上 \(M\) 的階乘即可。
——2021年2月9日
