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

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

  • 相关阅读:
    php数组转json 中文编码错乱解决
    fastadmin展示多个视频按钮
    fastadmin在json字段动态关联
    fastadmin放大镜改为“搜索”
    fastadmin行内手机验证规则
    fastadmin批量修改状态
    php手机、邮箱规则验证
    tp5 查询某个值是否在数据表某一个字段中 FIND_IN_SET
    css书写规范以及如何写出赏心悦目的代码
    html5中常见选择器
  • 原文地址:https://www.cnblogs.com/wwlwQWQ/p/14254126.html
Copyright © 2011-2022 走看看