莫比烏斯反演個人小結


莫比烏斯反演個人小結

推薦

1.淺談一類積性函數的前綴和(http://blog.csdn.net/skywalkert/article/details/50500009)
2.《賈志鵬線性篩》
3.《炫酷反演魔術》

這篇博客主要是學習了以上的東西的個人總結,如有錯誤請告知本人
假裝大家現在沒有看過上面那篇博客,先介紹一下

積性函數的定義

1.若f(n)的定義域為正整數域,值域為復數,即\(f:{Z}^{+}\rightarrow C\),則稱f(n)為數論函數。
2.若f(n)為數論函數,且f(1)=1,對於互質的正整數p,q有f(p⋅q)=f(p)⋅f(q),則稱其為積性函數。
3.若f(n)為積性函數,且對於任意正整數p,q都有f(p⋅q)=f(p)⋅f(q),則稱其為完全積性函數。

一些函數

1.下面的式子中\(d|n\)表示d是n的因子;\([command]\)為if,command成立為 1,否則為0;\((a,b)\)表示a,b的gcd;\(\lfloor \frac{n}{i}\rfloor\)表示整除
2.除數函數\({\sigma} _ {k}(n)=\sum _ {d|n}^{}{d}^{k}\),表示n的約數的k次冪和
3.約數個數函數\(\tau (n)={\sigma } _ {0}(n)=\sum_ {d|n}^{}1\),表示n的約數個數,一般也寫為d(n)。
4.約數和函數\(\sigma (n)={\sigma } _ {1}(n)=\sum_ {d|n}^{}d\),表示n的約數之和。
5.歐拉函數\(\varphi (n)=\sum_ {i=1}^{n}[(i,n)=1]\cdot 1\),表示不大於n且與n互質的正整數個數

-歐拉函數是積性函數,不是完全積性函數
-如果將n質數分解,\(n=\prod_ {i=1}^{t}{{p} _ {i}}^{{k} _ {i}}\)
-\(\varphi (n)=n\cdot\prod_ {i=1}^{t}(1-\frac{1}{{p} _ {i}})\)
-根據以上得到\(\varphi(1)=1,\varphi(p)=p-1,\varphi({p}^{k})={p}^{k-1}\cdot(p-1)\)
-\(\varphi(n)\)為偶數,當n>2時
-歐拉公式:\({n}^{\varphi(m)}=1\quad(mod\,m)\),當(n,m)=1時
-一個公式:\({n}^{x}={n}^{x\%\varphi(m)+\varphi(m)}\quad(mod\,m)\),唯一條件是\(x\geq\varphi(m)\)

6.莫比烏斯函數\(\mu(n)\),在狄利克雷卷積的乘法中與恆等函數互為逆元,\(\mu(1)=1\),對於無平方因子數\(n=\prod_ {i=1}^{t}{p} _ {i}\)\(\mu(n)={(-1)}^{t}\),對於有平方因子數n有\(\mu(n)=0\)
7.元函數\(e(n)=[n=1]\),狄利克雷卷積的乘法單位元,完全積性。
8.恆等函數\(I(n)=1\),完全積性。
9.單位函數\(id(n)=n\),完全積性。
10.冪函數\({id}^{k}(n)=n^k\),完全積性。

狄利克雷卷積(Dirichlet product)

數論函數f和g狄利克雷卷積定義為\(( f \ast g)(n)=\sum_ {d|n}f(d)\cdot g(\frac {n} {d})\),狄利克雷卷積滿足交換律、結合律,對加法滿足分配律
1.\(f\ast e=f\)\(e\)是單位元
2.\(I\ast \mu=e\)
3.\(I\ast \varphi=id\)
4.\((id\cdot\varphi)\ast id=id^2\)
5.如果f和g是積性,那么\(f\ast g\)是積性的。對於\(f(n)=\sum_ {d|n}g(d)\),只要一者積性,兩者都積性。但反演式不要求f或g積性
6.根據式2,\(e\)是卷積單位元,所以\(I\)\(\mu\)互為逆元
7.那么
\(g=f\ast I\quad g\ast \mu=f\)
這就是莫比烏斯反演

給出一些反演式和代碼

1.\(f(n)=\sum_ {d|n}g(d)\)
\(\quad g(n)=\sum_ {d|n}\mu(n/d)f(d)=\sum_ {d|n}\mu(d)f(n/d)\)
2.\(f(n)=\sum_ {n|d}g(d)\)
\(\quad g(n)=\sum_ {n|d}\mu(d/n)f(d)\)
3.\(f(n)=\sum_ {d\geq1}g(d)\)
\(\quad g(n)=\sum_ {d\geq1}\mu(d/n)f(d)\)
4.\(f(n)=\sum_ {k=0}^{n}C(n,k)g(k)\)
\(\quad g(n)=\sum_ {k=0}^{n}(-1)^{n+k}C(n,k)f(k)\)
5.\(f(n)=\sum_ {k=n}^{\infty}C(k,n)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(k,n)f(k)\)
6.\(f(n)=\sum_ {k=0}^{n}C(n+p,k+p)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(n+p,k+p)f(k)\)
7.\(f(n)=\sum_ {k=n}^{\infty}C(n+p,k+p)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(n+p,k+p)f(k)\)
8.\(f(s)=\sum_ {t\subseteq s}g(t)\)
\(\quad g(s)=\sum_ {t\subseteq s}(-1)^{|s|-|t|}f(t)\)
9.\(f(n)=\sum_ {k=1}^{n}t(k)g(\lfloor \frac{n}{k}\rfloor)\)
\(\quad g(n)=\sum_ {k=1}^{n}\mu(k)t(k)f(\lfloor \frac{n}{k}\rfloor)\)推廣莫比烏斯,條件:f,g數論函數,t完全積性,t(1)=1

******************************已知f[n]=(求和d|n)g(d),求g nlogn
for (int i = 1; i <= n; ++i)
  for (int j = i + i; j <= n; j += i)		
    f[j] -= f[i];

*****************************f[n]=(求和d|n)g(d),已知g,求f
for (int i = n; i >= 1; --i)
  for (int j = i + i; j <= n; j += i)		
    f[j] += f[i];

******************************已知f[n]=(求和n|d)g(d),求g nlogn
for (int i = n; i >= 1; --i)
  for (int j = i + i; j <= n; j += i)		
    f[i] -= f[j];

*****************************f[n]=(求和n|d)g(d),已知g,求f
for (int i = 1; i <= n; ++i)
  for (int j = i + i; j <= n; j += i)		
    f[i] += f[j];
**********************************
f[s]存原來的元素,之后f[s]存子集所有元素和
for (int i = 0; i < n; i++)
    for (int s = 0; s < (1 << n); s++)
        if (s >> i & 1)
            f[s] += f[s ^ 1 << i];


***************************************
f[s]存子集所有元素和,之后f[s]存原來的元素

for (int i = 0; i < n; i++)
    for (int s = 0; s < (1 << n); s++)
        if (s >> i & 1)
            f[s] -= f[s ^ 1 << i];
******************************************
數論卷積nlogn	算1-n的h[x]=(求和d|x)(f[d]*g[x/d])	已知f,g的1-n

int f[MAXN],g[MAXN],h[MAXN]={0};
void calc(int n)
{    
    for (int i=1;i*i<=n;i++)
        for (int j=i;i*j<=n;j++)
            if(j==i)h[i*j]+=f[i]*g[i];
            else h[i*j]+=f[i]*g[j]+f[j]*g[i];
}    

一些有用的式子

1.\(\sum_ {i=1}^{n}{\sigma} _ {k}(i)=\sum_ {i=1}^{n}\sum_ {d|i}d^k=\sum_ {d=1}^{n}d^k\lfloor\frac{n}{d}\rfloor\)
2.\(\sum_ {d=1}^{n}d\lfloor\frac{n}{d}\rfloor=\sum_ {d=1}^{n}\frac{\lfloor\frac{n}{d}\rfloor(\lfloor\frac{n}{d}\rfloor+1)}{2}\)
3.\([n=0]=\sum_ {k=0}^{n}(-1)^k C(n,k)\)
4.\([n=1]=\sum_ {d|n}\mu(d)\)
5.\(n=\sum_ {d|n}\varphi(d)\)
6.\([s=\emptyset]=\sum_ {t\subseteq s}(-1)^{|t|}\)
7.\(\varphi(n)=\sum_ {d|n}\mu(d)\frac{n}{d}\)
8.\(\frac{\varphi(n)}{n}=\sum_ {d|n}\frac{\mu(d)}{d}\)此式中為分數
9.\(\varphi(n)=\sum_ {i=1}^{n}[(n,i)=1]\)與n互質個數
10.\(\frac{n\varphi(n)+[n=1]}{2}=\sum_ {i=1}^{n}i\cdot[(n,i)=1]\)與n互質和
11.\(\sum_ {d|m}\varphi(d)n^{\frac{m}{d}}=0\quad(mod\,m)\)

一些技巧

1.我們有nlog子集求和的算法,那么我們如果想對父集求和的話怎么辦呢?

先取反賦值,那么就是子集求和了

2.常用的分解方法
\(n=\prod_ {i=1}^{t}{{p} _ {i}}^{{k} _ {i}}\)
對於積性函數f存在
\(g(n)=\sum_ {d|n}f(d)=\prod_ {i=1}^{t}(\sum_ {j=0}^{ki}f(p _ i^j))\)
如果f是完全積性函數的話還能進一步化簡

一些科技

從上面那篇博客中得知了求積性函數求前綴和的方法,但構造那個特定的函數一般人是想不出來的。前幾天突然看到了個式子:
\(h(n)=\sum_ {i=1}^{n} f(i)\)
$\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}h(\lfloor \frac{n}{i}\rfloor) \( \)\qquad\qquad\quad\ \ =h(n)+\sum_ {i=2}^{n}h(\lfloor \frac{n}{i}\rfloor)$

\[h(n)=\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}h(\lfloor \frac{n}{i}\rfloor) \]

根據上式就可以輕松求得歐拉函數\(\varphi\)和莫比烏斯函數\(\mu\)的前綴和

1.歐拉函數\(\varphi\),求它的前綴和函數\(\Phi (n)=\sum_{i=1}^{n}\varphi(i)\)
代入得\(\Phi (n)=\sum_ {i=1}^{n}\varphi(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}\Phi(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\varphi(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}\sum_ {d|i}\varphi(d)=\sum_ {i=1}^{n}i=\frac{n(n+1)}{2}\)
所以\(\Phi (n)=\frac{n(n+1)}{2}-\sum_ {i=2}^{n}\Phi(\lfloor \frac{n}{i}\rfloor)\)
此式可以在預處理\(n^{\frac{2}{3}}\)個數的前提下,迭代達到\(O(n^{\frac{2}{3}})\)的復雜度

2.同理,對於莫比烏斯函數\(\mu\)的前綴和函數\(M(n)=\sum_{i=1}^{n}\mu(i)\)
代入得\(M(n)=\sum_ {i=1}^{n}\mu(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}M(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\mu(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}\sum_ {d|i}\mu(d)=\sum_ {i=1}^{n}[i=1]=1\)
所以\(M (n)=1-\sum_ {i=2}^{n}M(\lfloor \frac{n}{i}\rfloor)\)
此式可以在預處理\(n^{\frac{2}{3}}\)個數的前提下,迭代達到\(O(n^{\frac{2}{3}})\)的復雜度

所以關鍵是化簡\(\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor\)


另一個式子
\(\sum_ {i=1}^{n}\sum_ {d|i}f(d)\lfloor \frac{i}{d}\rfloor=\sum_ {i=1}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)

\[h(n)=\sum_ {i=1}^{n}\sum_ {d|i}f(d)\lfloor \frac{i}{d}\rfloor-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor) \]

例子
函數\(f(n)=i\cdot\varphi(n)\),求它的前綴和函數\(h (n)=\sum_{i=1}^{n}i\cdot\varphi(i)\)
代入得\(h(n)=\sum_ {i=1}^{n}\sum_ {d|i}d\cdot\varphi(d)\lfloor \frac{i}{d}\rfloor-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\sum_ {d|i}d\cdot\varphi(d)\lfloor \frac{i}{d}\rfloor=\sum_ {i=1}^{n}i\cdot\sum_ {d|i}\varphi(d)=\sum_ {i=1}^{n}i^2=\frac{n(n+1)(2n+1)}{6}\)
所以\(h (n)=\frac{n(n+1)(2n+1)}{6}-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)
此式可以在預處理\(n^{\frac{2}{3}}\)個數的前提下,迭代達到\(O(n^{\frac{2}{3}})\)的復雜度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM