組合數公式


排列組合:

排列推導:

\[\binom{n}{k}+\binom{n}{k-1}=\binom{n+1}{k} \]

很好證明,將定義式子寫出來后合並分數即可.

二項式定理:

\[(a+b)^n=\sum_{i=0}^n\binom{n}{i}a^{n-i}b^i \]

證明可以利用上面的推導做歸納。

多重集的排列數

定義:

多重集是包含重復元素的廣義集合。

而多重集的排列數又稱為 多重組合數

性質:

\(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\)\(a_1\) .... \(n_k\)\(a_k\) 組成的多重集,則 \(S\) 的全排列個數為:

\[\frac{n!}{\prod_{i=1}^kn_i!}=\frac{n!}{n_1!n_2!\cdots n_k!} \]

相當於是把相同元素的排列數除掉了。

具體來說,有 \(k\) 種不一樣的球,每種球的個數分別是 \(n_1,n_2,....,n_k\) ,且加和為 \(n\)

\(n\) 個球的全排列數就是 多重集的排列數

多重集的組合數 \(1\)

\(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\)\(a_1\) .... \(n_k\)\(a_k\) 組成的多重集。

那么對於整數 \(r(r < n_i)\) ,從 \(S\) 中選擇 \(r\) 個元素組成一個多重集的方案數就是 多重集的組合數

這個問題等價於 :\(x_1+x_2+...+x_k=r\) 的非整數解的數目,可以用插板法解決。答案為:

\[\binom{r+k-1}{k-1} \]

證明:

因為在這種情況下, \(x_{[1,k]}\) 的數可能為 \(0\) ,我們把每一個 \(x+1\) ,得到了這個式子:

\[x_1+x_2+...+x_k=r+k \]

代換意義就是用 \(k-1\) 個擋板,在 \(k+r-1\) 個空隙,將 \(k+r\) 個小球分成 \(k\) 部分。即以上式子。

多重集的組合數 \(2\):

\(S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k,\}\),表示由 \(n_1\)\(a_1\) .... \(n_k\)\(a_k\) 組成的多重集。

對於正整數 \(r(r < n)\) , 求從 \(S\) 中選擇 \(r\) 個元素組成一個多重集的方案數.

這樣的話就限制了每種元素取的個數,把這個問題轉化成帶限制的線性方程:

\[\forall i\in [1,k],\ x_i\le n_i,\ \sum_{i=1}^kx_i=r \]

我們利用容斥原理去解決,模型如下:

  1. 全集:\(\sum_{i=1}^k x_i=r\) 的非負整數解

  2. 屬性:\(x_i\leq n_i\)

設 滿足屬性 \(i\) 的集合是 \(S_i\)\(\overline{S_i}\) 表示不滿足屬性 \(i\) 的集合,即滿足 \(x_i \geq n_i+1\) 的集合,那么答案即為:

\[\left|\bigcap_{i=1}^kS_i\right|=|U|-\left|\bigcup_{i=1}^k\overline{S_i}\right| \]

根據容斥原理。。。。。 具體在 \(OI-WIKI\) 上都有。

用全集 \(|U|=\binom{r+k-1}{k-1}\) 減去上面式子,得到了多重集的組合數:

\[Ans=\sum_{p=0}^k(-1)^p\sum_{A}\binom{k+r-1-\sum_{A} n_{A_i}-p}{k-1} \]

其中 \(A\) 是充當枚舉子集的作用,滿足 \(|A|=p, A_i<A_{i+1}\)

不相鄰的排列:

定義:

\([1,n]\)\(n\) 個自然數中選 \(k\) 個,這 \(k\) 個數中任何兩個數都不相鄰的組合有:

\[\binom{n-k+1}{k} \]

錯排:

詳情見我另外一篇博客:錯排

圓排列:

定義:

\(n\) 個人全部來圍成一圈,所有的排列數即為 \(Q_n^n\)

分析:

考慮其中已經排好的一圈,從不同位置斷開,又變成不同的序列,所以有以下推導:

\[Q_n^n \times n= A_n^n \rightarrow Q_n^n=\frac{A_n^n}{n}=(n-1)! \]

從這里能推導出 \(n\) 個人其中 \(m\) 個圍成一圈的方案數:

\[\mathrm Q_n^r = \frac{\mathrm A_n^r}{r} = \frac{n!}{r \times (n-r)!} \]

組合數性質:

1. 將選出的集合對全集取補集:

\[\binom{n}{m}=\binom{n}{n-m}\tag{1} \]

2. 遞推式:

\[\binom{n}{k}=\frac{n}{k}\binom{n-1}{k-1} \]

3. 組合數遞推式(和上方相同)

\[\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1} \]

然后一開始初始化是這樣的:

c[1][1]=1; for(int i=0;i<=n;i++) c[i][0]=1;
for(int i=2;i<=n;i++)
    for(int j=1;j<=i;j++){
        c[i][j]=c[i-1][j]+c[i-1][j-1];
    }

這個式子是楊輝三角的公式表達。

4. 二項式定理特殊情況:

\[\binom{n}{0}+\binom{n}{1}+\cdots+\binom{n}{n}=\sum_{i=0}^n\binom{n}{i}=2^n\tag{4} \]

5. 二項式定理另一種情況:

\[\sum_{i=0}^n(-1)^i\binom{n}{i}=[n=0]\tag{5} \]

6. 拆組合數:

\[\sum_{i=0}^m\binom{n}{i}\binom{m}{m-i}=\binom{m+n}{m} (n\geq m) \]

\(m=n\) 的時候,則有式子:

\[\sum_{i=0}^n \binom{n}{i}^2=\binom{2n}{n} \]

剩下的看 OI-WIKI 好了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM