关于广义莫比乌斯反演的思考
生活随笔
收集整理的這篇文章主要介紹了
关于广义莫比乌斯反演的思考
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文總結關于廣義莫比烏斯反演的一些思想。
1. 廣義莫比烏斯反演
為區別平時所說的整數上定義整除關系后,在dirichlet卷積下的莫比烏斯反演,這里更關心其一般化,所以稱之為廣義莫比烏斯反演。
在Richard A. Brualdi所著的Introductory Combinatorics (版本不限,中文名為組合數學)中The Inclusion-Exclusion Principle and Applications(容斥原理及其應用)一章,最后一節Mobius Inversion(莫比烏斯反演)所介紹的莫比烏斯反演即為本文所提到的廣義莫比烏斯反演。
簡單地,不嚴格地說:如果有 f = s * g, s * t = 1,那么有g = t * f。當x是整數上集上帶整除關系的偏集上的示性函數:a | b 時 s(a, b) = 1,否則為0,x這個函數通常記為zeta。相應的,由該偏序關系決定的卷積正是Dirichlet卷積。s關于delta(在本文中寫作1,請自行區分整數1和delta)的逆就是莫比烏斯函數t,通常記為mu。
問題:通常遇到的mu是一個參數,而上述的s是兩個參數,進一步可以猜測t也是兩個參數。是的,上述函數都是兩個參數,其中卷積的定義如下:f(x, y) = s * g = sum(s(x, z)g(z, y),x <= z and z <= y).令x = 1,<= 關系為整除關系時f(y) = sum(s(1, z)g(z, y), x | z and z | y)。進一步,令ss = s(z/1),gg=g(y/z)得到f(y) = sum(ss(z)gg(y/z), x | z and z | y)??梢宰C明,mu(a, b) = mu(b/a),正好和前面的解釋對應。進而解釋了為什么在整數,整除關系上莫比烏斯函數只有一個參數。而,在2^X上,集合包含關系下的莫比烏斯函數是(-1)^(|A|-|B|),可以看到確實有兩個參數。當B為空集時,就得到了容斥原理的系數了。書中有詳細推導。
到這里,我們將一般莫比烏斯反演提高到廣義莫比烏斯反演。廣義莫比烏斯反演包含了容斥原理。
前文所述的:"如果有 f = s * g, s * t = 1,那么有g = t * f。"將廣義莫比烏斯反演提高到泛函的高度。廣義莫比烏斯反演只是在 s = 該偏序集的示性函數時的特殊應用。為什么在s取這個特殊的函數時產生了莫比烏斯反演呢?
2. 思想
如果t不簡單呢?為簡單起見,只考慮單變量形式,f(n) = s(a_1)g(n/a_1) + s(a_2)g(n/a_2) + s(a_3)g(n/a_3) ... s(a_r)g(n/a_r)其中a_r = n。(除法可能不是一般意義上的除法)??梢詳喽?#xff1a;如果a_1是最小元,那么a_1 = 1。于是我們得到s(n) = (f(n) - (s(a_1)g(n/a_1) + ... + s(a_{r-1})g(n/a_{r-1})))/g(1)。
到此,解決了莫比烏斯函數t不簡單的問題。而一般的莫比烏斯函數的計算就是:先用上述遞歸,如果得到閉合的簡單表達式,你就找到該集合上的莫比烏斯函數了。如果沒找到,或者只是覺得麻煩,直接用該遞歸求解即可。可以在心中認為,在應用該遞歸時,隱式地計算了莫比烏斯函數。
莫比烏斯反演就是考慮最簡單的s,告訴了s的逆簡單時的辦法,而這里告訴你有更一般的辦法。
如果s不是偏序集的示性函數呢?上述遞歸同樣有效。也存在求出t的閉合形式的可能性。也許在之前就遇到過這樣的遞歸形式,在看了這本文后,可以知道,原來從那個時候就會莫比烏斯反演了?;蛘呖梢哉f,在第一次寫容斥原理的代碼時就是在寫莫比烏斯反演的代碼。(比如說求不超過n的square free數的個數就是該遞歸)
1. 廣義莫比烏斯反演
為區別平時所說的整數上定義整除關系后,在dirichlet卷積下的莫比烏斯反演,這里更關心其一般化,所以稱之為廣義莫比烏斯反演。
在Richard A. Brualdi所著的Introductory Combinatorics (版本不限,中文名為組合數學)中The Inclusion-Exclusion Principle and Applications(容斥原理及其應用)一章,最后一節Mobius Inversion(莫比烏斯反演)所介紹的莫比烏斯反演即為本文所提到的廣義莫比烏斯反演。
簡單地,不嚴格地說:如果有 f = s * g, s * t = 1,那么有g = t * f。當x是整數上集上帶整除關系的偏集上的示性函數:a | b 時 s(a, b) = 1,否則為0,x這個函數通常記為zeta。相應的,由該偏序關系決定的卷積正是Dirichlet卷積。s關于delta(在本文中寫作1,請自行區分整數1和delta)的逆就是莫比烏斯函數t,通常記為mu。
問題:通常遇到的mu是一個參數,而上述的s是兩個參數,進一步可以猜測t也是兩個參數。是的,上述函數都是兩個參數,其中卷積的定義如下:f(x, y) = s * g = sum(s(x, z)g(z, y),x <= z and z <= y).令x = 1,<= 關系為整除關系時f(y) = sum(s(1, z)g(z, y), x | z and z | y)。進一步,令ss = s(z/1),gg=g(y/z)得到f(y) = sum(ss(z)gg(y/z), x | z and z | y)??梢宰C明,mu(a, b) = mu(b/a),正好和前面的解釋對應。進而解釋了為什么在整數,整除關系上莫比烏斯函數只有一個參數。而,在2^X上,集合包含關系下的莫比烏斯函數是(-1)^(|A|-|B|),可以看到確實有兩個參數。當B為空集時,就得到了容斥原理的系數了。書中有詳細推導。
到這里,我們將一般莫比烏斯反演提高到廣義莫比烏斯反演。廣義莫比烏斯反演包含了容斥原理。
前文所述的:"如果有 f = s * g, s * t = 1,那么有g = t * f。"將廣義莫比烏斯反演提高到泛函的高度。廣義莫比烏斯反演只是在 s = 該偏序集的示性函數時的特殊應用。為什么在s取這個特殊的函數時產生了莫比烏斯反演呢?
2. 思想
先引入簡單函數和困難函數的概率,簡單的一般有直接表達式,或者容易算出來的表達式,反之亦然。這里簡單和困難主要是指求值的難易程度。
莫比烏斯反演的思想:假定f,s,t是簡單函數,g是困難函數,f = s * g, s * t = 1,我們可以利用g = t * f將困難函數的計算轉移到簡單函數的計算上。
莫比烏斯反演主要考慮最簡單的s:s是偏序集的示性函數,如果t也簡單,那么計算可以轉移。如果t不簡單呢?為簡單起見,只考慮單變量形式,f(n) = s(a_1)g(n/a_1) + s(a_2)g(n/a_2) + s(a_3)g(n/a_3) ... s(a_r)g(n/a_r)其中a_r = n。(除法可能不是一般意義上的除法)??梢詳喽?#xff1a;如果a_1是最小元,那么a_1 = 1。于是我們得到s(n) = (f(n) - (s(a_1)g(n/a_1) + ... + s(a_{r-1})g(n/a_{r-1})))/g(1)。
到此,解決了莫比烏斯函數t不簡單的問題。而一般的莫比烏斯函數的計算就是:先用上述遞歸,如果得到閉合的簡單表達式,你就找到該集合上的莫比烏斯函數了。如果沒找到,或者只是覺得麻煩,直接用該遞歸求解即可。可以在心中認為,在應用該遞歸時,隱式地計算了莫比烏斯函數。
莫比烏斯反演就是考慮最簡單的s,告訴了s的逆簡單時的辦法,而這里告訴你有更一般的辦法。
如果s不是偏序集的示性函數呢?上述遞歸同樣有效。也存在求出t的閉合形式的可能性。也許在之前就遇到過這樣的遞歸形式,在看了這本文后,可以知道,原來從那個時候就會莫比烏斯反演了?;蛘呖梢哉f,在第一次寫容斥原理的代碼時就是在寫莫比烏斯反演的代碼。(比如說求不超過n的square free數的個數就是該遞歸)
3. 文末彩蛋
考慮f = s * g,如果對于批量f的計算有快速方法,那么將方法反向操作后可以直接批量計算g。因為利用g = t * f,不一定能找到g的批量快速計算方法。
例子:設f(x) = sum(s(x/d)g(d), d | x),當s(d) = 1時,s足夠簡單,導致對于批量計算所有的f(x)其中 x | n有個快速算法(參考子集卷積算法)。那么如果f簡單而g困難,對于反演形式很難找到批量計算的快速算法時,只需要反著執行用g計算f的快速算法,就能快速找到所有的g(x), x|n了。該思想可以用于spoj PAIRDIV2 http://www.spoj.com/problems/PAIRDIV2/
總結
以上是生活随笔為你收集整理的关于广义莫比乌斯反演的思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab的损失函数mse,MSELo
- 下一篇: 英语语法篇 - 从句