序
求將 \(n\) 個無標號元素用 \(m-1\) 個隔板分入 \(m\) 個有標號可空集合的方案數。
或
求不定方程
\[x_1 + x_2 + \dots + x_m = n \quad (m,n \in N_+, m \le n) \]的非負整數解的個數。
是一個非常經典的組合問題,眾所周知其答案為組合數 \({n+m-1 \choose m-1}\) ,這可以根據其組合意義結合隔板法容易的得到。
然而,筆者發現還有很多有趣的方法可以得到上式,值得探討一番。
組合意義
如上文所說,組合意義可以結合隔板法容易的得到。考慮將 \(n\) 個無標號元素用 \(m-1\) 個隔板分入 \(m\) 個有標號非空集合,其方案數為 \({n-1 \choose m-1}\) 。然而我們需要的是各集合可空情況下的方案數。考慮新增 \(m\) 個元素,先給每個集合放一個元素墊底,再做各組可空的分配。這個小Trick讓我們將問題轉化為求 \(n+m\) 個無標號元素分入 \(m\) 個非空有標號集合的方案數。再用隔板法,得到答案 \({n+m-1 \choose m-1}\) 。
形式化的,我們令 \(y_i = x_i + 1\) ,則我們現在只需求 \(y_1 + y_2 + \dots + y_m = n + m\) 的正整數解,隔板法得到答案 \({n+m-1 \choose m-1}\) 。
列舉空位——範德蒙德卷積公式
我們使用另一種方法將隔板法應用到可空集合上。
列舉 \(m\) 個集合中有幾個是空集,可以得到下式
又由範德蒙德卷積公式
\[{n+m \choose k} = \sum_{i=\max(0,k-m)}^{\min(n,k)} {n \choose i} {m \choose k-i} \](範德蒙德卷積公式易由 \((1+x)^{n+m} = (1+x)^n (1+ x)^m\) 的二項式展開說明)
可直接得到( \(k' = m-1\) , \(n' = m\) , \(m' = n-1\) )
遞推——楊輝三角
這固然很妙,但要是我想不到這些Trick怎麼辦?
不會通項就設狀態dp唄(反正是OIer有電腦幫我算
設狀態 \(f(n,m)\) 表示將 \(n\) 個無標號元素放入 \(m\) 個有標號可空集合的方案數。
考慮當前正在為第 \(n\) 個元素確定所屬集合。既然元素是無標號的,不妨按升序排列集合。於是放入新的元素時,只需決定要先跳過多少個集合再放入。易得下面的遞推式
初始狀態滿足
(中括號是艾弗森括號)
不妨列出 \(f\) 的前幾項——
n\m m0 m1 m2 m3 m4
n0 1 1 1 1 1
n1 0 1 2 3 4
n2 0 1 3 6 10
n3 0 1 4 10 20
很熟悉...這是楊輝三角!
可以由遞推式得到楊輝三角的特徵——
那麼,只需觀察並將表格的每一項對映到楊輝三角,我們就能得到 \(f(n,m) = {n+m+1 \choose m-1}\) 。
生成函式——廣義二項式定理
要是我連楊輝三角都沒看出來怎麼辦
方便起見,此處我們不研究 \(m=0\) 的情況。不妨設
顯然, \(g\) 的遞推式為
據此我們發現,每一排是其前一排的字首和陣列,或者換句話說,每一排是其後一排的向前差分陣列。我們先拿出 \(n=0\) 一排的OGF
又根據差分
得
又由廣義二項式定理
\[(x+y)^\alpha = \sum_{k=0}^{\infty} {\alpha \choose k} x^k y^{\alpha - k} \]其中
\[{\alpha \choose k} = \frac{\alpha(\alpha-1)\dots(\alpha-k+1)}{k!}\\ \]
展開,得到
故
即
換回 \(f\) 表示就得到答案
Burnside——第一類斯特林數
如果要分組的 \(n\) 個元素是有標號的,問題將會簡單很多——直接列舉每個元素的所屬集合即可,顯然方案數為 \(m^n\) 。
但關鍵是它們沒有標號。
無標號的本質是認為任意置換標號前後是同構的。這啟發我們將所有 \(n\) 元置換(即置換群)作為變換集,使用等價類計數Burnside來解決該問題。
根據Burnside定理
\[\mathrm{ans} = \frac{1}{|G|} \sum_{f \in G} C(f) \]其中 \(G\) 是變換集, \(C(f)\) 是變換 \(f\) 的不動點。
可以寫出
其中 \(\mathrm{perm}(n)\) 表示所有 \(n\) 元置換的集合,而 \(\mathrm{cyc}(p)\) 指置換 \(p\) 的形成的置換圖中環的個數。
在外層列舉 \(\mathrm{cyc}(p)\) ,得
\(\sum_{p \in \mathrm{perm}(n)} [\mathrm{cyc}(p) = k]\) 是什麼?
第一類斯特林數 \({n \brack k}\) 表示將 \(n\) 個有標號元素分成 \(k\) 個無標號圓排列的方案數。
在置換圖中, \(p_i\) 表示節點 \(i\) 的下一個節點是 \(p_i\) 。而列舉置換的過程,正是列舉置換圖的過程,也正是列舉圓排列的過程!而 \([\mathrm{cyc}(p) = k]\) 則為我們確定了環,或者說圓排列的個數。
驚訝的,我們發現
帶入其中,答案式變為
於是,根據第一類斯特林數性質之一
\[\sum_{k=1}^n {n \brack k} m^k = m(m+1)\dots(n+m-1) \](該性質可以結合第一類斯特林數的遞推式做數學歸納得出)
我們愉快的得到了答案
用Burnside解決無標號問題的思路極具啟發性,例如烷基計數問題的Burnside解法。
後記&致謝
同分異構體計數帶我重回OI
感謝TbYangZ菊苣全程提供技術支援。
感謝神仙化學老師提供組合意義解釋。
2021/05/01