zoukankan      html  css  js  c++  java
  • 莫比乌斯反演

    莫比乌斯反演

    莫比乌斯反演是数论数学中很重要的内容,可以用于解决很多组合数学的问题。莫比乌斯反演在大部分情况下都能简化运算。

    导入

    我们考虑一个函数(f(x)=sum_{d|x}g(d))
    那么显然
    (f(1)=g(1))
    (f(2)=g(1)+g(2))
    (f(3)=g(1)+g(3))
    (f(4)=g(1)+g(2)+g(4))
    (f(5)=g(1)+g(5))
    (f(6)=g(1)+g(2)+g(3)+g(6))
    (f(7)=g(1)+g(7))
    (f(8)=g(1)+g(2)+g(4)+g(8))
    所以
    (g(1)=f(1))
    (g(2)=f(2)-f(1))
    (g(3)=f(3)-f(1))
    (g(4)=f(4)-f(2))
    (g(5)=f(5)-f(1))
    (g(6)=f(6)-f(3)-f(2)+f(1))
    (g(7)=f(7)-f(1))
    (g(8)=f(8)-f(4))

    从此可以看出若(f(x)=sum_{d|x}g(d))
    那么(g(x)=sum_{d|x}k*f(d)(k是系数))(也就是说(g(x)可以由f(d)()d是x(的约数)经过一定的变化反推出来))

    我们假设(x=p^2(p是质数))
    所以(f(p)=g(p)+g(1),f(x)=g(x)+g(p)+g(1))
    显然(g(x)=f(x)-f(p))
    可以看到
    (d=1时,k=0)
    (d=p时,k=-1)
    (d=x=p^2时,k=1)
    假设(k=μ(frac{x}{d})) 所以此时
    (μ(p^2)=0,μ(p)=-1,μ(1)=1)

    莫比乌斯反演定理

    定义函数(μ(x))
    (μ(1)=1)
    (x=P_1P_2P_3ldots P_n(P为质数且次数都是1)),(μ(x)=(-1)^n)
    对于其他情况(μ(x)=0)
    显然(μ)是一个积性函数,我们在计算时一般用筛素数的方法进行预处理(就像你线性求欧拉函数一样)

    若有(f(x)=sum_{d|x}g(d))
    那么(g(x)=sum_{d|x}μ(frac{x}{d})f(d))
    这就是莫比乌斯反演定理。
    当然,这还有一种形式(其实第二种用得更多,但不好导入)
    若有(f(x)=sum_{x|d}g(d))
    那么(g(x)=sum_{x|d}μ(frac{d}{x})f(d))

    证明一下形式1(第二种依此类推即可)
    ps:为了看着舒服,将所有(d)替换成(i)
    (f(x)=sum_{i|x}g(i))
    (g(x)=sum_{i|x}μ(frac{x}{i})f(i))
    (g(x))带入(f(x))

    [f(x)=sum_{i|x}sum_{j|i}μ(frac{i}{j})f(j) ]

    因为(j|i)(i|x),那么肯定有 (j|x)(frac{i}{j}|frac{x}{j})

    [f(x)=sum_{j|x}f(j)sum_{frac{i}{j}|frac{x}{j}}μ(frac{i}{j}) ]

    看着很不爽,把(frac{i}{j})替换成(i)

    [f(x)=sum_{j|x}f(j)sum_{i|frac{x}{j}}μ(i) ]

    先设(h(x)=sum_{i|x}μ(i))

    [f(x)=sum_{j|x}f(j)h(frac{x}{j}) ]

    考虑(h(x))怎么求
    显然(h(1)=1)
    (x eq 1)
    (x=P_1^{a_1}P_2^{a_2}...P_n^{a_n},P_k为互不相同的质数)
    那么(i=P_1^{b_1}P_2^{b_2}...P_n^{b_n},)任意(b_kleq a_k)
    根据莫比乌斯函数的定义,若有任意一个(b_kgeq 2)
    那么(μ(i)=0),对结果没有贡献;
    若所有(b_kleq 1),
    对于(b_1)来说(任意一个(b_k)都可以,这里例举(b_1)),在其他位不变的情况下
    根据莫比乌斯函数的定义
    (b_1)(0)或者为(1)的答案一个是(1),另一个就是(-1)
    加起来就是(0)了,所以(b_1=1)的所有情况加上(b_1=0)的结果为(0)
    (b_1geq 2)时,(μ(i)=0)
    所以(h(x)=0)
    所有当且仅当(x=1)(h(x)=1),否则(h(x)=0)
    (h(x))往上代,就会愉快的发现等式成立了。

    剩下的就是灵活运用啦

  • 相关阅读:
    youtube-VisualSfM and MeshLab workflow video-meshlab part integration
    testing_lab1
    homework2-st
    homework1-spm
    homework1-st
    just one last blog
    week 10
    week 9
    week 8
    课后题7
  • 原文地址:https://www.cnblogs.com/ljq-despair/p/8682813.html
Copyright © 2011-2022 走看看