Al principio de esta serie, argumentamos que la multiplicación de dos polinomios de grado como máximo puede realizarse en un tiempo de complejidad si ambos polinomios están en forma de punto-valor.
En la práctica, la dificultad radica en que los polinomios suelen darse en forma de coeficientes, y queremos que el resultado de la multiplicación también esté en forma de coeficientes.
Afortunadamente, estos problemas pueden resolverse utilizando las versiones rápidas de la NTT y la INTT.
Para multiplicar dos polinomios representados en forma de coeficientes en un tiempo , el procedimiento es el siguiente:
- Utilizando la NTT, los polinomios se convierten de la forma de coeficientes a la forma de punto-valor.
- Los polinomios en forma de punto-valor se multiplican punto por punto. Esto puede realizarse en un tiempo de complejidad , y el resultado se obtiene en forma de punto-valor.
- Se utiliza la INTT para transformar el polinomio resultante de vuelta a la forma de coeficientes.
Utilizando las raíces -ésimas de la unidad, donde es una potencia de , los pasos 1 y 3 pueden realizarse en un tiempo .
La única limitación es que debemos imponer un grado máximo de al polinomio resultante. Por lo tanto, la suma de los grados de los dos polinomios que queremos multiplicar no puede superar .
En la práctica, esto no suele ser un problema, ya que por lo general podemos utilizar campos que contengan raíces -ésimas de la unidad lo suficientemente grandes como para que los grados de los polinomios se mantengan dentro del límite permitido.
Los polinomios de grado inferior a no representan un problema, ya que pueden rellenarse con coeficientes de valor cero hasta el grado .
Sin utilizar las versiones rápidas de la NTT y la INTT, la multiplicación de polinomios tendría una complejidad de tiempo .
El objetivo de este capítulo es demostrar nuestra afirmación. Mostraremos que multiplicar dos polinomios en forma de coeficientes es equivalente a aplicar la NTT a cada polinomio, realizar la multiplicación punto por punto y, a continuación, aplicar la INTT al polinomio resultante obtenido de esta operación.
Este resultado se conoce como el teorema de convolución en el contexto de la multiplicación de polinomios. En un contexto más general, el teorema de convolución establece que
“la convolución en el dominio original es equivalente a la multiplicación punto por punto en el dominio transformado.”
Para comprender adecuadamente este teorema, debemos empezar por definir qué es la convolución.
Los lectores menos inclinados hacia las matemáticas pueden saltarse este capítulo sin pérdida de continuidad. En el resto del texto, demostramos el teorema de convolución, pero si el lector solo está interesado en su aplicación, es suficiente con aceptar que puede utilizarse para multiplicar polinomios en un tiempo de complejidad en lugar de .
Convolución
La multiplicación de dos polinomios en forma de coeficientes es un ejemplo de una operación de convolución.
Consideremos dos polinomios de grado 2,
y
La multiplicación en forma de coeficientes da como resultado el polinomio
Reorganizando esta expresión, obtenemos
Por lo tanto, los coeficientes del polinomio resultante de la multiplicación de y son
Estos coeficientes pueden expresarse de forma compacta mediante la fórmula
para , que es el grado del polinomio . Examinemos esto para uno de los coeficientes, . Para este coeficiente, tenemos
Dado que tanto como son cero (porque los polinomios y tienen grado 2), esto se reduce a
como se esperaba.
La operación definida por
se denomina convolución y suele escribirse como
donde denota el operador de convolución.
El Teorema de Convolución
Nuestro objetivo es demostrar que convertir y a la forma de punto-valor, multiplicar los puntos correspondientes y convertir el resultado de vuelta a la forma de coeficientes es equivalente a realizar la convolución de los coeficientes de y .
Consideremos los polinomios
y
de grado y .
Multiplicar y produce un nuevo polinomio cuyo grado es la suma de los grados y de y , respectivamente.
Supongamos que el grado de es .
Por lo tanto, queremos calcular
Si el grado es inferior a , podemos rellenar con ceros los coeficientes de los términos de mayor grado.
Representemos los coeficientes de los polinomios y como
Algunos de los coeficientes de mayor grado anteriores serán cero, ya que los grados de y deben sumar como máximo . Esto no es un problema. Nuestra única restricción es que
Nuestro primer paso es convertir los polinomios y de la forma de coeficientes a la forma de punto-valor.
Primer paso: convertir los polinomios a la forma de punto-valor.
Para convertir estos polinomios a la forma de punto-valor, utilizamos la NTT. Al elegir como una potencia de , podemos aplicar la transformada rápida. Sin embargo, dado que el resultado final es equivalente a la multiplicación por la matriz de Vandermonde, presentaremos la formulación matricial.
Por ejemplo, para el polinomio , sus evaluaciones en las raíces -ésimas de la unidad están dadas por
De manera similar, para ,
Estas operaciones matriciales pueden escribirse por componentes como
y
Por ejemplo, la evaluación de está dada por
Segundo paso: realizar la multiplicación punto por punto de los polinomios en forma de punto-valor.
Ahora multiplicamos las evaluaciones de y punto por punto para obtener las evaluaciones del polinomio producto :
En notación de índices, esto puede escribirse como
Utilizando las expresiones para y obtenidas en el paso anterior, obtenemos
Para recapitular, lo que queremos demostrar es que si aplicamos la INTT al polinomio en su forma de punto-valor (la forma anterior), el resultado es el mismo que realizar la convolución de y .
Último paso: aplicar la INTT al polinomio en forma de punto-valor
La Transformada Inversa de Teoría de Números (Inverse Number Theoretic Transform) sobre las raíces -ésimas de la unidad se realiza utilizando la matriz de Vandermonde escalada por un factor de .
Por lo tanto, al aplicar la INTT al conjunto de puntos , obtenemos el polinomio en forma de coeficientes:
Esto puede escribirse por componentes como
Usando el hecho de que está dado por
tenemos que
Esta expresión es extensa, pero puede simplificarse aplicando la propiedad de ortogonalidad de las raíces de la unidad.
Primero, agrupemos todas las potencias de :
La expresión anterior indica que podemos utilizar la ortogonalidad de las raíces de la unidad para simplificarla.
Recordemos que la propiedad de ortogonalidad de las raíces de la unidad está dada por
Utilizando la fórmula anterior para la suma aislada de raíces de la unidad en , notamos que
es igual a si (o equivalentemente ), y cero en caso contrario.
Esto puede representarse como multiplicado por la delta de Kronecker:
Reemplazando
en la expresión para , tenemos que
Las constantes y se cancelan:
Más importante aún, al sumar sobre el índice , todos los términos se anulan excepto cuando . Esto se debe a la ortogonalidad de las raíces de la unidad.
Como resultado, la sumatoria sobre colapsa, y podemos reemplazar la sumatoria en por el único elemento . Obtenemos
¡Esta es exactamente la fórmula de la convolución!
Recordemos lo que hicimos:
- Aplicamos la NTT a los polinomios y , convirtiendo sus representaciones de coeficientes en representaciones de punto-valor, es decir, vectores que contienen sus evaluaciones en las raíces -ésimas de la unidad:
- Multiplicamos estos valores de evaluación punto por punto, lo que significa que para cada raíz de la unidad calculamos
obteniendo la representación en punto-valor del polinomio producto .
- Aplicamos la INTT a este vector de valores
para recuperar la representación de coeficientes de .
Demostramos que estos tres pasos producen exactamente el mismo resultado que multiplicar los polinomios y , es decir, convolucionando los coeficientes de y .
Sin embargo, mientras que la convolución directa tiene una complejidad de tiempo , el procedimiento anterior puede ejecutarse en un tiempo , produciendo el mismo polinomio final.
Esto es exactamente lo que establece el teorema de convolución. De manera más formal, podemos escribirlo de la siguiente manera:
Sean y dos polinomios en su forma de coeficientes. Sea la operación de convolución y la multiplicación.
Sea la aplicación de la NTT a —es decir, mientras que es el vector de coeficientes, es el vector de evaluaciones— y sea la aplicación de la INTT a . Entonces,
Otra forma de expresar el teorema de convolución es
Esta es una transformación lineal y puede entenderse de la siguiente manera: la convolución en el dominio de los coeficientes es equivalente a la multiplicación punto por punto en el dominio de punto-valor.
Este artículo forma parte de una serie sobre la Transformada de Teoría de Números en nuestro ZK Book