3 votos

¿Se sabe que el cálculo factorial está en una clase menor que $FEXP$ ?

La versión funcional de la jerarquía de recuento es $FCH$ . Es un problema abierto si existe una secuencia de $poly(log(n))$ número de $+,\times$ operaciones utilizando la asistencia de $O(1)$ número de constantes y un número arbitrario de variables enteras para calcular $n!$ .

En términos de tamaño de salida $n!$ no es ni siquiera en polinomio en $log(n)$ espacio. Por lo tanto, en términos de complejidad booleana, ¿dónde está el cálculo de $n!$ ¿en? Está claro que no está en $FCH$ pero en $FEXPSPACE$ .

Si nos dan un primo $p$ es el cálculo de $n!\bmod p$ en $FCH$ ?

¿Cambiarán mucho las respuestas si hay una secuencia de $poly(log(n))$ número de $+,\times$ operaciones utilizando la asistencia de $O(1)$ número de constantes y un número arbitrario de variables enteras para calcular $n!$ ?

Una secuencia de operaciones aritméticas se denomina programa recto.

3voto

Paul Puntos 4500

Sí, $n!\bmod p$ es computable en FCH. Más generalmente, si $f$ es una función computable en tiempo polinómico, entonces dado $n$ y $m$ en binario, podemos calcular $$\prod_{i<n}f(i)\bmod m\tag1$$ en FCH. Esto se deduce del hecho de que si se nos da en unario $n$ , $m$ y una secuencia de números $a_0,\dots,a_{n-1}$ entonces podemos calcular $$\prod_{i<n}a_i\bmod m$$ con el uniforme $\mathrm{TC}^0$ , lo que fue demostrado por

William Hesse, Eric Allender y David A. Mix Barrington: Circuitos de umbral uniforme de profundidad constante para la división y la multiplicación iterada Journal of Computer and System Sciences 65 (2002), no. 4, pp. 695-716, doi 10.1016/S0022-0000(02)00025-9 .

De hecho, podemos evitar casi toda la intrincada maquinaria del artículo [HAB02] debido a una combinación de dos factores:

  • Cuando los algoritmos se escalan exponencialmente a FCH, sólo necesitamos quasipolinomio $\mathrm{TC}^0$ . Así, por ejemplo, podemos utilizar el algoritmo trivial de tiempo polinómico para la exponenciación modular por cuadratura repetida en lugar del algoritmo [HAB02] (que en realidad lo sitúa en la jerarquía de tiempo lineal).

  • Dado que el resultado se calcula en módulo $m$ no necesitamos toda la fuerza de la Reconstrucción del Resto Chino (que es el paso más complicado y más costoso en [HAB02]).

Por lo tanto, aquí hay un algoritmo explícito. Primero, si $m=p$ es prime tenemos $$\prod_{i<n}f(i)\equiv g^{\sum_{i<n}d(f(i))}\pmod p,$$ donde $g$ es un generador de $\mathbb F_p^\times$ y $d$ es la inversa de $g^x\bmod p$ (es decir, logaritmo discreto). (Consideremos que $d(0)=-\infty$ .) Podemos calcular $g$ y $d(f(i))$ en FPH, así $\sum_id(f(i))$ en $\mathrm{\#P^{PH}}$ por lo que el resultado final en $$\mathrm{FP^{\#P^{PH}}=FP^{\#P}=FP^{PP}}.$$ (Estoy utilizando aquí el hecho de que $\mathrm{\#P^{PH}\subseteq P^{\#P}}$ .)

Un argumento similar funciona cuando $m$ es una potencia primera.

En general $m$ podemos calcular la factorización en primos $m=\prod_{j<k}p_j^{e_j}$ en FPH, por lo que (para cada $j<k\le\log n$ ) $r_j=\prod_{i<n}f(i)\bmod p_j^{e_j}$ (o más bien, el par $(p_j^{e_j},r_j)$ ) en $\mathrm{FP^{\#P^{PH}}=FP^{PP}}$ como en el caso anterior, y podemos reconstruir el resultado en módulo $m$ en tiempo polinómico. Así, de nuevo, la complejidad global es que podemos calcular (1) en $$\mathrm{FP^{PP}}.$$


La función no modular $n!$ como tal es una función de tamaño de salida exponencial cuyo gráfico de bits es computable en CH (de nuevo, por [HAB02]). No hay un nombre común para esta clase de funciones, hasta donde yo sé. Está incluida en FPSPACE, siempre y cuando te asegures de no restringir artificialmente esta clase a funciones con tamaño de salida polinómico (para las clases de espacio, es una definición estándar que el uso de espacio sólo cuenta las cintas de trabajo, no la cinta de entrada de sólo lectura o la cinta de salida de sólo escritura).

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