• 组合数学


    组合数学真的非常重要啊啊啊。

    排列组合

    • 组合恒等式

    1. 对称恒等式

    [inom n m = inom n {n-m} ]

    1. 吸收恒等式

    [inom n m=frac n m inom {n-1} {m-1}\ m imes inom n m = n imes inom {n-1}{m-1}\ (n-m) imes inom n m = n imes inom {n-1}{m} ]

    1. 归纳恒等式:

    [inom n m=inom{n-1}{m}+inom{n-1}{m-1} ]

    1. [sumlimits_{i=m}^ninom i m=inom {n+1} {m+1} ]

      用组合意义可以非常完美的解释。右边的组合数相当于你从 (n+1) 个球里取出 (m+1) 个球,但这第 (m+1) 个球其实相当于限制了前 (m) 个球选择的范围,发现就是左边的东西。证毕。

    2. [sumlimits_{i=0}^m inom n m inom m {m-i}=inom{m+n}{m}(ngeq m) ]

    3. [inom n r inom r k=inom n k inom{n-k}{r-k} ]

    4. [sumlimits_{i=0}^n inom {n-i} {i} =F_{n+1} ]

      其中 (F_i) 为斐波那契数列第 (i) 项。考虑 (F_i) 的组合意义:给定 (i-2) 个位置,在里面放若干个球,是的球两两不相邻的方案数。而左边也可以像这样解释。

    • 例题:


    容斥原理

    直接推荐这个,讲的非常全面。

    自己总结一下,谈谈模型的建立。就是你首先要确定你要容斥的集合(包括确定元素,全集),然后每个元素都有一个属性,你要根据题目要求判断是求属性的交还是并等等,最后套用容斥公式解答。

    • 集合幂级数

      (Update 2020.6.6)今天问了Binary_Search_Tree神仙一个式子的推导:

      [f(S)=sumlimits_{Ssubseteq T}g(T) Leftrightarrow g(S)=sumlimits_{Ssubseteq T}(-1)^{|T|-|S|}f(T) ]

      然后他就花了一个小时给我讲了集合幂级数(呜呜呜我太菜了理解了好久)。

      定义

      定义形如

      [f(x)=sumlimits_{S}a_Sx^S ]

      为集合幂级数,其中枚举的(S)为集合({1,2,3,4,...,n})的一个子集,(a_S)为系数。

      运算

      • 加法:对应系数相加。

      • 减法:对应系数相减。

      • 乘法:

      [f(x)g(x)=sumlimits_{S_1}sumlimits_{S_2}a_{S_1}b_{S_2}x^{S_1+S_2} ]

      其中(a_{S_1})(b_{S_2})表示对应项的系数。

      • 子集卷积:

      [f(x)*g(x)=sumlimits_{S}(sumlimits_{S_1}sumlimits_{S_2}[S_1cap S_2=varnothing][S_1 cup S_2=S]a_{S_1}b_{S_2})x^S ]

      • 求逆:
        两个函数的子集卷积为(e)

      特殊集合幂级数

      说白了就跟数论中一些基本函数差不多。

      • (I):所有系数均为(1)
      • (e):空集的系数为(1),其余系数为(0)

      (基础知识完结撒花)

      好了,bb了这么多,回到开始的那个式子上去吧。

      首先我们发现一个神奇的性质:

      [I*T=e,T=sumlimits_{S}(-1)^{|S|}x^S ]

      考虑它为什么成立。

      证明:

      [egin{aligned}I*T[S] &=sumlimits_{i=1}^{|S|}inom{|S|}{i}(-1)^i1^{|S|-i}\&=(1-1)^{|S|}\&=0^{|S|} end{aligned} ]

      中间的推导过程使用了二项式定理。我们发现只有当(|S|=0)也就是(S)是空集时这一项的系数才为(1),否则为(0),这正是(e)的定义啊。

      证毕。

      所以这跟最开始的式子有什么关系

      这就来啦(式子是什么来着

      [f(S)=sumlimits_{Ssubseteq T}g(T) Leftrightarrow g(S)=sumlimits_{Ssubseteq T}(-1)^{|T|-|S|}f(T) ]

      我们可以把(f(S))看成一个集合幂级数(具体是啥不在乎,假设他是(F)),然后这个推导就变成了

      [F=G*I Leftrightarrow G=T*F ]

      其中(T)同上文为(I)求逆后的结果。类似于反演,显然成立。

    • 例题:

    1. luogu P1450 [HAOI2008]硬币购物 题解

    卡特兰数

    定义卡特兰数 (C_n) 表示:(n)(0)(n)(1) 组成的序列,满足任意前缀 (0) 的个数大于等于 (1) 的个数的数量。最近系统的学习了一下每个公式,从不同角度理解卡特兰数。

    1. (C_n=inom{2n}{n}-inom{2n}{n-1})

      正难则反,考虑求不合法的序列个数。对于每个不合法的序列,构造一个映射:找到这个序列第一个 (0) 的个数小于 (1) 的个数 的前缀,假设这个位置为 (i),那么把 (i+1sim 2n) 的位置去反。这样我们得到了一个有 (n+1)(1)(n-1)(0) 的序列,把这个序列对应上那个不合法的原序列。这样我们就有了一个一一映射,也就找到了不合法的序列个数为 (inom{2n}{n-1})

    2. (C_n=sumlimits_{i=0}^{n-1} C_i imes C_{n-i-1})

      发现这就是二叉树计数。考虑二叉树计数如何对应卡特兰数的基本定义就能证明这个公式。对于一个非空节点,我们把 (0) 对应访问左子树,(1) 对应访问右子树(空子树也要进入)。然后显然这就是卡特兰数的基本定义。

    3. (C_n=frac{C_{n-1} imes (4n-2)}{n+1})

      考虑凸 (n) 边形的划分计数。考虑两种计算方法:

      • 钦定一条边,枚举剩下 (n-2) 个点谁跟这条边组成一个三角形,(H_n=H_{n-1}+H_{3}H_{n-2}+cdots+H_{n-2}H_3 +H_{n-1}),显然这样不重不漏。
      • 从每个点引一条对角线,去重后答案为 ((n-3) imes H_n=n/2 imes (H_3H_{n-1}+H_4H_{n-2}+cdots + H_{n-1}H_3))

      第一个式子的第 (n+1) 项为 (H_{n+1}=H_n+H_3H_{n-1}+cdots +H_{n-1}H_3+H_n)。把这个式子与第二个式子相减得:

      [H_{n+1}=(frac {4n-6} {n}) imes H_n ]

      然后通过某种神奇的想像我们发现 (H_n=C_{n-2}),于是就有:

      [C_n=frac{4n-2}{n+1}C_{n-1} ]


    斯特林数

    • 基础概念

      第一类斯特林数

      定义第一类斯特林数 ({nrack k}) 表示把 (n) 个元素分成 (k) 个轮换的方案数,递推式:

      [{nrack k}={n-1rack k-1}+ (n-1) imes {n-1rack k} ]

      第二类斯特林数

      定义第二类斯特林数 ({n race k}) 表示把 (n) 个元素分成 (k) 个集合的方案数,递推式:

      [{n race k}={n-1 race k-1} + k imes{n-1 race k} ]

    • 普通幂与阶乘幂的转换

      下降幂转普通幂

      [x^n = sumlimits_{k}{n race k}x^{underline{k}} ]

      可以用归纳法证明(然鹅我看不懂),但是组合意义证明更加易懂:等式的左右相当于把 (n) 个球放进 (x) 个盒子里的方案数。

      普通幂转上升幂

      [x^{overline{n}}=sumlimits_{k}{nrack k}x^k ]

      证明留坑。

      其他转换

      那如果我们想要将普通幂转下降幂或上升幂转普通幂怎么办呢? 注意到这样一个事情:

      [x^{overline{n}}=(-1)^n(-x)^{underline{n}}\ x^{underline{n}}=(-1)^n(-x)^{overline{n}} ]

      所以显然就有:

      [x^{underline{n}}=sumlimits_{k}(-1)^{n-k}{nrack k}x^k\ x^n=sumlimits_{k}(-1)^{n-k}{nrace k}x^{overline{k}} ]

    由于博主比较菜,所以有很多东西待学习,大部分文章会持续更新,另外如果有出错或者不周之处,欢迎大家在评论中指出!
  • 相关阅读:
    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
    Ext.Net学习笔记11:Ext.Net GridPanel的用法
    Ext.Net学习笔记09:Ext.Net Store的用法
    Ext.Net学习笔记10:Ext.Net ComboBox用法
    Ext.Net学习笔记08:Ext.Net中使用数据
    Ext.Net学习笔记07:Ext.Net DirectMethods用法详解
    Ext.Net学习笔记06:Ext.Net DirectEvents用方补充
    Ext.Net学习笔记04:Ext.Net布局
  • 原文地址:https://www.cnblogs.com/With-penguin/p/12839096.html
Copyright © 2020-2023  润新知