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})$

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

  • 相关阅读:
    动态规划之背包问题
    Python中import导入上一级目录模块及循环import问题的解决
    Anaconda介绍、安装及使用教程
    负载均衡基础知识
    TCP和UDP的区别(转)
    microsoft visual c++ 14.0 is required问题解决办法
    python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool
    解决Anaconda无法更新的问题
    彻底的理解TCP协议的三次握手和四次分手
    android调试工具 adb命令学习
  • 原文地址:https://www.cnblogs.com/ihopenot/p/6628795.html
Copyright © 2011-2022 走看看