zoukankan      html  css  js  c++  java
  • 数论: 莫比乌斯反演 ( 三 ) 证明

    莫比乌斯反演 ( 三 ) 证明

    因为是自己自创的证法, 纯手打2000字, 难免有问题, 所以看到BUG请务必指出.

    在考虑了几个样例的反演后, 我仿佛悟出了些什么.

    [f(1)=F(1)\f(2)=F(2)-f(1)=F(2)-F(1)\f(4)=F(4)-f(2)-f(1)=F(4)-F(2)\f(6)=F(6)-f(3)-f(2)-f(1)=F(6)-F(3)-f(2)=F(6)-F(3)-F(2)+f(1)=F(6)-F(3)-F(2)+F(1)\ ]

    通过这四个样例, 不难看出, 在等式右边F(x)和f(x)的参数一定是要求的f(n)中, n的因数. 这时候, 从F(n)中筛出除n本身外的其他因数为参数的f(x)函数, 就能凑出最后只剩f(n)还存在的情况.

    和高斯消元类似, 这种操作从大到小, 通过加减相应的F(x)函数, 依次把F(n)中参数最大的f(x)函数项消除, 最后就能获得结果. 假设每个F(x)函数都要和F(n)相加减, 那么只要确定每一个F(x)的系数, 就能写出对任意n的f(n)表达式.

    假设n为任意正整数, d|n, 求f(n)的值. 这时d就是除n本身外, n最大的因数. 而F(n)加减F(d), 毫无疑问, 以d的因数为参数的f(x)项系数都会改变. 因为d是首次操作, 这时F(n)中最大的待消除项f(d)系数一定为1, 所以就减去F(d), 使以d的因数为参数的f(x)项系数为零. 这时就可以加减下一个F(d)了.

    这就是具体到每一步的反演过程, 确定一个F(d)的系数就是要确定在F(d)之前, f(d)被操作后的系数. 只要确定f(d)系数, 为了凑零, F(d)的系数自然就是其相反数.

    那么怎么求f(d)的系数呢?

    这就要考虑从一开始, 它被多少次操作过, 也就是它作为n的因数的因数, 出现了多少次. 这很简单, 只要将d和n同时除以d, 得到1和n/d. (易证一定整除)

    这时, 如果n/d是质数, 那么d只是d本身和n本身的因数, 在此之前没有被操作, f(d)系数为1, 所以F(d)系数为-1.

    如果n/d是合数, 那么n/d的任意因数和d相乘积都满足既是n的因数又是d的倍数. 那么满足条件的数的数量便是n/d除它本身和1以外的因数数量. 这个数便是f(d)在此之前被操作的次数. 知道了次数, 还得知道每一次操作的具体情况, 也就是加或减还是不操作.

    这种情况分类讨论, 假设n/d是个完全平方数, 是正整数k的平方. 当k是质数时, 在判断F(kn)的系数时, 对于f(kn)的操作就是k除本身和1以外的因数数量, 很显然是0. 这时f(kn)的系数是1, 所以F(kn)的系数是-1, f(d)的系数受影响变成0. 在此之后, 便再无能影响f(d)系数的操作, 因为n/d除去1和本身的因数只有k一个, 直到判断F(d)的系数的时候, 由于f(d)的系数为零, 所以F(d)系数为0.

    得出结论, 当n/d为质数平方时, F(d)系数为零.

    进一步, 当n/d为任意完全平方数的情况如何呢?

    n/d仍然是k的平方, k是任意正整数. 对于f(kd)收到的操作次数, 自然等于k除1和本身外因数数量.

    假设k=12, 这时, f(6kd)是首次操作, 系数为1, 故F(6kd)系数为-1. 这时f(3kd), f(2kd), f(kd), f(d)等项的系数均受到影响-1, 变成0.

    接着f(4kd)也是首次操作, 使f(4kd), f(2kd), f(kd), f(d)系数都-1, f(4kd)变成0, f(2kd), f(kd), f(d)变成-1.

    接着f(3kd)由于系数为0, 跳过.

    f(2kd)此时系数为-1, 故F(2kd)系数为1.

    f(kd), f(d)系数都+1, 成为0. F(kd)系数为0, 不操作.

    因为kd的倍数也是kd的因数的倍数, 所以上述操作之后, f(kd/2), f(kd/3), f(kd/4), f(kd/6)系数也都是0, 当然, kd/12=d, 所以f(d)的系数在一同操作后为0, F(d)系数为0.

    回顾过程, 不难发现只要n/d是完全平方数, 在操作完f(kd)后, 所有以n的因数,d的倍数为参数的f(x)函数的系数都是0.

    结论推广: 只要n/d是完全平方数, 那么f(d)的系数就是0.

    如果说在原有的基础上, 使n/d的商在k的平方之上再乘一个数m, 会怎么样呢?

    这时不妨先考虑f(md)的情况, 根据之前的推论, f(md)的系数在操作后为0. 那么很容易发现, m为质数时, f(d)的情况和f(md)一样. 当m为任意数时, m每一个质因数都可以充当前面的质数m来看, 就能出现很多组像上文中由质数乘完全平方数组成的n/d的商的情况, 所有这些情况总和就是能影响f(d)系数的全部因素, 每一组所带来的影响都为0, 所以这时, F(d)的系数为0.

    再次推广: 只要n/d含有完全平方因数, 那么F(d)的系数为0.

    推到这里, 这就联想到了莫比乌斯函数.

    [μ(x)=left{ egin{aligned} 1 (x=1) \ 0 ((x>1) && (x有完全平方因数(除1以外))) \ (-1)^{x的质因数数量} (其他情况) end{aligned} ight. ]

    豁然开朗.

    这时再看, 联系莫比乌斯反演定理:(这里的d和n/d和上文的互换了)

    [f(n)=sum _{d|n} mu(d)F(frac nd)\ ]

    当然, 刚刚只讨论了莫比乌斯函数的一种情况.

    当d=1的时候, 根据μ(1)=1可知, F(n)的系数就是1(一开始的底).

    如果d里面没有完全平方音数, 那么d一定是由某些质因数乘起来的, 每个质因数的次数不是0就是1, 最多出现一次. 这时, f(n/d)项的操作数量全靠d除1和本身外的因数数量决定, 设d有k个质因数, 因为每个质因数只出现一次, 所以d的除1和本身外的因数数量就是:

    [sum _{i=1} ^{i<k} Cinom ik ]

    每个以d的因数, 都是被1~k-1个n/d的质因数组成的.

    质因数数量相同的因数为参数的项, 在操作时互不影响, 系数相同, 并受到质因数数量相对多且成倍数关系的项的操作影响.

    若k为奇数, 那么第一次操作没受过任何影响的项数就是奇数:

    [项数: Cinom {k-1}{k}=Cinom{1}{k}=k ]

    这时, 第一波操作, 每一项影响的项数和最后一波每一项受到影响到数量就是:

    [sum _{i=1} ^{i<k-1} Cinom {i}{k} ]

    第m波操作受到m-1波影响后, 在进行m波操作时, 一定会主动修正影响, 必然系数和m-1波相反, 所以, 在最后一波, 也就是第k-1波操作系数的正负决定了F(n/d)系数的正负, 而k-1波操作的正负恰恰就和k的奇偶性有关, 由于第一波的系数和F(n)的系数1相反, 所以就是-1, 所以波数为奇, 系数为-1; 对应的, 波数为偶, 系数为1.若k为偶, 故k-1为奇, k-1波的系数就是-1, 那么F(n/d)的系数就是-1.对应的, k为奇, F(n/d)的系数就是1.

    所以:

    [F(n/d)系数=(-1)^k (d不含完全平方因数) ]

    综上所述.

    [f(n)=sum _{d|n} mu(d)F(n/d) ]

    证毕.

    望斧正......

  • 相关阅读:
    intellij IDE 破解 简单 License server 法
    Unsupported major.minor version 52.0错误和 jdbc odbc
    MyEclipse优化攻略搜集
    感兴趣的WebGL ,来自微博的一个全景星空图~
    ie/chorme 清除缓存 刷新js,css
    PLSQL PL/SQL Developer Oracle 使用技巧 常用设置 卡顿问题 病毒防范( 附带:配置文件)
    MyEclipse eclipse console edit packageExplorer 颜色设置、个性化、常用设置
    java Map 四种遍历方法
    Eclipse MyEclipse 反编译.class文件 myeclipse source not found
    打印菱形
  • 原文地址:https://www.cnblogs.com/Wild-Donkey/p/12493468.html
Copyright © 2011-2022 走看看