【科技】 数数(组合数学)

今天终于开坑了,开始学数数。

基本原理

加法原理:对于一件事,有 n 种方法,其中第 i 种方法有 ai 个方案,则总方案是 i=1nai.

乘法原理:对于若干件相互独立的事,第 i 件事有 ai 种方法,则总方案数为 i=1nai.

排列数:从 n 个东西里面抽 m 个,不同顺序算作不同方案,总方案数为 Anm=n!(nm)!.

证明可以这样考虑:第一次选择有 n 种选择,第二次有 (n1) 种,第三次有 (n2)m 次有 nm+1 种,故总方案数为 i=nm+1n=n!(nm)!.

组合数:与排列数类似,只不过不同顺序算作同种方案,记作 Cnm=n!m!(nm)!,不过更常用的记法是 (nm).

二项式定理

定义在整数域上的二项式定理:

(a+b)n=i=0n(ni)aibni

因此组合数也叫二项式系数.

证明:

首先引出一个组合数的递推式:

(nm)=(n1m)+(n1m1)

从组合意义上来理解:对于某一件物品分类讨论,当这件物品被选择时,就要在剩下的 n1 件里面选出 m1 件,否则在剩下的 n1 件里面选出 m 件.

考虑数学归纳法:

n=0 时,原式显然成立,现在假设当 n=x1 时等式成立,即:(a+b)x1=i=0x1(x1i)aibxi1.

那么

(a+b)x=i=0x1((x1i)ai+1bxi1+(x1i)aibxi)

=i=1x(x1i1)aibxi+i=0x1(x1i)aibxi

由于当 i=xi=0 时都有一个式子是 0,所以可以写成:

i=0x((x1i1)aibxi+(x1i)aibxi)

再上上面的递推式,我们得到了:

(a+b)x=i=0x(xi)aibxi

证毕.

容斥原理

假设机房里每个人都喜欢打游戏,有 10 个人喜欢打floor,有15人喜欢打gen,有20人喜欢打saly.one,现在需要求出机房的总人数。

很显然,总人数并不是单纯的 10+15+20,因为有的人可能喜欢玩多款游戏,现在设喜欢打floor的人的集合为 A,同理其他两个是 BC,那么总人数即为 ABC=|A|+|B|+|C||AB||AC||BC|+|ABC|,给个图更好理解:

image

据此,我们有容斥原理:

|i=1nSi|=i|Si|i<j|SiSj|+i<j<k|SiSjSk|+(1)m1ai<ai+1|i=1mSai|++(1)n1|S1Sn|

大概的意思就是枚举所有集合组成的整体的子集,按照子集大小确定前面的符号,下面证明容斥原理的正确性:

posted @   wapmhac  阅读(119)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示