目录

排列组合

\[{n \choose m} = \frac{n!}{(n-m)!m!}
\]
\[A_n^m=\frac{n!}{(n-m)!}
\]
\[C_n^m=\frac{A_n^m}{A_m^m}=\frac{n!}{(n-m)!m!}
\]

恒等式

(1) \(C_n^m=C_n^{n-m}\)

从\(n\)个元素选择\(m\)个,等价于\(n\)个元素中不选\(n-m\)个。

(2) \(A_n^m+mA_n^{m-1}=A_{n+1}^m\)

在\(n+1\)个元素中选择\(m\)个元素排成一排,等价于考虑第\(n+1\)个元素:

  1. 不在该排列中:\(A_n^m\)
  2. 存在该排列中:\(mA_n^{m-1}\),\(m\)表示该元素有\(m\)种放置位置。

(3) \(C_n^{m-1}+C_n^{m}=C_{n+1}^m \ or \ C_{n-1}^{m-1}+C_{n-1}^m=C_n^m\)

在\(n+1\)个元素中选出\(m\)个元素,等价于考虑第\(n+1\)个元素:

  1. 不在该组合中:\(C_n^m\)
  2. 存在该组合中:\(C_n^{m-1}\)

(3*) \(\sum_{i=m}^nC_i^m=C_m^m+C_{m+1}^m+C_{m+2}^m+\cdots+C_{n-1}^m+C_n^m=C_{n+1}^{m+1}\)

可由式\((3)\)推导而出。

\(C_{m+1}^{m+1}=1=C_{m}^{m}\)

\(C_{m}^{m}+C_{m+1}^{m}=C_{m+1}^{m+1}+C_{m+1}^m=C_{m+2}^{m+1}\)

\(C_{m+2}^{m+1}+C_{m+2}^m=C_{m+3}^{m+1}\)

\(\cdots\)

\(C_{n}^{m+1}+C_n^m=C_{n+1}^{m+1}\)

得证。

事实上式\((3)\)可以认为是在杨辉三角上的递推。所以该式也可以由杨辉三角进行理解(如图)。

事实上很多恒等式都可以直接利用杨辉三角进行(眼睛上的)理解推导()

(4) \(C_n^{m-1}+2C_n^m+C_n^{m+1}=C_{n+2}^{m+1}\)

从\(n+2\)个元素中选出\(m+1\)个元素,考虑第\(n+1\)个元素和第\(n+2\)个元素:

  1. 两元素都不在该组合中:\(C_n^{m+1}\)
  2. 两元素都在该组合中:\(C_n^{m-1}\)
  3. 两元素有一个在该组合中:\(2C_n^m\)

(5) \(C_a^b \times C_b^c=C_a^c \times C_{a-c}^{b-c}=C_a^c \times C_{a-c}^{a-b}\)

考虑在集合\(A'\),\(|A'|=a\)中,求构造集合\(C' \subseteq B' \subseteq A'\),\(|C'|=c,|B'|=b\)的方案数。

  1. 先从\(A'\)中\(a\)个元素中取出\(b\)个元素放入\(B'\),再从\(B'\)中取出\(c\)个元素放入\(C'\):\(C_a^b \times C_b^c\)
  2. 先从\(A'\)中\(a\)个元素中取出\(c\)个元素放入\(C'\)(当然同时也放进了\(B '\)),再从剩下的\(a-c\)个元素中取出\(b-c\)个元素放入\(\complement_{B'}C'\)中:\(C_a^c \times C_{a-c}^{b-c}\)

(6) \(\sum_{i=0}^{a}C_n^iC_m^{a-i}=C_n^0C_m^a+C_n^1C_m^{a-1}+\cdots+C_n^{a-1}C_m^1+C_n^aC_m^0=C_{n+m}^a\)

在\(n+m\)个元素中选出\(a\)个元素:

  • 前\(n\)个元素中选择了\(i\)个元素,后\(m\)个元素中选择了\(a-i\)个元素:\(C_n^iC_m^{a-i}\)

特别地,当\(m=n\)时:

\(\sum_{i=0}^aC_n^iC_n^{a-i}=C_{2n}^a\)

又根据\(C_n^i=C_n^{n-i}\),当\(a=n\)时:

\(\sum_{i=0}^n(C_n^i)^2=C_{2n}^n\)

多重集合(全)排列数

设可重集\(S=\{n_1 \cdot a_1,\cdots,n_k \cdot a_k \}\)

\(S\)的全排列数为:

$$\frac{n!}{n_1! \cdots n_k!}$$

将\(m\)个相同物品放入\(n\)个相同盒子 || 将正整数\(m\)划分成\(n\)个正整数的和

1.当作容量为\(n\),物品大小为\(1 \dots m\)的完全背包。

2.设\(f_{i,j}\)表示将正整数\(i\)划分为\(j\)个正整数之和的方案数:\(f_{i,j}=f_{i-1,j-1}+f_{i,j-i}\)

Catalan数

一些等价的Catalan数相关问题例:

  1. 入栈序列为\(1 \dots n\)的出栈序列种数;
  2. (基本模型)将\(n\)个\(0\)和\(n\)个\(1\)排成任意前缀\(0\)的个数不少于\(1\)的个数的序列数量;
  3. \(n\)个左括号和\(n\)个右括号组成的合法括号序列个数;
  4. \(n\)个节点构成的不同二叉树数量;
  5. 平面直角坐标系中从原点\((0,0)\)出发到\((2n,0)\),每一步可以向正右上或正右下移动,并且路径不经过第四象限的方案数
  6. \(\dots\)

使用例\((3)\)来说明,对\(n\)个节点构成二叉树数量的一种\((0)\)的理解:入栈后继续入栈为左儿子,直接出栈为没有左儿子;出栈后入栈为右儿子,直接出栈为没有右儿子。

其实这个问题的原本理解是:已知先序遍历,求构造中序遍历的方案数。

当然也可以理解为一个递推:设\(Cat_i\)表示\(i\)个节点构成二叉树的数量,那么有\(Cat_i=\sum_{j=0}^i Cat_j \times Cat_{i-j}\)

现在用例\((4)\)来说明:

平面直角坐标系中从原点\((0,0)\)出发到\((2n,0)\),每一步可以向正右上或正右下移动,并且路径不经过第四象限的方案数

也即有\(n\)个向右上的操作,\(n\)个向右下的操作。

可以考虑用所有的方案(\(C_{2n}^n\))减去不合法的(经过第四象限的方案)

每个不合法的方案必定经过直线\(y=-1\)。将这样每个方案第一个与该直线相交的点之后的整段路径,会得到唯一对应的一条终点为\((2n,-2)\)的路径。

也就是从\((0,0)\)到\((2n,-2)\)的每一条路径都对应了一条原问题不合法的路径。

所以答案即\(Cat_n=C_{2n}^n-C_{2n}^{n-1}\)

zzx:另外还有\(Cat_n=\frac{C^{n}_{2n}}{n+1}\)

【Note】(坑)一些组合恒等式的实际意义理解(和待填坑的组合数学知识)的更多相关文章

  1. F2eTest和uirecorder自动化测试环境部署填坑记录

    坑1:尝试部署的时候只在opennode.bat里面填写了两个浏览器,测试通过后再增加其他浏览器,页面上一直不显示. 填坑:需要清空数据库里的`wd_browsers`和`wd_nodes`表,然后重 ...

  2. Mybatis-Plus的填坑之路 - Lynwood/wunian7yulian

    目录 Mybatis-Plus 我来填坑~ 目录 一.简单介绍 官方说明 : 成绩: 最新版本: 开发层面MyBatis-Plus特色 Mybatis-Plus中的Plus 二.MP的特性 三.MP框 ...

  3. hdu1799-循环多少次?-(组合恒等式)

    循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. python练习笔记——组合恒等式

    排列组合结合恒等式 已知从n个物品中取出m个,则存在一个组合恒等式. C(n, m)=C(n, n-m)=C(n-1, m-1)+C(n-1,m) 其中C(n,0) = 1 求:从5取3 和 10 取 ...

  5. 【填坑纪事】一次用System.nanoTime()填坑System.currentTimeMills()的实例记录

    JDK提供了两个方法,System.currentTimeMillis()和System.nanoTime(),这两个方法都可以用来获取表征当前时间的数值.但是如果不仔细辨别这两个方法的差别和联系,在 ...

  6. 写个续集,填坑来了!关于“Thread.sleep(0)这一行‘看似无用’的代码”里面留下的坑。

    "我报名参加金石计划1期挑战--瓜分10万奖池,这是我的第2篇文章,点击查看活动详情" 你好呀,我是居家十三天只出了一次小区门的歪歪. 这篇文章是来填坑的,我以前写文章的时候也会去 ...

  7. GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  8. 前端系列——jquery前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  9. webapp填坑记录[更新中]

    网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...

  10. 拾遗与填坑《深度探索C++对象模型》3.2节

    <深度探索C++对象模型>是一本好书,该书作者也是<C++ Primer>的作者,一位绝对的C++大师.诚然该书中也有多多少少的错误一直为人所诟病,但这仍然不妨碍称其为一本好书 ...

随机推荐

  1. Git本地仓库的文件夹不显示红色感叹号、绿色对号等图标

    参考 https://blog.csdn.net/Elon15/article/details/125898375 主要是  在文件名前加8个空格(最少8个)!!!!

  2. 如何找到并使用makecert.exe

    如果安装visual studio 后,visual studio command  仍然无法识别 makecert.exe 命令. 则需要手动安装 Windows Software Developm ...

  3. Python数据分析第七周作业-MySQL的安装及应用

    项目 MySQL 博客名称 2003031126-石升福-Python数据分析第七周作业 班级链接 20级数据班(本) 作业链接 第七周作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自 ...

  4. 字符流 -->字符节点流 FlieWrite 用法 FileReader 用法

    1创建字符输出节点流(采用的是环境默认的编码)FileWriter fw = new FileWriter("存值的路径");2输出内容fw.write(2209);可以建立数组来 ...

  5. habse与Hadoop兼容性问题

    今天大数据实验课被血坑,在第一步hbase的安装时就卡住了,之后处理了一整节实验课,也未能解决,回到宿舍后才解决(这里不得不说"度娘"不行了,出现的问题完全找不到,最好还是在chr ...

  6. 使用EFCode First模式

    1.添加EntityFrameworkCoreg和EntityFrameworkCore.Design这两个包 2.添加EF上下文类 例如下图如下: 1 using EntityModel; 2 us ...

  7. git 本地项目初始化提交至仓库

    命令行指令 Git初始化配置 git config --global user.name"abc" git config --global user.email"1234 ...

  8. mysql-连接路径url参数(随时补充及改错)

    1.基本驱动连接url jdbc:mysql://127.0.0.1:3306/demo 2.参数 参数 缺省值 说明 粘贴 useSSL 是否使用ssl加密连接mysql,一般指定false就行,除 ...

  9. What is Weight Lifting?

    Weight lifting is the process of lifting items of great mass in order to increase the muscle size an ...

  10. mysql 存储国过程实现竖表变横表(将行数据值变为字段)

    示例: 表结构如下: CREATE TABLE `pressure` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `presurena ...