• 二项式反演


    反演

    定义

    [F(n)=sum_{i=0}^n a_{n,i} imes G(i) ]

    对于用 (F) 来表示 (G) 的过程称为反演,有

    [G(n)=sum_{i=0}^n b_{n,i} imes F(i) ]

    那么 (a)(b) 满足什么关系?直接带入 (G(i))

    [F(n)=sum_{i=0}^n a_{n,i} sum_{j=0}^i b_{i,j} imes F(j) ]

    考虑交换枚举顺序,枚举 (F(j)),再计数 (F(j)) 被计算了多少次。

    [F(n)=sum_{j=0}^n F(j) sum_{i=j}^n a_{n,i} imes b_{i,j} ]

    上式成立,当且仅当

    [sum_{i=j}^n a_{n,i} imes b_{i,j}=[j=n] ]

    二项式反演

    公式一

    [F(n)=sum_{i=0}^n (-1)^i inom{n}{i} G(i) Leftrightarrow G(n)=sum_{i=0}^n (-1)^i inom{n}{i} F(i) ]

    证明

    (a_{n,i}=b_{n,i}=(-1)^i inom{n}{i})

    那么就有

    [sum_{i=j}^n a_{n,i} imes b_{i,j}=sum_{i=j}^n (-1)^{i+j} inom{n}{i}inom{i}{j}=(*) ]

    后面两个二项式系数可以简单变换

    [(*)=sum_{i=j}^n (-1)^{i+j} inom{n}{j} inom{n-j}{i-j} ]

    再用 (i+j) 替换 (i) ,注意指标范围

    [(*)=inom{n}{j}sum_{i=0}^{n-j} (-1)^i inom{n-j}{i} ]

    (n eq j) 后面可以用二项式定理化掉,

    [(*)=inom{n}{j}(1-1)^{n-j}=0 ]

    (n=j) ,容易发现后面 ((*)=1)
    那么就有 ((*)=[n=j]),得证。

    公式二

    对公式一进行简单变换,令 (H(n)=(-1)^n G(n)),那么就有

    [F(n)=sum_{i=0}^n inom{n}{i} H(i) Leftrightarrow frac{H(n)}{(-1)^n}=sum_{i=0}^n (-1)^{i} inom{n}{i} F(i) ]

    事实上,下指标无需从 (0) 开始。那么对任意 (min[0,n]) ,有

    [F(n)=sum_{i=m}^n inom{n}{i} G(i) Leftrightarrow G(n)=sum_{i=m}^n (-1)^{n-i} inom{n}{i} F(i) ]

    公式三

    [F(n)=sum_{i=n}^m inom{i}{n} G(i) Leftrightarrow G(n)=sum_{i=n}^m (-1)^{i-n} inom{i}{n} F(i) ]

    证明略,只需一些简单的代数运算。

  • 相关阅读:
    javascript删除JSON元素
    State ,Getter , Mutation , Action , Module
    mutation和action区别
    图片懒加载
    git命令合并分支代码
    vue 项目生产环境下去重console
    rem px pt em (区别)
    npm 安装依赖 以及dependencies 和 devDependencies的区别
    仿百度搜索
    h5页面在移动端需要注意的一些事情
  • 原文地址:https://www.cnblogs.com/wwlwQWQ/p/14254126.html
Copyright © 2020-2023  润新知