组合数学相关知识总结(目前主要总结了卡特兰数)

news2024/12/23 18:56:21

全排列

例子: n n n 个数取 m m m 个数有序排放

通项公式: A n m ( P n m ) = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ⋅ ⋅ ⋅ ∗ ( n − m + 1 ) = n ! ( n − m ) ! A_n^m(P_n^m)=n*(n-1)*(n-2)*···*(n-m+1)= \frac{n!}{(n-m)!} Anm(Pnm)=n(n1)(n2)⋅⋅⋅(nm+1)=(nm)!n!

组合数

例子: n n n 个数取 m m m 个数,杨辉三角

递推公式: C i 0 = 1 ,   C i j = C i − 1 j + C i − 1 j − 1 C_i^0=1,\space C_i^j=C_{i-1}^j+C_{i-1}^{j-1} Ci0=1, Cij=Ci1j+Ci1j1

通项公式: C n m = n ! m ! ( n − m ) ! C_n^m=\frac{n!}{m!(n-m)!} Cnm=m!(nm)!n!

性质: C n m = C n n − m ,   C n 0 + C n 1 + C n 2 + ⋅ ⋅ ⋅ + C n n = 2 n C_n^m=C_n^{n-m},\space C_n^0+C_n^1+C_n^2+···+C_n^n=2^n Cnm=Cnnm, Cn0+Cn1+Cn2+⋅⋅⋅+Cnn=2n

关于杨辉三角:

最简单的杨辉三角与组合数的递推公式相同

组合数的性质在杨辉三角中体现为对称以及第 i i i 行所有数的和为 2 i − 1 2^{i-1} 2i1

不同的是杨辉三角可以带有系数 ( a , b ) (a,b) (a,b),即将杨辉三角第二行赋值为 a a a b b b

而杨辉三角的第 i i i 行就是 ( a , b ) (a,b) (a,b) i − 1 i-1 i1 次方

我们可以通过这种方法求 ( a x + b ) i − 1 (ax+b)^{i-1} (ax+b)i1 展开后每一项前的系数

p.s.我记得这玩意好像也可以用矩阵快速幂求,但是我不会,而且可能也没啥用,就不拓展了

递推公式为第 i i i 行第 j j j 个数 x i , j = a ∗ x i − 1 , j + b ∗ x i − 1 , j − 1 x_{i,j}=a*x_{i-1,j}+b*x_{i-1,j-1} xi,j=axi1,j+bxi1,j1

卡特兰数

例子:括号匹配,走楼梯,出栈顺序,二叉树计数

小数据:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796

递推公式: h 0 = h 1 = 1 ,   h n = ∑ i = 0 n − 1 h i ∗ h n − i − 1 = h n − 1 ∗ ( 4 n − 2 ) / ( n + 1 ) h_0=h_1=1,\space h_n=\sum_{i=0}^{n-1}h_i*h_{n-i-1}=h_{n-1}*(4n-2)/(n+1) h0=h1=1, hn=i=0n1hihni1=hn1(4n2)/(n+1)

通项公式: h n = C 2 n n − C 2 n n − 1 = C 2 n n / ( n + 1 ) h_n=C_{2n}^n-C_{2n}^{n-1}=C_{2n}^{n} / (n + 1) hn=C2nnC2nn1=C2nn/(n+1)

对于通项公式的拓展(以走楼梯为例):

走楼梯问题可以抽象的认为是从 ( 0 , 0 ) (0,0) (0,0) 走到 ( n , n ) (n,n) (n,n) 并且不超过直线 y = x y=x y=x(只能向右或向上走)

如图为从 ( 0 , 0 ) (0,0) (0,0) 走到 ( 8 , 8 ) (8,8) (8,8) 并且不超过直线 y = x y=x y=x 的一种走法
在这里插入图片描述
而有时我们需要求的并不是从 ( 0 , 0 ) (0,0) (0,0) 走到 ( n , n ) (n,n) (n,n),假定我们需要求的是从 ( x a , y a ) (x_a,y_a) (xa,ya) 走到 ( x b , y b ) (x_b,y_b) (xb,yb)

再具体的,我们假定从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5)
在这里插入图片描述
接下来以这个例子来解释做法,考虑容斥原理

如果不考虑不超过 y = x y=x y=x,那么从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5) 总共有 C 6 − 3 + 5 − 0 6 − 3 C_{6-3+5-0}^{6-3} C63+5063

不超过 y = x y=x y=x 等价于不经过 y = x + 1 y=x+1 y=x+1,我们将点 ( 6 , 5 ) (6,5) (6,5) 对称过去得到点 ( 4 , 7 ) (4,7) (4,7)
在这里插入图片描述
( 3 , 0 ) (3,0) (3,0) 走到 ( 4 , 7 ) (4,7) (4,7) 的方案数与从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5) 的不合法的方案是相等

解释如图,从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 4 , 7 ) (4,7) (4,7) 的路线超出 y = x + 1 y=x+1 y=x+1 的部分对称回去即可走到 ( 6 , 5 ) (6,5) (6,5)
在这里插入图片描述
( 3 , 0 ) (3,0) (3,0) 走到 ( 4 , 7 ) (4,7) (4,7) 总共有 C 4 − 3 + 7 − 0 4 − 3 C_{4-3+7-0}^{4-3} C43+7043

因此从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5) 的合法的方案即为 C 6 − 3 + 5 − 0 6 − 3 − C 4 − 3 + 7 − 0 4 − 3 C_{6-3+5-0}^{6-3}-C_{4-3+7-0}^{4-3} C63+5063C43+7043

( x b , y b ) (x_b,y_b) (xb,yb) 关于 y = x + 1 y=x+1 y=x+1 对称即为 ( y b − 1 , x b + 1 ) (y_b-1,x_b+1) (yb1,xb+1),不合法方案数 C y b − 1 − x a + x b + 1 − y a y b − 1 − x a = C x b − x a + y b − y a y b − x a − 1 C_{y_b-1-x_a+x_b+1-y_a}^{y_b-1-x_a}=C_{x_b-x_a+y_b-y_a}^{y_b-x_a-1} Cyb1xa+xb+1yayb1xa=Cxbxa+ybyaybxa1

由此可以推导得出,从 ( x a , y a ) (x_a,y_a) (xa,ya) 走到 ( x b , y b ) (x_b,y_b) (xb,yb) 的方案数为 C x b − x a + y b − y a x b − x a − C x b − x a + y b − y a y b − x a − 1 C_{x_b-x_a+y_b-y_a}^{x_b-x_a}-C_{x_b-x_a+y_b-y_a}^{y_b-x_a-1} Cxbxa+ybyaxbxaCxbxa+ybyaybxa1

例题:登山

Q:如果出现 y b − 1 < x a y_b-1<x_a yb1<xa 的情况怎么办?(可以证明不存在 x b + 1 < y a x_b+1<y_a xb+1<ya 的情况)

A:可以发现这种情况不存在不合法方案,所以方案数即为 C x b − x a + y b − y a x b − x a C_{x_b-x_a+y_b-y_a}^{x_b-x_a} Cxbxa+ybyaxbxa

待完善···

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/757831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

带你【玩转Linux命令】➾ diffstat file 每天2个day05

带你【玩转Linux命令】➾ diffstat & file 每天2个day05 &#x1f53b; 一、文件管理命令1.1 diffstat -根据diff的比较结果&#xff0c;显示统计数字1.2 file-辨识文件类型 &#x1f53b; 总结—温故知新 &#x1f448;【上一篇】 &#x1f496;The Begin&#x1f496; …

几种生成css背景图的方式

几种生成css背景图的方式 使用 CSS 向网页添加背景图案可以为我们的网站增添一些更强烈的个人风格。本文将为介绍几种使用 CSS 生成背景和图案的方式。 Hero Patterns Hero Patterns 是一个免费且易于使用的css背景生成网站&#xff0c;该生成器具有多种来自自然、动物等的图…

蓝牙音视频控制协议(AVCTP)介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

【手把手】深挖IO(补充篇)

在上一篇【深挖 IO】中已经将各大主流的 IO 网络模型介绍完了&#xff08;还没看过的小伙伴墙裂推荐去瞅一眼 → https://blog.csdn.net/FeenixOne/article/details/129157665 → 不然对这篇的内容可能会有那么一乃乃的影响&#xff09;&#xff0c;那么废话不多说&#xff0c;…

(一)Qt下实现多个海康工业相机内触发采集回调取流显示

系列文章目录 提示&#xff1a;这里是该系列文章的所有文章的目录 第一章&#xff1a;&#xff08;一&#xff09;Qt下实现多个海康工业相机内触发采集回调取流显示 第二章&#xff1a;&#xff08;二&#xff09;Qt下多线程实现多个海康工业相机内触发采集回调取流显示 文章目…

如何设计一个注册中心?(1)概念

1. 为什么需要注册中心 一个集群中有众多服务&#xff0c;每个服务有N个实例&#xff0c;因此需要一个第三方节点来存放每个服务的信息&#xff0c;这样服务需要其它的服务信息&#xff0c;直接到第三方节点获取就行了。这个第三方的节点&#xff0c;就是注册中心。 2. 注册中…

2023.7.14 智慧芽前端面试总结

整体面试体验感蛮不错的&#xff0c;面试官很愿意与我交流&#xff0c;面试的结尾也给出了一定的学习建议。 由于这家公司主要的业务是做搜索引擎方面&#xff0c;估摸着是个自研。面试注重点主要是偏业务处理和针对工具的使用&#xff0c;还有无障碍阅读英文文章&#xff0c;…

C++进阶—哈希/unordered系列关联式容器/底层结构(一篇文章学习哈希)

目录 0. 前言map/set和unordered_map/unordered_set 1. unordered系列关联式容器 1.1 unordered_map 1.1.2 unordered_map的接口说明 1. unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6…

Spring原码学习第一篇:Spring源码概述

1、Spring获取对象的过程 2、Spring源码概述图&#xff1a; 2、一些重要的接口 BeanDefinition中实现的方法&#xff0c;把xml中定义的对象封装为一个对象&#xff0c;方便后面处理 4、BeandefinitionReader BeandefinitionReader作为一个抽象层来处理配置文件&#xff0c;定…

Autosar通信实战系列01-CanSM模块功能及配置开发详解

本文框架 前言1. CanSM General配置2. 通道详细配置解析2.1 添加一路CanSMController2.2 CanSMController配置2.3 关联DemEvent配置前言 在本系列笔者将结合工作中对通信实战部分的应用经验进一步介绍常用,包括但不限于通信各模块的开发教程,代码逻辑分析,调测试方法及典型…

【Maven二】——maven仓库

系列文章目录 Maven之POM介绍 maven命令上传jar包到nexus maven仓库 系列文章目录前言一、什么是maven仓库&#xff1f;二、仓库的分类建立私服的优势 三、远程仓库的配置四、远程仓库的认证部署至远程仓库五、快照版本&why六、从仓库解析依赖的机制七、镜像总结 前言 由…

习题—实用类

目录 1.xxx 1.包装类及其构造方法 import java.util.List; import java.util.ArrayList; import java.util.Scanner;//包装类及其构造方法 public class Test {public static void main(String[] args) {// 装箱&#xff1a;基本类型转换为包装类的对象 // 拆箱&#xff1a…

go mod verdor简明介绍

Go 语言在 go 1.6 版本以后编译 go 代码会优先从 vendor 目录先寻找依赖包&#xff0c;它具有以下优点&#xff1a; 复制依赖&#xff1a;go mod vendor 会把程序所依赖的所有包复制到项目目录下的vendor 文件夹中&#xff0c;所以即使这些依赖包在外部源&#xff08;如 GitHu…

「C/C++」C/C++宏定义#define

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「C/C」C/C程序设计 目录 术语说明宏定义 #define定义常量定义函数定义代码块常用标识符用宏包含头文件 术语说明 定义宏是一种预处理器指令&#xff0c;它可以将一些代码片段或者常量直接替换为另一…

刘二大人Pytorch课程笔记

Lecture01. Overview 没啥好记的&#xff0c;理解就好 人工智能和机器学习等的关系&#xff1a; 正向传播 正向传播本质上是按照输入层到输出层的顺序&#xff0c;求解并保存网络中的中间变量本身。 反向传播 反向传播本质上是按照输出层到输入层的顺序&#xff0c;求解并…

LangChain 联合创始人下场揭秘:如何用 LangChain 和向量数据库搞定语义搜索?

近期&#xff0c;关于 ChatGPT 的访问量有所下降的消息引发激烈讨论&#xff0c;不过这并不意味着开发者对于 AIGC 的热情有所减弱&#xff0c;例如素有【2023 最潮大语言模型 Web 开发框架】之称的大网红 LangChain 的热度就只增不减。 原因在于 LangChain 作为大模型能力“B2…

1快速入门MyBatis

开发前的准备 准备数据库表&#xff1a;汽⻋表t_car 确定表中的字段以及字段的数据类型 guide_price是decimal类型&#xff0c;专⻔为财务数据准备的类型produce_time可以用char类型 , 格式’2022-10-11’ 使用navicat for mysql⼯具向t_car表中插⼊两条数据 配置IDEA中ma…

【C++修炼之路】vector 模拟实现

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、读源码二、成员变量三、默认成员函数1、构造2、析构3、拷贝构造4、赋值重载 四、访问1、[ ] 重载2、迭代器 五、容量1、cap…

Profibus DP主站转Modbus TCP网关profibus从站地址范围

远创智控YC-DPM-TCP网关。这款产品在Profibus总线侧实现了主站功能&#xff0c;在以太网侧实现了ModbusTcp服务器功能&#xff0c;为我们的工业自动化网络带来了全新的可能。 远创智控YC-DPM-TCP网关是如何实现这些功能的呢&#xff1f;首先&#xff0c;让我们来看看它的Profib…

Oracle解析JSON字符串

Oracle解析JSON字符串 假设某个字段存储的JSON字符串&#xff0c;我们不想查出来后通过一些常见的编程语言处理&#xff08;JSON.parse()或者是JSONObject.parseObject()等&#xff09;&#xff0c;想直接在数据库上处理&#xff0c;又该如何书写呢&#xff1f; 其实在ORACLE中…