• 论文暂存地


    不好意思可能骗访问量了

    贝尔级数在积性函数求和中的应用

    作者:


    序言:

    本文首先介绍了贝尔级数,随后引入一种特殊的筛法,并简单阐述了筛法的优劣,引入前文有力武器解决问题。给出了积性函数在低于线性复杂度下求和的通用方法。


    相关符号和约定:

    (cdot)表示函数点乘,(*)表示迪利克雷卷积。(p)无特殊声明均表示质数。([])为艾弗森符号。

    贝尔级数


    定义:

    (f)在模(p)意义下的贝尔级数:(f_p(x)=sum_{0leq i} f(p^i)x^i)


    定理1:

    (f)是完全积性函数则有:(f_p(x)=sum_{0leq i} f(p)^ix^i)

    证明:

    根据等比数列求和公式可得(f_p(x)=frac{1}{1-f(p)x})

    定理2:

    ((f* g)_p(x)=f_p(x)g_p(x))

    证明:

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

    ((f* g)(p^n)=sum_{i=0}^n f(p^i)g(p^{n-i}))

    ((f* g)_p(x)=sum_{0leq i} sum_{j=0}^{i} f_p(x)[j]g_p(x)[i-j]) (此处([])指多项式项数)

    $(f* g)_p(x)=f_p(x)g_p(x)


    定理3:

    对于两个积性函数(f(x),g(x)),如果有(f_p(x)=g_p(x)) ,那么(f(x)=g(x))

    证明:

    (forall x=prod p_i^{a_i},f(x)=prod f(p_{i}^{a_i})=prod f_{p_i}(x)[a_i]=prod g_{p_i}(x)[a_i]=g(x))


    几个常见积性函数的贝尔级数:

    首先写出常见的函数:

    1. (e(x)=[x=1])
    2. (1(x)=1)
    3. (ID(x)=x)
    4. (ID_k(x)=x^k)
    5. (mu(x)) 为莫比乌斯函数。
    6. (phi(x)) 为数论欧拉函数。
    7. (sigma_k(n)=sum_{d|n} d^k)

    根据函数定义可得:(e_p(x)=1),(1_p(x)=frac{1}{1-x})


    函数(ID,ID_k)为完全积性,根据定理1可得:

    (ID_p(x)=frac{1}{1-px})((ID_k)_p(x)=frac{1}{1-p^kx})


    考虑从定义方向入手。

    (mu(x))有对于任意(k>2,mu(p^k)=0)

    因此只有两项有非零系数,

    (mu_p(x)=1-x,mu^2(x)=1+x,(IDcdot mu)_p(x)=1-px)


    因为(phi=mu* ID,d=1*1,s=1*id,sigma_k(n)=1*ID_k), 根据定理2:

    (phi_p(x)=frac{1-x}{1-px}),(d_p(x)=frac{1}{1-2x-x^2}),(s_p(x)=frac{1}{1-x-px+px^2}),((sigma_k)_p(x)=frac{1}{(1-p^kx)(1-x)})


    引入一个少见的函数(lambda(x)) (刘维尔函数)

    定义:(for x=prod p_i^{a_i} , sum a_i=z, lambda(x)=(-1)^z)

    易得此函数完全积性,带入公式有:(lambda_p(x)=frac{1}{1+x})


    此处证明一个不在下文提及得定理,故不作编号。

    如果一个积性函数(f)和任何算数函数(g)满足(f(p^{n+1})=f(p)f(p^n)-g(p)f(p^{n-1})) 对于所有的(p)(ngeq 1)

    那么有(f_p(x)=frac{1}{1-f(p)x+g(p)x^2})

    证明:

    发现贝尔级数的本质是形式幂级数,于是借鉴形式幂级数解决问题时的思路。

    用次数平移对齐相减的方式,补齐缺失的0次项,可得:

    (f_p(x)=f(p)f_p(x)x-g(x)f_p(x)x^2+1)

    移项可得上式,有关运算的合法性请查阅形式幂级数相关论文。

    虽然这个定理不会在下文出现,但是它提示了我们其形式幂级数的本质。


    此处引入一个函数,下文仍不会提及。

    定义(mu_k(n)=sum_{d^k|n} mu_{k-1}(frac{n}{d^k})mu_{k-1}(frac{n}{d}))

    ((mu_k)_p(x)=frac{1-2x^k+x^{k+1}}{1-x})

    证明:

    使用数学归纳法,可以得到这个序列实际上是(+1,-1)交替的序列。

    上式所对应的形式幂级数即为交替序列。

    这个问题提示我们,当套路化的过程无法解决问题时,可以试图从定义入手。


    杜教筛

    上文有提到特殊的筛法,即使本文的第二大标题杜教筛。愧于作者能力不足,不明其真实名称,暂将其称为杜教筛。下文讲讲述这种筛法。

    杜教筛是用于解决(s(n)=sum_{i=1}^n f(i)) ,其中 (f(i)) 为积性函数。

    其流程如下:

    1. 找到一个容易求前缀和的积性函数(g(x))
    2. (sum_{i=1}^n (f*g)=sum_{d=1}^n g(d)s(frac{n}{d})=sum_{i=1}^n h(i))
    3. (g(1)s(n)=sum_{i=1}^n h(i)-sum_{i=2}^ng(i)s(frac{n}{d}))
    4. 注意到(frac{n}{d})的数量不会很多,于是按其分段,递归子问题解决。

    我们注意到,想让上述式子复杂度低于线性,应当有在(O(1))时间内求出(g(x),h(x))前缀和的方法。这要求(g(x))的函数非常不错。这也是杜教筛应用方面的缺点。

    我们先假设上述性质满足,计算一下杜教筛的复杂度。

    抽象出复杂度模型:(T(n)=sqrt n+sum_{i=1}^{sqrt n}(T(i)+T(frac{n}{i})))

    展开,因为高阶小量不影响渐进复杂度,可看作(T(n)=sum_{i=1}^{sqrt{n}}(sqrt i+sqrt{frac{n}{i}}))

    上式渐进于(T(n)=sum_{i=1}^{sqrt{n}}sqrt{frac{n}{i}})

    用积分代替求和,(T(n)=int_{i=1}^n sqrt{frac{n}{i}}=O(n^{frac{3}{4}}))

    为严谨起见,带回高阶小量,发现均不超过此范围。既不做预处理的杜教筛复杂度为(O(n^{frac{3}{4}}))

    实际上,预处理可以得到更好的复杂度。但鉴于倾向于本文论调,不做应用方面的更多介绍。

    杜教筛的优点也展现在复杂度证明中,其求和形式道出了其具有在嵌套下复杂度不变的性质。因此一个复杂的积性函数可以分解成多个易求和的积性函数。

    解决上文留下的问题,想要构造一个合适的(g(x))是不容易的。但是根据定理三,贝尔级数和迪利克雷卷积之间建立了良好的关系。于是将不熟悉的积性函数求和问题变为了更容易处理的卷积问题。


    应用实例:


    示例1:

    Ques:求(sum_{i=1}^n iphi(i))

    首先通过等比数列求和的方式先得到一个 (icdot phi)的贝尔级数((icdot phi)_p(x)=frac{1-px}{1-p^2x})

    注意到((ID^2)_p(x)=frac{1}{1-p^2x})的前缀和显然很好求,又有(ID_p(x)=frac{1}{1-px}),于是将其和(ID)做卷积。


    示例2:

    Ques:求(sum_{i=1}^n sum_{d|i} mu^2(d)frac{n}{d}mu(frac{n}{d}))

    首先容易发现这个求前缀和的函数实际上是(mu^2*(IDcdotmu))

    写出贝尔级数((1+x)(1-px)) ,很套路的发现卷(ID)可得(mu^2)

    (mu^2)不难求,按照因数个数进行容斥:

    (sum_{i=1}^n mu^2(i)=sum_{ileqsqrt n} lfloorfrac{n}{i^2} floormu(i))

    杜教筛即可。


    示例3:

    Ques:(f(1)=1,f(p^c)=p^c+(-1)^c),且(f)为积性函数。

    直觉告诉我们(f_p(x)=ID_p(x)+lambda_p(x)),但第一项不太对,修一下变成

    (f_p(x)=ID_p(x)+lambda_p(x)-e_p(x))

    贝尔级数:(frac{1-px^2}{(1-px)(1+x)})

    观察可见与示例1的贝尔级数一模一样?迪利克雷卷积之后进行杜教筛。

  • 相关阅读:
    iOS企业证书开发的APP证书过期时间监控
    事件冒泡,事件捕获
    倒计时
    获取多个div,点击第几个,显示第几个
    js继承
    javascript基础知识总结
    大型web系统高效应用方法(转载)
    数据库(内联,外联,交叉联)
    .net零碎基础知识点不完全小结
    C#的内存管理:堆、栈、托管堆与指针(转)
  • 原文地址:https://www.cnblogs.com/Atoner/p/13302313.html
Copyright © 2020-2023  润新知