ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

组合数学

2022-05-04 17:00:51  阅读:306  来源: 互联网

标签:方案 排列 组合 排法 元素 数学 共有 2n


一、原理

1.加法原理(分类计数原理)

如果完成一件事有n类方法,第一类方法有m1种方案,第二类方法有m2种方案......

那么完成这件事有(m1+m2+m3+...+mn)种方案

2.乘法原理(分步计数原理)

如果完成一件事有n步,第一步有m1种方案,第二步方法有m2种方案......

那么完成这件事有(m1*m2*m3*...*mn)种方案

二、排列与组合

1.排列

(1)定义:从n个不同的元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列

(2)表示方法:从n个数中取出m个数进行排列的方案数用符号A(n,m)表示

(3)公式:A(n,m) = n*(n-1)*(n-2)*...*(n-m+1) = n!/(n-m)! 

2.组合

(1)定义:从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数

(2)表示方法:从n个数中取出m个数的方案数用符号C(n,m)表示

(3)公式:C(n,m) = A(n,m)/A(m,m) = n!/(m!(n-m)!)

3.策略

(1)特殊元素和特殊位置优先策略

例:由0,1,2,3,4,5可以组成多少个没有重复数字的五位奇数?

由于末位和首位有特殊要求,应该优先安排,以免不合要求的元素占了这两个位置。

先排末位共有C(3,1),然后排首位共有C(4,1),最后排其它位置共有A(4,3)。

由乘法原理得ans = C(3,1)*C(4,1)*A(4,3)

(2)相邻元素捆绑策略0

例:7人站成一排 ,其中甲乙相邻且丙丁相邻, 共有多少种不同的排法?

先将甲乙两元素捆绑成整体并看成一个复合元素,同时丙丁也看成一个复合元素,再与其它元素进行排列,同时对相邻元素内部进行自排。

由乘法原理可得共有A(5,5)*A(2,2)*A(2,2)种不同的排法。

(3)不相邻问题插空策略

例:一个晚会的节目有4个舞蹈,2个相声,3个独唱,舞蹈节目不能连续出场,则节目的出场顺序有多少种? 

分两步进行:

第一步,排列2个相声和3个独唱,共有A(5,5)种方案。

第二步,将四种舞蹈插入第一步排好的5个元素中间包含首尾两个空位A(6,4)共有种不同的方法。

节目的不同顺序共有A(5,5)*A(6,4)种。

提示:不相邻问题通常用插空法:把要求不相邻的元素放在一边,先排其他元素,再将不相邻的元素插在已经排好的元素之间的空位上。

(4)定序问题倍缩空位插入策略

例:7人排队,其中甲乙丙3人顺序一定,共有多少不同的排法?

(倍缩法)对于某几个元素顺序一定的排列问题,可先把这几个元素与其他元素一起进行排列,然后用总排列数除以这几个元素之间的全排列数,则共有不同排法种数是A(7,7)/A(3,3)。

(5)排列问题求幂策略

例:把6名实习生分配到7个车间实习,共有多少种不同的分法?

完成此事共分六步:把第一名实习生分配到车间有7种分法,把第二名实习生分配到车间也有7种分法。

依此类推,由乘法原理共有7^6种不同的排法。

(6)环排问题线排策略

例:8人围桌而坐,共有多少种坐法? 

围桌而坐与坐成一排的不同点在于,坐成圆形没有首尾之分,所以固定一人,并从此位置把圆形展成直线其余7人共有(8-1)!=7!种排法

一般地,n个不同元素作圆形排列,共有(n-1)!种排法

如果从n个不同元素中取出m个元素作圆形排列,共有A(n,m)/m种排法

(7)多排问题直排策略

例:8人排成前后两排,每排4人,其中甲乙在前排,丙在后排,共有多少排法?

8人排前后两排,相当于8人坐8把椅子,可以把椅子排成一排。

前排有2个特殊元素,方案数为A(4,2),

后排有1个特殊元素,方案数为A(4,1),

其余的5人在5个位置上任意排列,方案数为A(5,5)。

共有A(4,2)*A(4,1)*A(5,5)种方案。

(8)排列组合混合问题先选后排策略

例:有5个不同的小球,装入4个不同的盒内,每盒至少装一个球,求共有多少不同的装法?

第一步:从5个球中选出2个组成复合元共有C(5,2)种方法,

第二步:再把4个元素(包含一个复合元素)装入4个不同的盒内有A(4,4)种方法。

根据乘法原理装球的方法共有C(5,2)*A(4,4)。

(9)平均分组问题除法策略

例:6本不同的书平均分成3堆,每堆2本共有多少分法?

分三步取书得C(6,2)*C(4,2)*C(2,2)种方法,但这里出现重复计数的现象

每种方案计算了A(3,3)次,故最终答案为C(6,2)*C(4,2)*C(2,2)/A(3,3)。

(9)重排列

例:由四面红旗,三面蓝旗,二面黄旗,五面绿旗排成的一排彩旗有多少种?

将14面彩旗排成一个排列,方案数A(14,14),

其中红旗之间每种排列等价,方案数A(4,4)。

ans = A(14,14)/(A(4,4)*A(3,3)*A(2,2)*A(5,5))

4.常用结论

(1)将一个长度为n的序列划分成m段非空子串的方案数为C(n-1,m-1)

相当于在n-1个空位中选择m-1个插入隔板的方案数

(2)将一个长度为n的序列划分成m段可空子串的方案数为C(n+m-1,m-1)

相当于在m+n-1个空位中选择m-1个插入隔板的方案数

例题:BZOJ 2729 [HNOI2012]排队

三、容斥原理

1.单步容斥

有的时候合法的方案数不好求,我们可以用方案全集减掉不合法的方案数,就是答案。

(单步容斥一般结合DP等使用,隐藏较深,形式通常也比较难看出)

例题:NOI2010 能量采集

2.多步容斥

有时候剪掉不合法方案的时候会顺便减掉一些合法方案;将这些合法方案加回去,又会加回去一些不合法方案;反反复复,就是多步容斥。

(多步容斥的形式一般比较好看出,有时候会在每一项后面乘一个组合数,多注意式子)

比如说这个式子:

例题:BZOJ 1042 HAOI2008 硬币购物

四、卡特兰数

1.定义

在二维平面上从点(0,0)走到点(n,n),每次可以向右走1单位或向上走1单位,求方案数。

相当于用n个右和n个上组成一个长度为2n的序列,方案数C(2n,n)

在二维平面上从点(0,0)走到点(n,n),每次可以向右走1单位或向上走1单位,要求不能跨越直线y=x,求方案数

如果某个方案跨越了直线y=x那么他一定触碰了直线y=x+1

那么我们将这条路径从起点到第一次触碰的点为止的部分都沿直线y=x+1翻转,就等价映射到了一条从(-1,1)走到(n,n)的路径。

那么不合法的方案数就等于从点(-1,1)走到(n,n)的方案数,即C(2n,n-1)

答案就是C(2n,n) - C(2n,n-1),这个数列被称为卡特兰数。

2.公式

h(n) = C(2n,n)-C(2n,n-1)

   = C(2n,n)/(n+1)

   = h(n-1)*(4*n-2)/(n+1)

   = h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)*h(0)

(前几项分别为1,1,2,5,14,42,...)

3.应用

(1)出栈次序:一个栈的进栈序列是1,2,3,4...,n,求有多少个不同的出栈序列?

(2)三角剖分问题:一个正n+2边形,连接n-1条不相交的对角线的方案数。

(3)n个节点没有标号的二叉树一共有多少种?

答案都是h(n)

类似的结论实在太多了,很难一一记住,建议熟记卡特兰数列的前几项,当遇到题目卡住的时候不妨打个表看看前几项,如果吻合说明是卡特兰数列

标签:方案,排列,组合,排法,元素,数学,共有,2n
来源: https://www.cnblogs.com/Kamisato-Ayaka/p/16221553.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有