組合數學之排列組合(Permutations and Combinations)(四種情況)


加減乘除四個原理不再贅述。(即使小學生都會的原理也能出些大學生不會的題目)

1集合的排列(Pertutations of Sets)(無重有序)(無重復有序)

設r為正整數,把n個元素的集合S的一個r排列理解為n個元素中r個元素的有序擺放。其數目用P(n,r)表示

對正整數n和r,r<=n,有P(n,r) = n(n-1)(n-2)......(n-r+1) = n! / (n-r)!  (乘法原理證明)

若r>n,P(n,r)=0.並且有P(n,1)=n, P(n,n) = n!,定義P(n,0) = 1.

(在c++STL中,<algorithm>中有按照字典序產生排列的算法next_permutation和prev_permutation,函數返回bool值)

定理:n個元素的循環r排列(圍成一個環)的個數是P(n,r)/r, 即n!/ (r(n-r)!), r= n時有(n-1)!

例如6個人圍成環(固定一人)的方法有5!種。

2集合的組合(Combinations of Sets)(無重無序)

設r非負整數,理解為n中r個元素的無序選擇。其數目記為C(n,r)

C(n,r) = P(n,r) / r!   = n! / (r!(n-r)!)        性質:C(n,r)=C(n,n-r)

定理:C(n,0) + C(n,1) + C(n,2) + ...... + C(n,n) = 2^n

3多重集的排列(Permutations of Multisets)(有重有序)(有重只多重集的結合元素是有重復的)

例如S={2.a, 1.b, 3.c}表示2個a,1個b,3個c。

定理1:令S是一個多重集,它有k個不同類型的元素,每一個元素都有無限個,那么S的r排列個數為k^r

定理2:令S是一個多重集,它有k個不同類型的元素,各元素重數分別是n1, n2, n3, ... ,nk。設S的大小n=n1+n2+...+nk,

則S的排列數為n! / (n1!n2!...nk!)

4多重集的集合(Combinations of Multisets)(有重無序)

定理:令S是一個多重集,它有k個不同類型的元素,每一個元素都有無限個,那么S的r排列個數為C(r+k-1,r)

元素有限個時需要用到容斥原理解決。

 

ps:簡單總結了一下四種排列組合問題,要學好排列組合需要大量的練習,以上沒有給出證明,只是用來做個總結回顧,需要的自己參考一下相關書籍。打字不容易,自學數學傷不起啊。

 

 

 


免責聲明!

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



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