Supongamos que se nos dan enteros distintos , de modo que para alguna constante , y para todo .
Estamos interesados en encontrar los recuentos de todas las sumas por parejas posibles . ( está permitido).
Un algoritmo es construir el polinomio de grado , y calcular su cuadrado utilizando el método de transformación de Fourier y leer las potencias con sus coeficientes en el polinomio resultante. Este es un algoritmo de tiempo .
Tengo dos preguntas:
¿Existe un algoritmo que no use FFT?
¿Se conocen mejores algoritmos (es decir, )? (FFT permitido).
algorithms
time-complexity
fourier-transform
Aryabhata
fuente
fuente
Respuestas:
Parece que este problema es equivalente a la cuadratura entera / polinómica:
1. Se sabe que la multiplicación polinómica es equivalente a la multiplicación entera .
2. Obviamente, ya redujo el problema a cuadratura polinómica / entera; por lo tanto, este problema es tan difícil como cuadrar.
Ahora reduciré la cuadratura entera a este problema:
Supongamos que tienes un algoritmo:
Este algoritmo es esencialmente el algoritmo que solicita en su pregunta. Por lo tanto, si tuviera un algoritmo mágico que pueda hacer esto, puedo hacer una función, que cuadrará el número entero y ( oh sí, amo mathjax: P ):SQUARE(y) y
Python ( prueba con teclado ):
3. Por lo tanto, la cuadratura es tan difícil como este problema.
4. Por lo tanto, la cuadratura entera es equivalente a este problema. (cada uno es tan duro como el otro, debido a ( 2 , 3 , 1 ))
5. Ahora, su problema no es exactamente la multiplicación, es la cuadratura. Entonces, ¿es más fácil la cuadratura? Bueno, es un problema abierto (no por ahora) : no se sabe que la cuadratura tenga un algoritmo más rápido que la multiplicación. Si pudiera encontrar un mejor algoritmo para su problema que usar la multiplicación; entonces esto probablemente sería un gran avance.
fuente