Processing math: 100%

10 votos

Rápido algoritmos para el cálculo de la inversión de Möbius

Recordar Möbius de la inversión de la fórmula: si tenemos dos funciones de f,g:NN tal que g(n)=nk=1f(nk) es válido para cada nN, entonces los valores de f puede ser recuperado como f(n)=nk=1μ(k)g(nk), donde μ(k) es la función de Möbius.

Estoy interesado en rápido algoritmos para el cálculo de un único valor de f(n), suponiendo que el g puede ser calculado en O(1) del tiempo.

El mejor algoritmo que conozco es la siguiente: Hay O(n) valores diferentes nk, 1kn. Si ya hemos calculado f(nk)2kn, luego f(n)=g(n)nk=2f(nk) puede ser calculado en O(n) el tiempo contando las multiplicidades de los términos en la suma. Mediante el cálculo de la f(nk) de mayor a menor k el tiempo total requerido, a continuación, serO(n3/4), mientras que el uso de O(n) espacio.

Yo también estoy interesado en posibles mejoras en el algoritmo anterior, incluso si se reduce el tiempo requerido sólo por un factor constante.

8voto

NIk Puntos 31

Usted puede mejorar el O(n3/4) algoritmo por un factor constante de aproximadamente tres por la informática sólo los sumandos impares de k mediante el uso de la identidad:

f(n)=g(n)g(n2)3kn,koddf(nk)

que se puede obtener restando g(n2)g(n). El extraño enfoque únicamente se menciona en [Lehman 1960] (buscar "en la práctica").

Se puede mejorar aún más el tiempo de complejidad a O(n2/3+ϵ) si usted puede calcular el f(k) por cada k{1,..,u}O(u1+ϵ), como es típico para las funciones aritméticas mediante el uso de un (posiblemente segmentada) tamiz.

Dos referencias para el O(n2/3) enfoque son [Pawlewicz 2008] y [Deleglise 1996].

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X