现在的位置: 首页 > 综合 > 正文

组合数学之排列组合(Permutations and Combinations)(四种情况)

2013年04月15日 ⁄ 综合 ⁄ 共 988字 ⁄ 字号 评论关闭

加减乘除四个原理不再赘述。(即使小学生都会的原理也能出些大学生不会的题目)

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:简单总结了一下四种排列组合问题,要学好排列组合需要大量的练习,以上没有给出证明,只是用来做个总结回顾,需要的自己参考一下相关书籍。打字不容易,自学数学伤不起啊。

 

 

 

抱歉!评论已关闭.