zoukankan      html  css  js  c++  java
  • 各种反演和筛的总结

    各种反演和筛的总结

    可以说是从零开始学了。

    主要记录对这些东西的理解过程。

    希望有发现错误的大佬能及时指出。

    在更了在更了(——1.31)

    大概咕掉了,有时间的话有可能会开一篇新的。(——3.12)


    反演

    对于两个函数(f(x))(g(x)),我们有从(f)(g)的关系式。

    (g(n)=sum^{n}_{i=0}A_{n,i}f(i))

    其中(A_{n,i})表示某种类型的计算方式,比如说组合关系或者倍数关系之类的。

    那么很显然直接代入此式就会很方便(f->g)的推导。

    而如果我们要求(g->f)的推导怎么办。

    于是我们引入了反演

    很显然并不是所有式子都可以有优秀的反演方法。


    二项式反演

    二项式相关,此时(A_{n,i})是一个组合数的形式。

    用更常见的形式:

    (g(n)=sum_{i=0}^{n}{nchoose i}f(i))

    (f(n)=sum_{i=0}^{n}(-1)^{n-i}{nchoose i}g(i))或者换下下标(f(n)=sum_{i=0}^{n}(-1)^{i}{nchoose i}g(n-i))

    我们想想系数为什么是正负一。

    我们考虑(f(k))内的每一个贡献,它在(i<k)的时候会被计算的次数为:

    (sum^{k-1}_{i=0}(-1)^{i}{kchoose i})

    具体一点的意义,把以上式子用一个实例表述:

    一共有(n)个人,每个人都有自己的座位,现在让他们都不坐在自己的座位上,求方案数。(错排问题)

    那么所求就是(f(n))表示恰好有(n)个人坐不到自己的座位上的方案数

    (g(n))表示所有坐座位的方案,那么(g(n)=n!) 表示这(n)个人随便坐。

    (g(n)=sum_{i=0}^{n}{nchoose i}f(n-i))表示枚举(i)个人坐到自己的座位,再组合数选出这些人,然后其他人错排。

    化一下下标(g(n)=sum_{i=0}^{n}{nchoose i}f(i)),是不是熟悉的式子了。


    回到上面实例前的那个式子

    (f(k))中的贡献相当于是恰好有(k)个人坐不到自己座位的方案

    考虑对于每一种方案,这里相当于从(0)(n)枚举坐到自己座位上的人,所以在(i<k)的时候同样会计算到这些方案,而计算到的次数为:(sum^{k-1}_{i=0}(-1)^{i}{kchoose i})

    这个自己理解一下。

    把上面那个式子拆开变成 (sum^{k}_{i=0}(-1)^{i}{kchoose i}-(-1)^{k}{kchoose k})

    (k!=0),所以左边根据组合数的性质就是(0),而右边剩下了(-(-1)^k)

    也就是说多算了(-(-1)^k)遍,我们加回来就好了。


    其实上面那个就是容斥。

    或者说整个二项式反演都是容斥。

    或者说这些反演都用到了容斥。


    总是有一种这些都是别人构造好的东西的感觉。

    反演的实质去(yyb)那看?或者百度也行,我记得看到了一篇不错的。

    初学呢哪那么厉害。


    莫比乌斯反演

    这个时候的(A_{n,i})不一样了:

    (g(n)=sum_{d|n} f(d))

    相当于所有(n)的因数的(f)加起来,那这个怎么做啊。

    先放式子:(f(n)=sum_{d|n}mu(frac{n}{d})g(d))

    这种情况显然复杂一些,(mu)在这里相当于构造了一个函数,为了满足这个反演。

    对于初学者而言,我们显然可以通过打表的优秀方式发现这个(mu)的规律:

    (mu(1)=1)

    根据唯一分解定理将一个数(n)分解为(prod_{i=1}^{t}p_i^{a_i})(t)为质因子个数

    那么若存在(a_i>1)(mu(n)=0),否则(mu(n)=(-1)^t)

    多手玩一下,就能更深刻地理解其中的关系。

    另外我们把式子变个形,可以得到:

    (g(n)=sum_{n|d}f(d)),则有

    (f(n)=sum_{n|d}mu(frac{d}{n})g(d))

    这个要有个统一的上界,两式本质相同。


    作为初学者,先得会用这些东西。

    要知道在哪用以及怎么用

    看到题列出式子一定要尝试向这些东西上靠,在做多了题之后就会理解了。


    斯特林反演(记公式嘛)

    单位根反演(记公式嘛)



    筛法

    杜教筛(在更了在更了)

    (min\_25)筛(这是啥?)

  • 相关阅读:
    Threading in C#
    在IIS安装配置应用PHP
    QQ,MSN,旺旺,网页链接打开程序
    帮助你免于失业的十大软件技术
    PHP Parse Error: syntax error, unexpected $end 错误解决
    [cgibin] 30个漏洞+使用方法
    为Magento安装示例数据 转发
    配置xampp在php中使用sqlite3
    将MySQL输出内容写入(重定向到)文件
    国内外主要节日表
  • 原文地址:https://www.cnblogs.com/Lovemona/p/10192373.html
Copyright © 2011-2022 走看看