热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

莫比乌斯函数详解

在讲这个函数之前。最好先了解欧拉函数。我们用\记为整除。记得小学的时候整除和整除以的概念么?别混淆。2整除4记作2\4。欧拉函数用来表示。那么根据法里级数的展开(这个感觉和ACM关系不大

在讲这个函数之前。最好先了解欧拉函数。

我们用 \  记为整除。 记得小学的时候整除和整除以的概念么?别混淆。 2整除4 记作 2\4。

欧拉函数用来表示。

那么根据法里级数的展开(这个感觉和ACM关系不大就先不介绍了。大概讲的就是构造所有最简分数的一种树。而法里级数n定义分母<=n的最简分数。)

比如对于分母为12.

化简后:

分别为:

1/12  1/6    1/4   1/3   5/12   1/2   7/12   2/3   3/4   5/6   11/12 1/1

观察这些式子。你会发现分母都是能整除12的.也就是说分母为d。  d\m

分母为1的集合 1/1 

分母为2的集合 1/2

分母为3的集合 1/3  2/3

分母为4的集合 1/4  3/4

分母为6的集合 1/6  5/6

分母为12的集合 1/12 5/12 7/12 11/12

会发现对于每个m的除数(也就是分母啦)的集合的分子都是和分母是互素的。并且穷举了。

比如4   1 和 3 是和4互素的。

那么

1+1+2+2+2+4 = 12 (其实这里是废话!在推导中间就能得到了。因为我们列了12个分式嘛,重点在于是穷举了每个除数的互素数。)

不过我们可以从这得到一个和式:

重点在于这个形式的公式:

 

有一个结论:如果f(d) 让g(m)是积性函数。那么f(d) 是积性函数(这个结论很重要。)

同时如果我们能够证明这个结论的话。也可以通过这个结论去证明欧拉函数的积性。

因为根据上面我们推出的和式。对于欧拉函数的对应g(m)为m.m明显是积性的函数。

如果我们的结论成立。那么欧拉函数是积性的。(这里的积性不代表完全积性。我们知道欧拉函数的积性必须两个数互素的情况下才有。)

 

证明:

 因为g(m)为积性函数,所以有:

扩展左边:

扩展右边:

 

即可得:

如果进一步细分左边和右边。会发现左边是

若该等式对于任意m恒成立.那么

根据上面的等式的话就是一个项一个项对应起来。而从这也能看出其逆命题也是正确的。就是当f(d) 为积性函数的时候 g(m)也为积性函数。

在此,欧拉函数的积性就算证明成功了。

对于上述的研究似乎没有提到莫比乌斯函数。但是以上的研究是贯彻整个莫比乌斯函数的。包括其积性的证明。和反演。

思考一个这样的问题:

                 对比       

  欧拉函数是比较复杂的。而其对应的g(m) 是简单的。为m。

  我们是否可以通过g(m)的函数能够获得f(m)的函数呢?(这里f(m)自变量变成m了。不过小小思考后明显不用在意。)

  而我们有这样的一个反演原理

   

   其中莫比乌斯函数。

   

  莫比乌斯函数满足一个极其重要的性质。或者说是因为这个性质而定义了这个函数!

  

  其中 [m=1]代表m=1的时候为1. m不等于1的时候为0

  这个性质很神奇。但是却又不神奇。因为其实是认为构造出有这样的性质。使得莫比乌斯反演得以成立。

  但是我们要计算其反演后的结果。我们又不得不知道具体的的值如何。其值我们先放着。先证明反演:

  证明反演之前有两个步骤最好先需要有预备知识:

第一个:

  

  这个其实思考一下就知道了。我们不过就是把计算顺序发生了改变。

第二个:

  

  

  

  这个和式确实看起来复杂。而且我是直接搬其证明过程中遇到的这个和式。

不过我们从一个例子上去理解:

  对于m = 12来说:                                 

d 1 2 3 4 6 12
m/d 12 6 4 3 2 1
k 1 1 2 1 3 1 2 4 1 2 3 6 1 2 3 4 6 12

  μ(12)f(1)

  μ(6)f(1)+μ(6)f(2)

  μ(4)f(1)+      μ(4)f(3)

  μ(3)f(1)+μ(3)f(2)+      μ(3)f(4)

  μ(2)f(1)+μ(2)f(2)+μ(2)f(3)+      μ(2)f(6)

  μ(1)f(1)+μ(1)f(2)+μ(1)f(3)+μ(1)f(4)+μ(1)f(6)+μ(1)f(12)

+

----------------------------------------------------------------------------- 

                           明显的求这个式子之和。

我们的排列是以μ的自变量排列的。那假如按f的自变量(k)进行排列呢? 我们上面的式子竖着都已经对应好了。

不难得出下表:(不根据式子。直接跟上)      

d 12 12 6 12 4 12 6 3 12 6 4 2 12 6 4 2 1
k 12 6 4 3 2 1
m/d 1 1 2 1 3 1 2 4 1 2 3 6 1 2 3 4 6 12

细心对比上表:

d 1 2 3 4 6 12
m/d 12 6 4 3 2 1
k 1 1 2 1 3 1 2 4 1 2 3 6 1 2 3 4 6 12

 会发现有意思的是m/d和k换了个位置而已。其实这并不是巧合。但是这并不是重点。

我们要用一个式子描述出这种情形。其实我们不过是把式子处理成以k为规整的。

而描述成和式其实就是上述恒等式的右边:

值得注意的是 d 已经不是原来的d了。只是一个从1开始的循环量而已。一旦满足d\(m/k) 就有意义。所以我本来第2个表不想统计d的。不过最后还是统计了。出于容易研究吧。

因为我们还得一点细节才能解释这个恒等式右边的表达式。

我们有:

k\d

d\m

所以对于指定的k,d的集合为k的倍数。

设l = m/d. (这里的l就是上述表达式的d!)

也就是我们要证明指定k 那么l的集合为 l\(m/k)

l = m/nk. n为整数。 (m/k) / l  = n 所以l\(m/k).得证。

也许我的证明有点繁琐。如果你一眼看出来。那也没事。

其实就是寻找指定k  m/d应该满足怎么样的条件。 其中k\d且d\m。

 

有了这2个恒等式我们可以接下来证明莫比乌斯反演:

证明过程:

  

 PS:

其反证类似的。具体数学中的习题啊。也当作大家的习题好了。

就是第二个恒等式。具体数学中是分了2步。那个用拉斐尔证明的4.9虽然说原理并不难。但是具体数学上用得简直有点出神入化让我有点摸不着头脑。

之后一步是利用第一个恒等式然后证出上述的第二个恒等式。

 

让我们看看 具体是一个什么样的函数。

首先:[m=1]这个函数是积性的。所以μ(d)这个函数必然也是积性的。利用我们一开始证明的那个结论。

 也就是说要求μ(m).我们只要计算μ(p^k). 根据算术基本定理理所当然的。且p代表素数。

根据其性质:

 

m = p^k.

那么有 μ(1)+ μ(p^1) + μ(p^2) + μ(p^3)+...μ(p^k) = [p^k=1].

假如p = 1.(其实1不是素数,我们这样的假设是不成立的,这里只是为了运算出μ(1))

那么。 μ(1)= 1.

假如p != 1.

那么 μ(1)+ μ(p^1) + μ(p^2) + μ(p^3)+...μ(p^k) = 0.

当k=1.

μ(1)+ μ(p^1) = 0 

可知μ(p^1)=μ(p)= -1.

当k=2.

 μ(1)+ μ(p^1) + μ(p^2) = 0 .

 即μ(p^2)  = 0

同理。

μ(p^(3~k)) = 0

也就是说。

μ(1) = 1 , μ(p) = -1  , μ(p^k)  = 0  (k>=2)

 

推广到m:(m为任意实数)

 

 

下面0的情况。是存在p^2整除m.也就是m存在p^2因子的时候。

 注意:μ(1) = 1

好了。反演和莫比乌斯的函数我们都理解透彻了。具体应用可以看这里


推荐阅读
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 本文介绍了如何通过安装 rpm 包来使用 resize2fs 和 ext2online 工具进行系统文件的扩容。提供了详细的步骤和注意事项。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 自Emacs 24.1版本起,Emacs引入了ELPA(Emacs Lisp Package Archive)作为其内置的包管理系统,用于管理和安装来自互联网的扩展插件。本文将指导您如何配置Emacs以使用MELPA这一知名且丰富的第三方插件源。 ... [详细]
  • 本文详细介绍了在天正CAD中如何调整和修改尺寸标注的方法,包括改变标注数字大小、修改文字样式、调整标注比例等实用技巧。 ... [详细]
  • 炫龙T50游戏本深度评测:值得入手吗?
    2017年初,随着英特尔第七代酷睿处理器和英伟达GTX 1050/1050 Ti新平台的推出,各大OEM厂商迅速更新了自家产品线。炫龙也不例外,推出了搭载最新硬件的T50游戏本。本文将对这款产品进行全面评测。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • C# 实现可浮动工具栏功能
    本文介绍如何在 C# 中实现一个可浮动的工具栏,即工具栏可以从其初始位置拖出,并且可以重新拖回原位。通过创建一个新的窗口作为工具栏的容器,并利用 .NET Framework 提供的 ToolStrip 控件,可以轻松实现这一功能。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本章介绍了TCP/IP协议族中的链路层,其主要功能是为IP模块发送和接收IP数据报。链路层还支持一些辅助性协议,如ARP。此外,本文详细探讨了不同类型的链路层技术及其应用。 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 本文详细介绍了视高视频会议系统的音频、数据协作、会议交互以及协同办公功能,并探讨了其在实际应用中的优势。系统支持多种语音编解码技术,提供稳定的语音通信;数据协作功能包括远程电子白板、屏幕共享等;会议交互设计人性化,提升会议效率;协同办公模块则进一步增强了系统的实用性和扩展性。 ... [详细]
author-avatar
余陈辉syllabear
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有