zoukankan      html  css  js  c++  java
  • 二项式反演

    反演

    定义

    [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) ]

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

  • 相关阅读:
    分布式协调服务 ( 服务治理 ).
    【Java常用类之enumm枚举类 20】
    【Java常用类之date类 19】
    【Java常用类之String类18】
    【Java数组算法17】
    【Java数组-二维数组16】
    【Java数组-一维数组15】
    【Java异常 14】
    【Java的package/import&访问权限&修饰符&Object常用方法 13】
    《Rubu基础教程第五版》第十七章笔记 IO类
  • 原文地址:https://www.cnblogs.com/wwlwQWQ/p/14254126.html
Copyright © 2011-2022 走看看