日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )

發布時間:2025/6/17 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【组合数学】生成函数 ( 使用生成函数求解多重集 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,??rni?
  • 可重復的元素 , 無序的選取 , 對應 多重集的組合 ; 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? 元素的取值個數是 000n1n_1n1? , 則該項對應的 生成函數項是 yyy000 次冪 , yyyn1n_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 组合数 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。