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

    二项式反演

    (g_n=sumlimits_{i=0}^n(-1)^idisplaystyleinom{n}{i}f_iquad↔quad f_n=sumlimits_{i=0}^n(-1)^idisplaystyleinom{n}{i}g_i)

    证明:

    [egin{align} &sumlimits_{i=0}^n(-1)^iinom{n}{i}g_i\ =&sum_{i=0}^n(-1)^iinom{n}{i}sum_{j=0}^i(-1)^jinom{i}{j}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{i!(n-i)!}·frac{i!}{j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{(n-i)!j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!(n-j)!}{(n-j)!(n-i)!j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{(n-j)!j!}·frac{(n-j)!}{(n-i)!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jinom{n}{j}·inom{n-j}{i-j}f_j\ =&sum_{j=0}^n(-1)^jinom{n}{j}f_jsum_{i=j}^n(-1)^iinom{n-j}{i-j}\ &i←i-j\ =&sum_{j=0}^n(-1)^jinom{n}{j}f_jsum_{i=0}^{n-j}(-1)^{i+j}inom{n-j}{i}\ =&sum_{j=0}^nf_jinom{n}{j}sum_{i=0}^{n-j}(-1)^{i}inom{n-j}{i}\ =&sum_{j=0}^nf_jinom{n}{j}[n==j]\ =&f_n end{align} ]

    倒数第二步可以把后面那一坨变为 ((1-1)^{n-j}) 显然等价于 ([n==j])

    于是就有

    [f_n=sum_{i=0}^ninom{n}{i}g_iquad↔quad g_n=sum_{i=0}^n(-1)^{n-i}inom{n}{i}f_i ]

    可以令 (G_n=(-1)^ng_n) 再带入最上面的式子,就有了一样的形式了。


    应用

    假设要求计数 恰好 (k) 个某物的方案数,(1leq kleq n)

    1.我们令 (g_i) 表示 恰好 (i) 个某物的方案数,(f_i)至多 (i) 个某物的方案数。

    这个满足 (f_k=sumlimits_{i=0}^kdisplaystyleinom{k}{i}g_i) ,假设我们能求出 (f_{0,1,2,..k}) ,就可以用二项式反演求回 $ g_k=sum_{i=0}k(-1){k-i}displaystyleinom{k}{i}f_i $了。

    2.我们令 (g_i) 表示 恰好 (i) 个某物的方案数,(f_i)至少 (i) 个某物的方案数。

    这个满足 (f_k=sumlimits_{i=k}^ndisplaystyleinom{i}{k}g_iquad ↔quad g_k=sumlimits_{i=k}^n(-1)^{i-k}displaystyleinom{i}{k}f_i)

    不会证,所以暴力拆开。

    [egin{align} &sum_{i=k}^ninom{i}{k}g_i\ =&sum_{i=k}^ninom{i}{k}sum_{j=i}^n(-1)^{j-i}inom{j}{i}f_j\ =&sum_{i=k}^nsum_{j=i}^ninom{j}{i}inom{i}{k}(-1)^{j-i}f_j\ =&sum_{i=k}^nsum_{j=i}^ninom{j}{k}inom{j-k}{i-k}(-1)^{j-i}f_j\ =&sum_{j=k}^nf_jsum_{i=k}^j(-1)^{j-i}inom{j}{k}inom{j-k}{i-k}\ &i←i-k\ =&sum_{j=k}^nf_jinom{j}{k}sum_{i=0}^{j-k}(-1)^{j-k-i}inom{j-k}{i}\ =&sum_{j=k}^nf_jinom{j}{k}[j==k]\ =&f_k end{align} ]

    于是也可以先求出 (f_{0,1,2...k}) 再二项式反演回 (g_k) 了。

    这个貌似就是广义容斥,把求恰好的问题转化为求至多,至少的问题。

    例题

    [post cid="969" cover="http://"/]

    个人博客地址: www.moyujiang.com 或 moyujiang.top
  • 相关阅读:
    team explorer everywhere 2010解决license试用到期的问题
    上海系分证书登记亲历
    Windows Server 8 IIS7中Remoting访问出现404错误的解决方法
    Eclipse中安装支持tfs(team foundation server)的插件team explorer everywhere 2010(二)
    Linq to oracle 太变态:Contains等函数要反着写:
    一个简单的powerdesigner模型(oom,pdm)分析器
    兴趣真的那么重要么?
    莫愁
    写给2013年自己的信
    .NET程序员也用JAVA:使用BlazeDS,SpringFramework,MySql,Flex构建RIA应用 part 3 :Flex及As 3代码编写
  • 原文地址:https://www.cnblogs.com/moyujiang/p/14906379.html
Copyright © 2011-2022 走看看