文章目录

  • 一.排列
  • 二.组合
  • 三.重要定理及思想

一.排列

1.概念:从n个不同的元素中,取出m个排成一列,称为n个元素中取出m个元素的一个排列(permutation)

2.排列数:从n个不同元素中取出m个元素的排列方案数。符号记为AnmA^m_nAnm​。

计算公式:Anm=n⋅(n−1)⋅(n−2)⋅⋅⋅(n−m+1)A^m_n=n\cdot(n-1)\cdot(n-2)\cdot\cdot\cdot(n-m+1)Anm​=n⋅(n−1)⋅(n−2)⋅⋅⋅(n−m+1)

理解:从n个元素中取出m个进行排列,第一个元素有n种选择,第二个元素有n-1种选择……最后一个元素有n-m+1种选择

特殊地:当m>n时,排列数为0,当m=n时,又称全排列,排列数为n!

排列数的另一个计算公式:Anm=n!(n−m)!A^m_n=\frac{n!}{(n-m)!}Anm​=(n−m)!n!​

理解:
①可以直接由前面的式子数学推导而来

②先将n个元素进行全排列得到n!n!n!,然后取前m个元素的排列方案,每种方案都会重复(n−m)!(n-m)!(n−m)!次(后n-m个元素的全排列),所以要除以(n−m)!(n-m)!(n−m)!

3.圆排列

从n个元素中取m个元素圆排列的个数为Anmm=n!m⋅(n−m)!\frac{A_n^m}{m}=\frac{n!}{m\cdot(n-m)!}mAnm​​=m⋅(n−m)!n!​

相当于每种排列方案都被重复计算了m次

比如m=3,则{1 2 3},{3 1 2} ,{2 3 1}都是同一种圆排列,但在算排列数时被计算了3次

4.多重集的排列

多重集:允许元素重复的特殊集合

如果每个元素可以取多次甚至无限次,从中取m个排列的方案数我们可以用生成函数(母函数)来计算

指数型母函数解多重集排列问题

5.错排问题

问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
这个问题推广一下,就是错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。

记n个元素的错排方案数为D(n)

随机取第k个元素,我们可以将其放置到除了k位置以外的其它任意位置,即n-1种选择

假设我们选择将第k个元素放置到m位置,则第m个元素位置被占了,要放到其它位置上,我们面临两种选择:

①将m元素放置到k位置上,即将m和k互换了位置,这两个元素错排完成,那现在场上还有n-2个元素没有排,即D(n-2)

②不把m元素放置到k位置上,那现在的情况就是m不能放在k位置上,我们不考虑已经放好的k元素,然后将k位置当作m的位置(因为m不能选k位置),是不是就是n-1个元素的错排呢?即D(n-1)。

综上,得递推公式D(n)=(n-1) [D(n-1)+D(n-2)]

该式经过一系列推导可得:

D(n)=n!⋅[(−1)00!+(−1)11!+(−1)22!+…+(−1)n−1(n−1)!+(−1)nn!]D(n) = n! \cdot [\frac{(-1)^0}{0!}+\frac{(-1)^1}{1!}+\frac{(-1)^2}{2!} + … + \frac{(-1)^{n-1}}{{(n-1)!}} +\frac{ (-1)^n}{n!}]D(n)=n!⋅[0!(−1)0​+1!(−1)1​+2!(−1)2​+…+(n−1)!(−1)n−1​+n!(−1)n​]

(也可以用容斥原理的思想直接推导,详情见百度百科)

由泰勒展开ex=1+x+x22!+x33!+⋅⋅⋅+xkk!+⋅⋅⋅e^x=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\cdot\cdot\cdot+\frac{x^k}{k!}+\cdot\cdot\cdotex=1+x+2!x2​+3!x3​+⋅⋅⋅+k!xk​+⋅⋅⋅

得D(n)=[n!⋅e−1+0.5)][n!\cdot e^{-1}+0.5)][n!⋅e−1+0.5)] 用[]表示向下取整,这么写是为了避免泰勒展开余项(余项值小于1/2)的0影响

二.组合

1 概念: 从n个不同的元素中,取出m个作为一组(不考虑顺序),称为从n个元素中取出m个的一个组合

2.组合数: 从n个不同元素中取出m个元素的组合方案数,符号记为CnmC_n^mCnm​

计算公式:Cnm=Anmm!=n!(n−m)!⋅m!=n⋅(n−1)⋅(n−2)⋅⋅⋅(n−m+1)1⋅2⋅3⋅⋅⋅mC_n^m=\frac{A_n^m}{m!}=\frac{n!}{(n-m)! \cdot m!} = \frac{n\cdot(n-1)\cdot(n-2)\cdot\cdot\cdot(n-m+1)}{1\cdot2\cdot3\cdot\cdot\cdot m}Cnm​=m!Anm​​=(n−m)!⋅m!n!​=1⋅2⋅3⋅⋅⋅mn⋅(n−1)⋅(n−2)⋅⋅⋅(n−m+1)​

理解:从n个元素中取出m个元素的排列数为AnmA_n^mAnm​,取出的m个元素排列方案数为m!,而组合是不考虑元素的排列顺序的,所以相当于每种组合方案被算了m!次。

3.多重集的组合

普通型母函数解多重集组合问题详解

4.常用公式
①Cnm=Cnn−mC_n^m=C_n^{n-m}Cnm​=Cnn−m​ (当m较大时计算Cnn−mC_n^{n-m}Cnn−m​)

②Cnm=Cn−1m+Cn−1m−1C_n^m=C_{n-1}^m+C_{n-1}^{m-1}Cnm​=Cn−1m​+Cn−1m−1​(杨辉三角形,一数等于其肩上两数之和)

③Cnm=n−m+1mCnm−1C_n^m=\frac{n-m+1}{m}C_n^{m-1}Cnm​=mn−m+1​Cnm−1​(分子分母各抽出一项)
作用:递推求组合数

5.求组合数方法
n,m很小时,直接求都行。
n,m很大时,一般会对p取模(因为组合数太大了),且题目中p一般为素数(合数作取模运算容易被找出规律)

对p取模时:

1)n,m很小时可以用杨辉三角形递推求(即上式②)

2)预处理模p后的阶乘,然后用乘法逆元求亦可

3)n,m很大很大时,p很小可以用卢卡斯定理求(见卢卡斯定理)

如果m不大的话,用上式③也可以

三.重要定理及思想

1.计数基本原理

计数最基本的两个原理:加法原理和乘法原理

①加法原理:

做一件事情有n个办法,每个办法有pip_ipi​个方案实现,则共有p1+p2+p3+⋅⋅⋅+pnp_1+p_2+p_3+\cdot\cdot\cdot +p_np1​+p2​+p3​+⋅⋅⋅+pn​种方案

应用加法原理的关键是分类,每个类别间应该不重不漏,若有重复,可以使用容斥原理。

②容斥原理:

在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复。

例:班里有15个人喜欢数学,20个人喜欢语文,7个人既喜欢数学又喜欢语文,则班级的总人数应为:15+20-7=28.

若将喜欢数学的人记作集合A,喜欢语文的人记作集合B,总班级总人数∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A∪B|=|A|+|B|-|A∩B|∣A∪B∣=∣A∣+∣B∣−∣A∩B∣

当计数的事物有A、B、C三类时,则三类事物的总个数应该为∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣|A∪B∪C|=|A|+|B|+|C|-|A∩B|-|B∩C|-|A∩C|+|A∩B∩C|∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣

以此类推:当计数的事物有N类时,含奇数个集合的交集取正、含偶数个交集的集合取负,求和即得总数

③乘法原理:

做一件事情有n个步骤,每个步骤有pip_ipi​个方案实现,则共有p1⋅p2⋅p3⋅⋅⋅pnp_1\cdot p_2\cdot p_3\cdot\cdot\cdot p_np1​⋅p2​⋅p3​⋅⋅⋅pn​种方案

2.鸽巢原理: 又称抽屉原理,即:

桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放不少于两个苹果。

应用:是组合数学中很重要的思想,但一般体现在思考的过程中。可以参考这两题:鸽巢原理

3.隔板法

n本相同的书放在k个不同的书架上
(n个相同的小球放在k个不同的盒子里)

①插入k-1个隔板

②将这k-1个隔板和书视为一样的元素,进行全排列,得到方案数(n+k−1)!(n+k-1)!(n+k−1)!

③因为隔板,书都是相同的,所以方案数要除以(k−1)!(k-1)!(k−1)!和n!n!n!

④即算得方案数(n+k−1)!(k−1)!⋅n!=Cn+k−1n=Cn+k−1k−1\frac{(n+k-1)!}{(k-1)!\cdot n!}=C_{n+k-1}^n=C_{n+k-1}^{k-1}(k−1)!⋅n!(n+k−1)!​=Cn+k−1n​=Cn+k−1k−1​

更多相关知识可以参考这篇文章:隔板法

4.卢卡斯定理

详情见卢卡斯定理,模板加证明都有

【组合数学】知识点汇总相关推荐

  1. 原生 遍历_细品原生JS从初级到高级知识点汇总(三)

    作者:火狼1 转发链接:https://juejin.im/post/5daeefc8e51d4524f007fb15 目录 细品原生JS从初级到高级知识点汇总(一) 细品原生JS从初级到高级知识点汇 ...

  2. mysql 事物状态有几种_MySQL知识点汇总:亿级高并发数据库运转原理大公开!

    - 点击上方"中国统计网"订阅我吧!- 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对 ...

  3. java基础知识大全,java 基础知识点汇总

    java 基础知识点汇总 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个Strin ...

  4. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...

    1.1 闭包 1.闭包概念 1. 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用,这样就构成了一个闭包 2. 一般情况下,在我们认知当中,如果一个函数 ...

  5. list python 访问 键值对_基础|Python常用知识点汇总(中)

    字符串字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.1.创建字符串 str1 = 'Hello World!' str2 = "Hello W ...

  6. javaSE知识点汇总

    javaSE知识点汇总 Java基础知识精华部分   写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实 ...

  7. php知识点汇总与解答_PHP操作员能力倾向问题与解答

    php知识点汇总与解答 This section contains Aptitude Questions and Answers on PHP Operators. 本节包含有关PHP运算符的 Apt ...

  8. ES6知识点汇总(全)

    ES6知识点汇总(全) 近期在整理ES6相关开发文档,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总. 一.问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的 ...

  9. 计算机知识点汇总职高,计算机辅导(知识点汇总) - 慈溪职高 网站首页.doc

    计算机辅导(知识点汇总) - 慈溪职高 网站首页 知识点汇总 第一章 计算机基础知识(单选15分) 第一台计算机:1946年ENIAC,采用电子管 划分计算机时代的标准:构成元件 第一代(1946-1 ...

  10. 前端面试高频考点,ES6知识点汇总!!!

    前端面试高频考点,ES6知识点汇总!!! ⛳️大家好,我是王同学,今天给大家分享的是ES6面试的高频考点,文章没有一点套路,只有满满的干货 ⛳️如果对你有帮助就给我点个赞吧,这样我们就互不相欠了 ⛳️ ...

最新文章

  1. HDU 3555 Bomb (数位DP-记忆化搜索模板)
  2. service和thread的区别,何时用service,何时用thread?
  3. easypoi list中的map导出_Java中的集合类(List,Set.Map)
  4. HDU4279(2012年天津网络赛---数论分析题)
  5. springboot配置https访问
  6. 回车 触发 提交事件
  7. Tell me why -- Declan Galbraith
  8. dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合
  9. 从零开始学习音视频编程技术(41) H.264播放器
  10. 微信公众号自动回复如何添加超链接
  11. html显示tif图片,呈现HTML中的TIF文件
  12. uniapp安卓创建桌面快捷方式
  13. Openbravo ERP 3.0安装指南
  14. Kotlin-Android世界的一股清流-委托
  15. 用2553单片机实现按键倒计时响铃,用TM1637显示倒计时时间
  16. okio 原理分析(一)
  17. 惠普android开发,惠普官方宣布不再采用Android:将开发PalmPad
  18. C#winform画图简易制作
  19. vant 框架使用方式H5
  20. cs224w(图机器学习)2021冬季课程学习笔记2: Traditional Methods for ML on Graphs

热门文章

  1. WIN7的IE11中安装activex控件
  2. 计算机辅助设计与制造实习周记,计算机辅助设计与制造专业毕业实习周记范文原创全套.pdf...
  3. mysql数据库中eof_数据库eof
  4. 初学C语言 输出图形
  5. android中jni的调用过程,Android中JNI的调用生成头文件步骤
  6. 推荐下载使用:COMODO Internet Security V5.0.157302.1066 多国语言版(含:简体中文)
  7. 有关NotifyIcon的使用
  8. 串口通讯 电脑和dsp_Sci 使用DSP2812的SCIA模块和PC机进行串口通信,用FIFO功能实现数据的发送和接受。 DSP program 261万源代码下载- www.pudn.com...
  9. 软件体系结构期末复习资料
  10. 【C++沉思录】代理类