Recordar Möbius de la inversión de la fórmula: si tenemos dos funciones de f,g:N→N tal que g(n)=n∑k=1f(⌊nk⌋) es válido para cada n∈N, entonces los valores de f puede ser recuperado como f(n)=n∑k=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⌋, 1≤k≤n. Si ya hemos calculado f(⌊nk⌋)2≤k≤n, luego f(n)=g(n)−n∑k=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.