【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
文章目錄
- 一、使用生成函數求解多重集 r 組合數
- 二、使用生成函數求解多重集 r 組合數 示例
參考博客 :
- 【組合數學】生成函數 簡要介紹 ( 生成函數定義 | 牛頓二項式系數 | 常用的生成函數 | 與常數相關 | 與二項式系數相關 | 與多項式系數相關 )
- 【組合數學】生成函數 ( 線性性質 | 乘積性質 )
- 【組合數學】生成函數 ( 移位性質 )
- 【組合數學】生成函數 ( 求和性質 )
- 【組合數學】生成函數 ( 換元性質 | 求導性質 | 積分性質 )
- 【組合數學】生成函數 ( 性質總結 | 重要的生成函數 ) ★
- 【組合數學】生成函數 ( 生成函數示例 | 給定通項公式求生成函數 | 給定生成函數求通項公式 )
- 【組合數學】生成函數 ( 生成函數應用場景 | 使用生成函數求解遞推方程 )
一、使用生成函數求解多重集 r 組合數
S={n1?a1,n2?a2,?,nk?ak}S = \{ n_1 \cdot a_1, n_2 \cdot a_2, \cdots, n_k \cdot a_k \}S={n1??a1?,n2??a2?,?,nk??ak?} 是多重集 , 其含有 kkk 個種類的元素 , n1,n2,?,nkn_1, n_2, \cdots, n_kn1?,n2?,?,nk? 是每種元素的重復度 ,
該 多重集的 rrr 組合數 , 是 不定方程 x1+x2+?+xk=rx_1 + x_2 + \cdots + x_k = rx1?+x2?+?+xk?=r 的非負整數解 , 前提是 xi≤nix_i \leq n_ixi?≤ni? , 每個元素所取的個數 xix_ixi? , 不能超過其重復度 nin_ini? ;
相當于 a1a_1a1? 取 x1x_1x1? 個 , a2a_2a2? 取 x2x_2x2? 個 , ?\cdots? , aka_kak? 取 xkx_kxk? 個 , 總共取 rrr 個 ;
nin_ini? 是無窮個數時 , 多重集的 rrr 組合數是 C(k+r?1,r)C(k + r - 1, r)C(k+r?1,r)
回顧多重集排列組合 :
- 可重復的元素 , 有序的選取 , 對應 多重集的排列 ; 全排列=n!n1!n2!?nk!全排列 = \cfrac{n!}{n_1! n_2! \cdots n_k!}全排列=n1?!n2?!?nk?!n!? , 非全排列 kr,r≤nik^r , \ \ r\leq n_ikr,??r≤ni?
- 可重復的元素 , 無序的選取 , 對應 多重集的組合 ; N=C(k+r?1,r)N= C(k + r - 1, r)N=C(k+r?1,r)
上述的 多重集 rrr 組合數 C(k+r?1,r)C(k + r - 1, r)C(k+r?1,r) 是在重復度不受限制的情況下的選取結果 , 如果重復度受限制 , 就需要使用生成函數進行計算 ;
如添加如下限制 : a1a_1a1? 最多能取 333 個 , a2a_2a2? 最少取 444 個 , 最多取 101010 個 ;
生成函數 :
G(y)=G(y) =G(y)= (1+y+?+yn1)(1 + y + \cdots + y^{n_1})(1+y+?+yn1?) (1+y+?+yn2)(1 + y + \cdots + y^{n_2})(1+y+?+yn2?) ?\cdots? (1+y+?+ynk)(1 + y + \cdots + y^{n_k})(1+y+?+ynk?)
多重集中的每個元素的取值個數作為 yyy 的次冪 , 如 a1a_1a1? 元素的取值個數是 000 到 n1n_1n1? , 則該項對應的 生成函數項是 從 yyy 的 000 次冪 , 到 yyy 的 n1n_1n1? 次冪 相加 ; 構成項 (1+y+?+yn1)(1 + y + \cdots + y^{n_1})(1+y+?+yn1?) ;
將所有元素的上述 生成函數項 乘到一起 , 就構成上述生成函數 ;
按照多項式乘法 , 多重集中取 rrr 個元素 ,
從第一個因式 (1+y+?+yn1)(1 + y + \cdots + y^{n_1})(1+y+?+yn1?) 拿出 yx1y^{x_1}yx1? ,
從第二個因式 (1+y+?+yn2)(1 + y + \cdots + y^{n_2})(1+y+?+yn2?) 拿出 yx2y^{x_2}yx2? ,
?\vdots?
從第 kkk 個因式 (1+y+?+ynk)(1 + y + \cdots + y^{n_k})(1+y+?+ynk?) 拿出 yxky^{x_k}yxk? ,
如果上述乘積 yx1yx2?yxky^{x_1}y^{x_2}\cdots y^{x_k}yx1?yx2??yxk? 的結果 是 yry^{r}yr , 即 yx1yx2?yxk=yry^{x_1}y^{x_2}\cdots y^{x_k} = y^{r}yx1?yx2??yxk?=yr , 相當于指數 x1+x2+?+xk=rx_1 + x_2 + \cdots + x_k = rx1?+x2?+?+xk?=r , 也就是不定方程的非負整數解 ;
二、使用生成函數求解多重集 r 組合數 示例
多重集 S={3?a,4?b,5?c}S = \{3\cdot a , 4 \cdot b , 5 \cdot c \}S={3?a,4?b,5?c} , 求該多重集的 101010 組合數 ;
上述多重集元素的 重復度 3,4,53,4,53,4,5 都不超過 101010 ;
對應 aaa 元素 , 其 重復度取值范圍是 000 ~ 333 , 對應的生成函數項是 y0+y1+y2+y3y^0 +y^1 + y^2 + y^3y0+y1+y2+y3
對應 bbb 元素 , 其 重復度取值范圍是 000 ~ 444 , 對應的生成函數項是 y0+y1+y2+y3+y4y^0 +y^1 + y^2 + y^3 + y^4y0+y1+y2+y3+y4
對應 ccc 元素 , 其重 復度取值范圍是 000 ~ 555 , 對應的生成函數項是 y0+y1+y2+y3+y4+y5y^0 +y^1 + y^2 + y^3 + y^4 + y^5y0+y1+y2+y3+y4+y5
將上述項相乘 , 得到完整的生成函數 ;
G(x)=(y0+y1+y2+y3)(y0+y1+y2+y3+y4)(y0+y1+y2+y3+y4+y5)G(x) = (y^0 +y^1 + y^2 + y^3)(y^0 +y^1 + y^2 + y^3 + y^4)(y^0 +y^1 + y^2 + y^3 + y^4 + y^5)G(x)=(y0+y1+y2+y3)(y0+y1+y2+y3+y4)(y0+y1+y2+y3+y4+y5)
=(1+y1+y2+y3)(1+y1+y2+y3+y4)(1+y1+y2+y3+y4+y5)\ \ \ \ \ \ \ \ \ \ =(1 +y^1 + y^2 + y^3)(1 +y^1 + y^2 + y^3 + y^4)(1 +y^1 + y^2 + y^3 + y^4 + y^5)??????????=(1+y1+y2+y3)(1+y1+y2+y3+y4)(1+y1+y2+y3+y4+y5)
=(1+2y1+3y2+4y3+4y4+3y5+2y6+y7)(1+y1+y2+y3+y4+y5)\ \ \ \ \ \ \ \ \ \ =(1 +2y^1 + 3y^2 + 4y^3 + 4y^4 + 3y^5 + 2y^6 + y^7 )(1 +y^1 + y^2 + y^3 + y^4 + y^5)??????????=(1+2y1+3y2+4y3+4y4+3y5+2y6+y7)(1+y1+y2+y3+y4+y5)
統計上述兩項相乘 , yyy 的次冪值為 101010 的項 :
第一個因式的 3y53y^53y5 與第二個因式的 y5y^5y5 , 相乘為 3y103y^{10}3y10
第一個因式的 2y62y^62y6 與第二個因式的 y4y^4y4 , 相乘為 2y102y^{10}2y10
第一個因式的 y7y^7y7 與第二個因式的 y3y^3y3 , 相乘為 y10y^{10}y10
y10y^{10}y10 項前的系數是 3+2+1=63 + 2+1 = 63+2+1=6
因此上述 多重集的 101010 組合 ,選擇方案有 666 種 ;
總結
以上是生活随笔為你收集整理的【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【组合数学】生成函数 ( 生成函数应用场
- 下一篇: 【组合数学】生成函数 ( 使用生成函数求