淺談多重集排列組合
本篇隨筆簡單講解一下數學中的多重集排列組合。
一、多重集概念
集合的概念是唯一性。
多重集的特點就是不唯一性。
也就是同一種元素可以在多重集里面多次出現。
也就是multiset。
二、多重集排列數
假設多重集一共有\(N\)個元素。那么對這\(N\)個元素全排列,除掉相同元素的全排列的積即可。
也就是:
\[A=\frac{N!}{n_1!n_2!\cdots n_k!} \]
很顯然,先把所有可能,也就是全排列處理出來,然后相同元素可以隨意互換位置,按乘法原理除下去就行。
三、多重集組合數
多重集組合數這里比較難想。好好理解。
如果正着想,反正蒟蒻智商沒有太通。
不妨反着來:對於有\(N\)種元素的多重集\(S\),選\(K\)個元素,注意是個不是種,的可行方案數。可以變成:現在有\(N\)個籃子,把\(K\)個元素扔進這些籃子里的方案數。
注意,這種是特殊情況,也就是說,每種元素無限多個可供挑選。
這樣的話,用隔板法解決問題。
容易得出,答案也就是\(C_{N+K-1}^{N-1}\)。
解釋一下,現在有\(K\)個元素,分成\(N\)堆,也就是要往里插入\(N-1\)塊板。按理講應該是\(C_{K+1}^{N-1}\),但是因為允許有空集,也就是不插,那么就相當於每塊板子插進去之后又產生了新元素,所以是這個答案。
那么,根據多重集的限制,現在每種元素有一個數量上限,怎么辦呢?
很簡單,采用容斥原理。關於容斥原理,請見:
上限是“至多放\(f[i]\)個”,那么如果我往這個里面放\(f[i]+1\)個,是不是就不合法了?
把不合法的減去即可。
式子就不寫了,大家知道這么回事就行。
推薦例題: