1. 程式人生 > >組合數學知識要點

組合數學知識要點

... 導出 spl 如果 方程組 line 一個 復雜 多項式

排列與組合

加法法則與乘法法則

基礎思想:分類計數使用加法,分步計數使用乘法

Cayley定理

\(n\)個有標號頂點的樹的個數為\(n^{n-2}\)

證明:定義一個消去序列,序列與樹一一對應(略)。

排列與組合

\(n\)\(r\)排列:\(\frac{n!}{(n-r)!}\)

\(n\)\(r\)組合:組合數(naive)

\(n\)\(r\)可重排列:\(n^r\)(naive)

\(n\)\(r\)可重組合:\(\binom{n+r-1}{r}\)

多重集\(S=\{(a_1,k_1),(a_2,k_2),...,(a_n,k_n)\}\)

多重集的全排列:\(\frac{n!}{k_1!k_2!...k_n!}\)

多重集的\(r\)組合:\(\binom{n+r-1}{r}(\forall k\ge r)\)

隔板法、放縮法是解釋組合意義的利器

組合問題與二項式系數、格路問題的聯系

Wallis公式與Stirling公式

Stirling公式:\(n!\backsim \sqrt{2n\pi}(\frac n e)^n\)

貌似OI不怎麽用得上?

遞推關系與母函數

母函數

對一個數列\(a_0,a_1,a_2...\)構造函數

\[G(x)=a_0+a_1x+a_2x^2+...\]

稱為母函數,其長度可以是無窮大。

母函數的表示及求解

大部分無窮大的母函數可以寫成若幹個無窮等比數列的和

無窮等比數列求和公式:\(S=\frac{a_1}{1-q}\)

(不失一般性地設\(0<q<1\),由有窮等比數列求和\(S_n=\frac{a_1(1-q^n)}{1-q}\)\(q^n\)看作無窮小可以推導出)

求解的一般步驟

一、寫出遞推式(形如\(a_i=f(a_{i-1})\),記為遞推式的第\(i\)項)

二、遞推式的第\(i\)項兩邊乘上\(x^i\),最後所有等式左右兩邊分別求和,形如
\[a_1x+a_2x^2+a_3x^3+...=f(a_0)x+f(a_1)x^2+f(a_2)x^3+...\]

三、通過移項、無窮等比數列求和、因式分解等變換,把上面的大等式大概寫成這樣(分子是任意一個多項式\(P(x)\),不用在意)
\[G(x)=\frac{P(x)}{(1-q_1x)(1-q_2x)...}\]

四、上式可以裂項成若幹等比數列的和
\[G(x)=\frac{A_1}{(1-q_1x)}+\frac{A_2}{(1-q_2x)}+...\]
待定系數法,將上式通分以後,根據合並後的分子與上面的\(P(x)\)對應項的系數相等,聯立方程組解出\(A_1,A_2,...\)

母函數的應用

寫出數列的母函數後,我們可以寫出數列的通項公式,進而快速求出數列指定項\(a_n\)的值。

既然我們可以把大部分母函數寫成等比數列和的形式,那麽我們就對於每一個等比數列,算出它的\(x^n\)的系數,最後相加即可得到\(a_n\)

優選法

就是三分求單峰函數的極值,只不過在區間的\(0.382\)\(0.618\)等分點求值,這樣有一個值在下一次的時候還能用上。

利用Fibonacci數列後一項比上前一項接近\(0.618\)的性質,可以使優選法取到整點。

線性常系數齊次遞推關系

對於數列\(\{a_n\}\)有遞推式

\(a_n+c_1a_{n-1}+c_2a_{n-2}+...+c_ka_{n-k}=0(a_0=d_0,a_1=d_1,...a_{k-1}=d_{k-1})\)

\(\forall c,d\)都是常數,則稱上式為\(k\)階線性常系數齊次遞推關系

\(C(x)=x^k+c_1x^{k-1}+c_2x^{k-2}+...+c_{k-1}x+c_k\)稱為特征多項式。

求解

經過復雜的變換,數列的母函數一定可以寫成
\[G(x)=\frac{P(x)}{1+c_1x+c_2x^2+...+c_kx^k}\]

其中\(P(x)\)為一個極其復雜的最高次項不超過\(k-1\)的多項式。

分母顯然等價於\(x^kC(\frac 1 x)\),於是考慮解方程

\[C(x)=(x-α_1)^{k_1}(x-α_2)^{k_2}...(x-α_t)^{k_t}\]

\(α_1,α_2,...α_t\)\(C(x)\)在復數域內的\(t\)個根,稱為特征根。顯然可能有重根,\(k_i\)即為\(α_i\)的重復次數,於是有\(\sum\limits_{i=1}^t k_i=k\)

於是將\(k\)\(x\)乘進分母中得出

\[G(x)=\frac{P(x)}{(1-α_1x)^{k_1}(1-α_2x)^{k_2}...(1-α_tx)^{k_t}}\]

開始求\(x^n\)系數\(a_n\)三種情況只好死記硬背

單根

設有若幹單根\(α_1,α_2,...α_k\)

直接待定系數\(A_1α_1^n+A_2α_2^n+...+A_kα_k^n\)

復根

如果出現復根,肯定是一對一對的共軛復根\(ρ(\cosθ\pm i\sinθ)\)

待定系數\(Aρ^n\cos nθ+Bρ^n\sin nθ\)

多重根

有一個\(k\)重根\(α\)

待定系數\((A_0+A_1n+A_2n^2+...+A_{k-1}n^{k-1})α^n\)

貌似也適用於單根\((k=1)\)


三種情況的待定系數式相加即為\(a_n\)的表達式

將初始值\(a_0=d_0,a_1=d_1,...a_{k-1}=d_{k-1}\)帶入\(a_n\)的表達式中,得到一個\(k\)元方程組,求解即可。

系數都求出來了,\(a_n\)當然求出來啦!

整數的拆分

更新中~

組合數學知識要點