狄利克雷卷积总结

2024-02-02 03:38
文章标签 总结 卷积 狄利克

本文主要是介绍狄利克雷卷积总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

狄利克雷卷积

约定

n = p 1 a 1 p 2 a 2 ⋯ p r a r \ n=p_{1}^{a_{1}} p_{2}^{a_{2}} \cdots p_{r}^{a_{r}}  n=p1a1p2a2prar

a ∣ b \ a \mid b  ab a \ a  a整除 b \ b  b

a ∤ b \ a \nmid b  ab a \ a  a不整除 b \ b  b

a k ∥ b \ a^{k} \parallel b  akb a k ∣ b \ a^{k} \mid b  akb a k + 1 ∤ b \ a^{k+1} \nmid b  ak+1b

( a , b ) \ (a,b)  (a,b)最大公约数

[ a , b ] \ [a,b]  [a,b]最小公倍数

定义

h ( n ) = ∑ d ∣ n f ( n ) g ( n d ) = ∑ d 1 d 2 = n f ( d 1 ) g ( d 2 ) h(n)= \sum_{d \mid n} f(n) g(\frac{n}{d})=\sum_{d_{1} d_{2} =n} f(d_{1})g(d_{2}) h(n)=dnf(n)g(dn)=d1d2=nf(d1)g(d2)

也可写作:

h = f ∘ g h=f \circ g h=fg

这相当于一种运算。

性质

结合律

( f ∘ g ) ∘ h = f ∘ ( g ∘ h ) (f \circ g) \circ h=f \circ(g \circ h) (fg)h=f(gh)

证明

        ( f ∘ g ) ∘ h = ∑ d 1 ∣ n { ∑ d 2 ∣ d 1 f ( d 2 ) g ( d 1 d 2 ) } g ( n d 1 )   = ∑ d 1 d 2 d 3 = n ( f ( d 1 ) g ( d 2 ) ) g ( d 3 )   = ∑ d 1 d 2 d 3 = n f ( d 1 ) ( g ( d 2 ) g ( d 3 ) )   = f ∘ ( g ∘ h )   \begin{array}{crl} & &\,\,\,\,\,\,\,(f \circ g) \circ h\\& &=\sum_{d_{1} \mid n}\{ \sum_{d_{2} \mid d_{1}}f(d_{2})g(\frac{d_{1}}{d_{2}})\} g(\frac{n}{d_{1}}) \\\,\\ & &=\sum_{d_{1} d_{2} d_{3}= n} (f(d_{1})g(d_{2}))g(d_{3}) \\\,\\ & &=\sum_{d_{1} d_{2} d_{3}= n} f(d_{1})(g(d_{2})g(d_{3}))\\\,\\ & &=f \circ(g \circ h)\\\,\\ \end{array} (fg)h=d1n{d2d1f(d2)g(d2d1)}g(d1n)=d1d2d3=n(f(d1)g(d2))g(d3)=d1d2d3=nf(d1)(g(d2)g(d3))=f(gh)
证毕

交换律

f ∘ g = g ∘ f f \circ g=g \circ f fg=gf

证明

f ∘ g = ∑ d 1 d 2 = n f ( d 1 ) g ( d 2 ) = ∑ d 1 d 2 = n g ( d 1 ) f ( d 2 ) = g ∘ f f \circ g=\sum_{d_{1} d_{2} =n} f(d_{1})g(d_{2})=\sum_{d_{1} d_{2} =n} g(d_{1})f(d_{2})=g \circ f fg=d1d2=nf(d1)g(d2)=d1d2=ng(d1)f(d2)=gf

证毕

逆元

对于 f \ f  f存在 g \ g  g使
f ∘ g = ϵ ( n ) f \circ g = \epsilon(n) fg=ϵ(n)
其中
ϵ ( n ) = [ n = 1 ] \epsilon(n)= [n=1] ϵ(n)=[n=1]
证明

g ( n ) = 1 f ( 1 ) ( [ n = 1 ] − ∑ i ∣ n , i ≠ n f ( i ) g ( n i ) ) g(n)=\frac{1}{f(1)} \left( \left[ n=1 \right] - \sum_{i \mid n,i \neq n}f(i) g(\frac{n}{i}) \right) g(n)=f(1)1[n=1]in,i̸=nf(i)g(in)

如此一来

∑ d ∣ n f ( d ) g ( n d ) = f ( 1 ) g ( n ) − ∑ d ∣ n , d ≠ 1 f ( d ) g ( n d ) = [ n = 1 ] \sum_{d \mid n}f(d)g(\frac{n}{d})=f(1)g(n)-\sum_{d \mid n,d \neq 1}f(d)g(\frac{n}{d})=\left[ n=1 \right] dnf(d)g(dn)=f(1)g(n)dn,d̸=1f(d)g(dn)=[n=1]

证毕

分配率

f ∘ ( g + h ) = f ∘ g + f ∘ h f \circ (g + h)=f \circ g+f \circ h f(g+h)=fg+fh

证明

f ∘ ( g + h ) = ∑ d 1 d 2 = n f ( d 1 ) ( g ( d 2 ) + h ( d 2 ) ) = ∑ d 1 d 2 = n f ( d 1 ) g ( d 2 ) + ∑ d 1 d 2 = n f ( d 1 ) h ( d 2 ) = f ∘ g + f ∘ h f \circ (g + h)=\sum_{d_{1} d_{2} =n} f(d_{1})(g(d_{2})+h(d_{2}))=\sum_{d_{1} d_{2} =n} f(d_{1})g(d_{2})+\sum_{d_{1} d_{2} =n} f(d_{1})h(d_{2})=f \circ g+f \circ h f(g+h)=d1d2=nf(d1)(g(d2)+h(d2))=d1d2=nf(d1)g(d2)+d1d2=nf(d1)h(d2)=fg+fh

数乘结合律

( s ⋅ f ) ∘ g = s ⋅ ( f ∘ g ) (s \cdot f) \circ g=s \cdot (f \circ g) (sf)g=s(fg)

证明

( s ⋅ f ) ∘ g = ∑ d 1 d 2 = n ( s ⋅ f ( d 1 ) ) g ( d 2 ) = s ∑ d 1 d 2 = n f ( d 1 ) g ( d 2 ) (s \cdot f) \circ g=\sum_{d_{1} d_{2} =n} (s\cdot f(d_{1}))g(d_{2})=s\sum_{d_{1} d_{2} =n}f(d_{1})g(d_{2}) (sf)g=d1d2=n(sf(d1))g(d2)=sd1d2=nf(d1)g(d2)

证毕

积性的传递性

f ( n ) , g ( n ) \ f(n),g(n)  f(n),g(n)为积性 h = f ∘ g \ h=f \circ g  h=fg也是积性的

        h ( n m )   = ∑ d ∣ n m f ( d ) g ( n m d )   = ∑ a ∣ n , b ∣ m f ( a b ) g ( n m a b )   = ∑ a ∣ n , b ∣ m f ( a ) g ( n a ) f ( b ) g ( m b )   = { ∑ a ∣ n f ( a ) g ( n a ) } { ∑ b ∣ m f ( b ) g ( m b ) }   = h ( n ) h ( m ) \begin{array}{rcl} & &\,\,\,\,\,\,\,h(nm)\\\,\\ & &=\sum_{d \mid nm} f(d) g(\frac{nm}{d}) \\\,\\ & &=\sum_{a \mid n,b \mid m} f(ab)g(\frac{nm}{ab}) \\\,\\ & &=\sum_{a \mid n,b \mid m} f(a)g(\frac{n}{a}) f(b)g(\frac{m}{b}) \\\,\\ & &=\{ \sum_{a \mid n} f(a)g(\frac{n}{a}) \}\{ \sum_{b \mid m} f(b)g(\frac{m}{b}) \} \\\,\\ & &=h(n)h(m) \end{array} h(nm)=dnmf(d)g(dnm)=an,bmf(ab)g(abnm)=an,bmf(a)g(an)f(b)g(bm)={anf(a)g(an)}{bmf(b)g(bm)}=h(n)h(m)

证毕

f \ f  f积性则 f − 1 \ f^{-1}  f1积性

证明

n m &gt; 1 \ nm&gt;1  nm>1时有 n ′ m ′ &lt; n m , g ( n ′ m ′ ) = g ( n ′ ) g ( m ′ ) \ n&#x27;m&#x27; &lt; nm,g(n&#x27;m&#x27;)=g(n&#x27;)g(m&#x27;)  nm<nm,g(nm)=g(n)g(m)成立
f ( n ) \ f(n)  f(n)的逆元 g ( n ) = 1 f ( 1 ) ( [ n = 1 ] − ∑ i ∣ n , i ≠ n f ( i ) g ( n i ) ) \ g(n)=\frac{1}{f(1)} \left( \left[ n=1 \right] - \sum_{i \mid n,i \neq n}f(i) g(\frac{n}{i}) \right)  g(n)=f(1)1([n=1]in,i̸=nf(i)g(in))
&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace; g ( n m ) &ThinSpace; = − ∑ d ∣ n m , d ≠ 1 f ( d ) g ( n m d ) &ThinSpace; = − ∑ a ∣ n , b ∣ m , a b ≠ 1 f ( a b ) g ( n m a b ) &ThinSpace; = f ( 1 ) f ( 1 ) g ( n ) g ( m ) − ∑ a ∣ n , b ∣ m , a b ≠ 1 f ( a ) f ( b ) g ( n a ) g ( m b ) &ThinSpace; = g ( n ) g ( m ) − { ∑ a ∣ n , a ≠ 1 f ( a ) g ( n a ) } { ∑ b ∣ m , b ≠ 1 f ( b ) g ( m b ) } &ThinSpace; = g ( n ) g ( m ) − ϵ ( n ) ϵ ( m ) &ThinSpace; = g ( n ) g ( m ) \begin{array}{rcl} &amp; &amp;\,\,\,\,\,\,\,g(nm) \\\,\\ &amp; &amp;=- \sum_{d \mid nm,d \neq 1}f(d)g(\frac{nm}{d}) \\\,\\ &amp; &amp;=- \sum_{a \mid n,b \mid m,ab \neq 1} f(ab) g(\frac{nm}{ab}) \\\,\\ &amp; &amp;=f(1)f(1)g(n)g(m)- \sum_{a \mid n,b \mid m,ab \neq 1} f(a) f(b) g(\frac{n}{a}) g(\frac{m}{b}) \\\,\\ &amp; &amp;=g(n)g(m)- \{ \sum_{a \mid n,a \neq 1} f(a) g(\frac{n}{a}) \} \{ \sum_{b \mid m,b \neq 1} f(b) g(\frac{m}{b}) \}\\\,\\ &amp; &amp;=g(n)g(m)-\epsilon(n) \epsilon(m) \\\,\\ &amp; &amp;=g(n)g(m) \end{array} g(nm)=dnm,d̸=1f(d)g(dnm)=an,bm,ab̸=1f(ab)g(abnm)=f(1)f(1)g(n)g(m)an,bm,ab̸=1f(a)f(b)g(an)g(bm)=g(n)g(m){an,a̸=1f(a)g(an)}{bm,b̸=1f(b)g(bm)}=g(n)g(m)ϵ(n)ϵ(m)=g(n)g(m)

证毕

应用

我们总可以证明求一个狄利克雷卷积的复杂度是 O ( n ln ⁡ n ) \ O(n \ln n)  O(nlnn)的。

这篇关于狄利克雷卷积总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/669358

相关文章

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的