zoukankan      html  css  js  c++  java
  • 反演

    看了vfk的反演魔术,跪着膜。在这里稍微总fan结yi一下,总结得更精干一点。(就是总结各种反演及证明,然后总结到自己也看不懂。

    二项式反演 :

    $f(x) = sumlimits_{i = 0}^{n} inom{n}{i}  g(i)$  ===>>  $g(i)=sum_{i = 0}^{n} (-1)^{n - i} f(i)$

    对于组合数我们有 $sumlimits_{i = 0}^{n} (-1)^{i} inom{n}{i} = left [ n==0 ight ]$

    然后有一句废话 $g(n) = sumlimits_{i = 0}^{n} left [ n - i == 0 ight ] inom{n}{i} g(i)$

    把上式代入有 $g(n) = sumlimits_{i = 0}^{n} sumlimits_{j = 0}^{n - i} (-1)^{j} inom{n - i}{j} inom{n}{i} g(i)$

    我们发现 $inom{n - i}{j} inom{n}{i} = inom{n-j}{i} inom{n}{j}$ 的

    所以有 $g(n) = sumlimits_{i = 0}^{n} sumlimits_{j = 0}^{n - i} (-1)^{j} inom{n}{j} inom{n-j}{i} g(i)$

    然后可以交换 $sum$ 符号 得到 $g(n) = sumlimits_{j = 0}^{n} (-1)^{j} inom{n}{j} sumlimits_{i = 0}^{n - j} inom{n - j}{i} g(i)$

    注意最右边的那个小朋友!其实就是 $f(n - j) $!

    然后把下标整理一下,我们就得到了二项式反演的公式,也就是我们一开始给出的那个公式。

    莫比乌斯反演 :

    $f(x) =sumlimits_{d|x} g(d)  ===>>  g(x) =sumlimits_{d|x} mu (d) f(frac{x}{d})$

    对于$mu$ 函数我们有$sumlimits_{d|n} mu (d) = left [ n==1 ight ]$

    那么效仿之前的方式,$g(n) = sumlimits_{d|n} left [ frac{n}{d} == 1 ight ] g(d)$

    我们替换方括号内部分 $g(n) = sumlimits_{d|n} sumlimits_{k|frac{n}{d}} mu (k) g(d)$

    $d|n$ 与$ k|frac{n}{d}$ 实际上是枚举所有$c|n$且c=dk,所以等价于先枚举$k|n$,再枚举$k|frac{n}{k}$。

    交换求和顺序就有$g(n) = sumlimits_{k|n} mu (k) sumlimits_{d|frac{n}{k}} g(d)$ 

    右边就是$f(frac{n}{k})$

    其实反演本质都是容斥原理

  • 相关阅读:
    WCF实现上传图片功能
    C#中String.Empty、NULL与""三者的区别
    C#中equal与==的区别
    static 关键字的使用,静态和非静态类的区别
    C#索引器
    C# 接口的隐式与显示实现说明
    Python文件处理
    Python3.X与urllib
    python中if __name__ == '__main__'
    Python中的random模块
  • 原文地址:https://www.cnblogs.com/ihopenot/p/6628795.html
Copyright © 2011-2022 走看看