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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )

發布時間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、重復有序拆分
  • 二、不重復有序拆分
    • 1、無序拆分基本模型
    • 2、全排列
  • 三、重復有序拆分方案數證明



參考博客 : 按照順序看

  • 【組合數學】生成函數 簡要介紹 ( 生成函數定義 | 牛頓二項式系數 | 常用的生成函數 | 與常數相關 | 與二項式系數相關 | 與多項式系數相關 )
  • 【組合數學】生成函數 ( 線性性質 | 乘積性質 )
  • 【組合數學】生成函數 ( 移位性質 )
  • 【組合數學】生成函數 ( 求和性質 )
  • 【組合數學】生成函數 ( 換元性質 | 求導性質 | 積分性質 )
  • 【組合數學】生成函數 ( 性質總結 | 重要的生成函數 ) ★
  • 【組合數學】生成函數 ( 生成函數示例 | 給定通項公式求生成函數 | 給定生成函數求通項公式 )
  • 【組合數學】生成函數 ( 生成函數應用場景 | 使用生成函數求解遞推方程 )
  • 【組合數學】生成函數 ( 使用生成函數求解多重集 r 組合數 )
  • 【組合數學】生成函數 ( 使用生成函數求解不定方程解個數 )
  • 【組合數學】生成函數 ( 使用生成函數求解不定方程解個數示例 )
  • 【組合數學】生成函數 ( 使用生成函數求解不定方程解個數示例 2 | 擴展到整數解 )
  • 【組合數學】生成函數 ( 正整數拆分 | 無序 | 有序 | 允許重復 | 不允許重復 | 無序不重復拆分 | 無序重復拆分 )
  • 【組合數學】生成函數 ( 正整數拆分 | 無序不重復拆分示例 )
  • 【組合數學】生成函數 ( 正整數拆分 | 正整數拆分基本模型 | 有限制條件的無序拆分 )




一、重復有序拆分



將 正整數 NNN 重復地 , 有序拆分 rrr 部分 , 方案數為 C(N?1,r?1)C(N-1, r-1)C(N?1,r?1)

( 三、中有該組合數由來證明 )



如果對 正整數 NNN任意重復的有序拆分 , 即可以拆分成 111 個數 , 222 個數 , ?\cdots? , NNN 個數 ,

拆分成 111 個數方案個數是 (N?11?1)\dbinom{N-1}{1-1}(1?1N?1?)

拆分成 222 個數方案個數是 (N?12?1)\dbinom{N-1}{2-1}(2?1N?1?)

?\vdots?

拆分成 NNN 個數方案個數是 (N?1N?1)\dbinom{N-1}{N-1}(N?1N?1?)

上述總的方案個數是 : ∑r=1N=2N?1\sum\limits_{r=1}^{N}=2^{N-1}r=1N?=2N?1

( 根據基本組合恒等式計算出來 )





二、不重復有序拆分



先進行 不重復無序拆分 , 再進行 全排列 ;



1、無序拆分基本模型


無序拆分基本模型 :

將 正整數 NNN 無序拆分成正整數 , a1,a2,?,ana_1, a_2, \cdots , a_na1?,a2?,?,an? 是拆分后的 nnn 個數 ,

該拆分是無序的 , 上述拆分的 nnn 個數的個數可能是不一樣的 ,

假設 a1a_1a1?x1x_1x1? , a2a_2a2?x2x_2x2? 個 , ?\cdots? , ana_nan?xnx_nxn? , 那么有如下方程 :

a1x1+a2x2+?+anxn=Na_1x_1 + a_2x_2 + \cdots + a_nx_n = Na1?x1?+a2?x2?+?+an?xn?=N


這種形式可以使用 不定方程非負整數解個數 的生成函數計算 , 是 帶系數 , 帶限制條件的情況 , 參考 : 組合數學】生成函數 ( 使用生成函數求解不定方程解個數 )


無序拆分的情況下 , 拆分后的正整數 , 允許重復 和 不允許重復 , 是兩類組合問題 ;

如果不允許重復 , 那么這些 xix_ixi? 的取值 , 只能 取值 0,10, 10,1 ; 相當于 帶限制條件 , 帶系數不定方程非負整數解 的情況 ;

對應的生成函數是 : G(x)=(1+ya1)(1+ya2)?(1+yan)G(x) = (1+ y^{a_1}) (1+ y^{a_2}) \cdots (1+ y^{a_n})G(x)=(1+ya1?)(1+ya2?)?(1+yan?)重點看這里



如果 允許重復 , 那么這些 xix_ixi? 的取值 , 就是 自然數 ; 相當于 帶系數不定方程非負整數解 的情況 ;

對應的生成函數是 : G(x)=(1+ya1+y2a1?)(1+ya2+y2a2?)?(1+yan+y2an?)G(x) = (1+ y^{a_1}+ y^{2a_1}\cdots) (1+ y^{a_2} + y^{2a_2}\cdots) \cdots (1+ y^{a_n}+ y^{2a_n}\cdots )G(x)=(1+ya1?+y2a1??)(1+ya2?+y2a2??)?(1+yan?+y2an??)

G(x)=1(1?ya1)(1?ya2)?(1?yan)G(x) =\cfrac{1}{ (1-y^{a_1}) (1-y^{a_2}) \cdots (1-y^{a_n}) }G(x)=(1?ya1?)(1?ya2?)?(1?yan?)1?



2、全排列


nnn 的全排列是 n!n!n!



nnn 元集 SSS , SSS 集合中選取 rrr 個元素 ;

根據 元素是否允許重復 , 選取過程是否有序 , 將選取問題分為四個子類型 :

元素不重復元素可以重復
有序選取集合排列 P(n,r)P(n,r)P(n,r)多重集排列
無序選取集合組合 C(n,r)C(n,r)C(n,r)多重集組合

選取問題中 :

  • 不可重復的元素 , 有序的選取 , 對應 集合的排列 ; P(n,r)=n!(n?r)!P(n,r) = \dfrac{n!}{(n-r)!}P(n,r)=(n?r)!n!?
  • 不可重復的元素 , 無序的選取 , 對應 集合的組合 ; C(n,r)=P(n,r)r!=n!r!(n?r)!C(n,r) = \dfrac{P(n,r)}{r!} = \dfrac{n!}{r!(n-r)!}C(n,r)=r!P(n,r)?=r!(n?r)!n!?
  • 可重復的元素 , 有序的選取 , 對應 多重集的排列 ; 全排列=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)




三、重復有序拆分方案數證明



使用一一對應的方法證明 : 將 正整數 NNN 重復地 , 有序拆分 rrr 部分 , 方案數為 C(N?1,r?1)C(N-1, r-1)C(N?1,r?1)


拆分后的正整數 , 如果交換了次序之后 , 排列不同 , 其所代表的方案數也不同 ;

將該拆分轉換成組合計數問題 ;

假設 N=a1+a2+?+arN=a_1 + a_2 + \cdots + a_rN=a1?+a2?+?+ar? 是滿足條件的拆分 , 該拆分 重復 , 有序 ;

將上述方案 , 做成部分序列 ,


拆分方案 與 拆分序列 :


根據拆分方案寫出拆分序列 :

原始方案 6=1+2+36=1+2+36=1+2+3 , 由原始方案作部分序列 ,

第一個序列 S1=1S_1 = 1S1?=1 , 取原始方案的第一個成分 111 出來 ,

第二個序列 S2=1+2=3S_2 = 1 + 2 = 3S2?=1+2=3 , 取原始方案的前兩個成分 1+21 + 21+2 出來 ,

第三個序列 S3=1+2+3=6S_3 = 1 + 2 + 3 = 6S3?=1+2+3=6 , 取原始方案的前三個成分 1+2+31 + 2 + 31+2+3 出來 ,

第一個序列是第一個數 , 第二個序列是前兩個數 , 第 nnn 個序列是前 nnn 個數 , 最后一個序列包含了所有的拆分的正整數 ;

只要給定一個原始方案 , 就可以作出上述部分序列出來 ;


只要方案相同 , 作出的序列完全相同 , 方案不同 , 作出的序列肯定不相同 ;


根據拆分序列寫出拆分方案 :

反之 , 給定一個序列 , 可以 還原出一個拆分方案來 , 如給出序列 S1=1,S2=3,S3=6S_1 = 1 , S_2=3, S_3=6S1?=1,S2?=3,S3?=6 , 對應的拆分方案 :

最后一個序列式所有數之和 , 被拆分的正整數就是最后一個序列的數值 666

第一個正整數 就是第一個序列 111

第二個正整數 是第二序列減去第一序列 S2?S1=3?1=2S_2 - S_1 = 3-1=2S2??S1?=3?1=2

第三個正整數 是第三序列減去第二序列 S3?S2=6?3=3S_3-S_2=6-3=3S3??S2?=6?3=3

拆分方案是 6=1+2+36 = 1+2+36=1+2+3



N=a1+a2+?+arN=a_1 + a_2 + \cdots + a_rN=a1?+a2?+?+ar? 的拆分序列是

S1=a1S_1 = a_1S1?=a1?

S2=a1+a2S_2= a_1 + a_2S2?=a1?+a2?

S3=a1+a2+a3S_3= a_1 + a_2 + a_3S3?=a1?+a2?+a3?

?\vdots?

Si=a1+a2+a3+?+ai=∑k=1tai,i=1,2,3,?S_i= a_1 + a_2 + a_3 + \cdots + a_i = \sum\limits_{k=1}^ta_i\ , \ \ \ \ \ i=1,2,3, \cdotsSi?=a1?+a2?+a3?+?+ai?=k=1t?ai??,?????i=1,2,3,?

上述的拆分序列一定有下面的性質 :

0<S1<S2<?<Sr=N0 < S_1 < S_2 < \cdots < S_r = N0<S1?<S2?<?<Sr?=N

因為 S2S_2S2? 肯定是 S1S_1S1? 加上一個正整數 , SrS_rSr? 肯定是 Sr?1S_{r-1}Sr?1? 加上一個正整數 , 最后一項是所有的 rrr 個正整數之和 , 是被拆分的正整數 NNN ;



上述拆分序列 S1,S2,?,SrS_1, S_2, \cdots , S_rS1?,S2?,?,Sr? , 最后一個數 Sr=NS_r = NSr?=N ,

最后一個數不管 , 前面的 r?1r-1r?1 個數的取值范圍是 1,2,3,?,N?11, 2, 3, \cdots , N-11,2,3,?,N?1 , 上述取值范圍內 n?1n-1n?1 個正整數 ;


n?1n-1n?1 個正整數中 , 選取 r?1r-1r?1 個正整數 ,


因此, 將 正整數 NNN 重復地 , 有序拆分 rrr 部分 , 方案數為 C(N?1,r?1)C(N-1, r-1)C(N?1,r?1)

總結

以上是生活随笔為你收集整理的【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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