组合数学知识要点

排列与组合

加法法则与乘法法则

基础思想:分类计数使用加法,分步计数使用乘法

Cayley定理

\(n\)个有标号顶点的树的个数为\(n^{n-2}\)

证明:定义一个消去序列,序列与树一一对应(略)。

排列与组合

\(n\)元\(r\)排列:\(\frac{n!}{(n-r)!}\)

\(n\)元\(r\)组合:组合数(naive)

\(n\)元\(r\)可重排列:\(n^r\)(naive)

\(n\)元\(r\)可重组合:\(\binom{n+r-1}{r}\)

多重集\(S=\{(a_1,k_1),(a_2,k_2),...,(a_n,k_n)\}\)

多重集的全排列:\(\frac{n!}{k_1!k_2!...k_n!}\)

多重集的\(r\)组合:\(\binom{n+r-1}{r}(\forall k\ge r)\)

隔板法、放缩法是解释组合意义的利器

组合问题与二项式系数、格路问题的联系

Wallis公式与Stirling公式

Stirling公式:\(n!\backsim \sqrt{2n\pi}(\frac n e)^n\)

貌似OI不怎么用得上?

递推关系与母函数

母函数

对一个数列\(a_0,a_1,a_2...\)构造函数

\[G(x)=a_0+a_1x+a_2x^2+...\]

称为母函数,其长度可以是无穷大。

母函数的表示及求解

大部分无穷大的母函数可以写成若干个无穷等比数列的和

无穷等比数列求和公式:\(S=\frac{a_1}{1-q}\)(不失一般性地设\(0<q<1\),由有穷等比数列求和\(S_n=\frac{a_1(1-q^n)}{1-q}\)将\(q^n\)看作无穷小可以推导出)

求解的一般步骤

一、写出递推式(形如\(a_i=f(a_{i-1})\),记为递推式的第\(i\)项)

二、递推式的第\(i\)项两边乘上\(x^i\),最后所有等式左右两边分别求和,形如

\[a_1x+a_2x^2+a_3x^3+...=f(a_0)x+f(a_1)x^2+f(a_2)x^3+...\]

三、通过移项、无穷等比数列求和、因式分解等变换,把上面的大等式大概写成这样(分子是任意一个多项式\(P(x)\),不用在意)

\[G(x)=\frac{P(x)}{(1-q_1x)(1-q_2x)...}\]

四、上式可以裂项成若干等比数列的和

\[G(x)=\frac{A_1}{(1-q_1x)}+\frac{A_2}{(1-q_2x)}+...\]

待定系数法,将上式通分以后,根据合并后的分子与上面的\(P(x)\)对应项的系数相等,联立方程组解出\(A_1,A_2,...\)。

母函数的应用

写出数列的母函数后,我们可以写出数列的通项公式,进而快速求出数列指定项\(a_n\)的值。

既然我们可以把大部分母函数写成等比数列和的形式,那么我们就对于每一个等比数列,算出它的\(x^n\)的系数,最后相加即可得到\(a_n\)。

优选法

就是三分求单峰函数的极值,只不过在区间的\(0.382\)和\(0.618\)等分点求值,这样有一个值在下一次的时候还能用上。

利用Fibonacci数列后一项比上前一项接近\(0.618\)的性质,可以使优选法取到整点。

线性常系数齐次递推关系

对于数列\(\{a_n\}\)有递推式

\(a_n+c_1a_{n-1}+c_2a_{n-2}+...+c_ka_{n-k}=0(a_0=d_0,a_1=d_1,...a_{k-1}=d_{k-1})\)

若\(\forall c,d\)都是常数,则称上式为\(k\)阶线性常系数齐次递推关系

\(C(x)=x^k+c_1x^{k-1}+c_2x^{k-2}+...+c_{k-1}x+c_k\)称为特征多项式。

求解

经过复杂的变换,数列的母函数一定可以写成

\[G(x)=\frac{P(x)}{1+c_1x+c_2x^2+...+c_kx^k}\]

其中\(P(x)\)为一个极其复杂的最高次项不超过\(k-1\)的多项式。

分母显然等价于\(x^kC(\frac 1 x)\),于是考虑解方程

\[C(x)=(x-α_1)^{k_1}(x-α_2)^{k_2}...(x-α_t)^{k_t}\]

\(α_1,α_2,...α_t\)为\(C(x)\)在复数域内的\(t\)个根,称为特征根。显然可能有重根,\(k_i\)即为\(α_i\)的重复次数,于是有\(\sum\limits_{i=1}^t k_i=k\)

于是将\(k\)个\(x\)乘进分母中得出

\[G(x)=\frac{P(x)}{(1-α_1x)^{k_1}(1-α_2x)^{k_2}...(1-α_tx)^{k_t}}\]

开始求\(x^n\)系数\(a_n\),三种情况只好死记硬背

单根

设有若干单根\(α_1,α_2,...α_k\)

直接待定系数\(A_1α_1^n+A_2α_2^n+...+A_kα_k^n\)

复根

如果出现复根,肯定是一对一对的共轭复根\(ρ(\cosθ\pm i\sinθ)\)

待定系数\(Aρ^n\cos nθ+Bρ^n\sin nθ\)

多重根

有一个\(k\)重根\(α\)

待定系数\((A_0+A_1n+A_2n^2+...+A_{k-1}n^{k-1})α^n\)

貌似也适用于单根\((k=1)\)



三种情况的待定系数式相加即为\(a_n\)的表达式

将初始值\(a_0=d_0,a_1=d_1,...a_{k-1}=d_{k-1}\)带入\(a_n\)的表达式中,得到一个\(k\)元方程组,求解即可。

系数都求出来了,\(a_n\)当然求出来啦!

整数的拆分

更新中~

原文地址:https://www.cnblogs.com/flashhu/p/9568368.html

时间: 2024-10-01 05:39:34

组合数学知识要点的相关文章

javascript必须知道的知识要点(二)

该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 内建对象可划分为数据封装类对象.工具类对象.错误类对象,如下. 数据封装类对象: Number对象 String对象 Boolean对象 Array对象 Object Function 工具类对象: Math对象 Date对象 RegExp对象 错误类对象: Error对象  Number对象 JavaScript 只有一种数字类型.Number,包括

CentOs7下systemd管理知识要点

centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/systemd这个目录下,配置工具命令位于/bin,和/sbin这两个目录下,预先准备的备用配置文件位于/lib/systemd目录下,还有库文件和帮助手册等等.这是一个庞大的软件包.详情使用rpm -ql systemd即可查看. systemd已经不仅仅是一个启动管理软件,而且是一个综合性的服务管理软件,它

三、Java基础知识要点合集

1.数据类型 Java的数据类型分为基本数据类型和引用数据类型. a, 基本数据类型包括:byte, boolean, char, short, int, long, float, double; b, 每个基本数据类型都有相应的引用类型,比如int  ->  Integer,char -> character. c, 查询不同类型数据的范围,方法之一是可以用基本类型对应的引用类型.比如,"int i = Integer.Size; "(i表示int型数据所占的位(bit)

【转】MongoDB 知识要点一览

原文链接 http://www.cnblogs.com/zhangzili/p/4975080.html MongoDB 知识要点一览 1.启动mongoDb数据库: 进入mongoDB的安装目录,执行如下命令 C:\Program Files\MongoDB\Server\3.0\bin>mongod.exe --dbpath "C:\Program Files\MongoDB\Server\3.0\db" 启动成功后在打开一个cmd窗口,进入mongoDB的安装目录,执行mo

Navicat for SQLite 表检查知识要点

Navicat for SQLite 作为一款比较常见的数据库管理软件,很多的人都会用到它,但是一些用户对其了解的很少,很多要点都不是很清楚.下面就给大家介绍介绍Navicat for SQLite 表检查知识要点,检查限制是最通用的限制类型,允许指定在某列的值必须符合一个 Boolean(真值)表达式. Navicat for SQLite 在“检查”选项卡,只需简单地点击检查栏位即可进行编辑.使用检查工具栏,用户可以创建新的.编辑或删除选择的检查栏位.需要注意的是,只有 SQLite 3.3

java web的开发 知识要点

近期闲下来时写的一个有关 java web的开发 的 常用架构 的总结,用于初 学 者或团队新人培训. Java开发初步.ppt SSH  为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架 SSI   为 Strtus2.Spring.iBatis java web的开发 知识要点

Golang 接口与反射知识要点

目录 Golang 接口与反射知识要点 1. 接口类型变量 2. 类型断言 3. 鸭子类型 4. 反射机制 5. reflect 包 TypeOf().ValueOf() Type().Kind() Interface() 6. 反射对象的可设置性 SetXXX(), CanSet() Elem() 7. Struct 的反射 NumField(), Type.Field(i int) Value.Field(i int) 参考文档 Golang 接口与反射知识要点 这篇文章以 Go 官方经典博

总结了零基础学习Java编程语言的几个基础知识要点

很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这些Java的基本概念也是必不可少的,死记硬背肯定是不行的,重在理解,理解它们之间的区别与联系,分别有哪些应用.想想这些代码中用到了哪些知识点.不要一味地照着书本敲代码.而不去理解. 1.Java编程语言,即语法. 2.Java文件格式,即各种文件夹.文件的后缀. 3.Java虚拟机(JVM),即处理

Python原来这么好学-1.3节: 知识要点总结与内容复习

这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水平的中高级程序员. ? 本章总结 在本章的内容中,主要讲解了如何在Windows以及Linux系统中安装python. 现在分别对本章中介绍过的命令工具,以及知识要点进行复习. 实用工具 知识要点 1) 环境变量保存了系统运行环境的一系列参数,比如系统环境变量PATH,其保存了与路径相关的参数. 系