Comenzaremos este capítulo con una nota inusual: el algoritmo NTT es bastante simple y puede implementarse en menos de 20 líneas de código. Sin embargo, la idea clave que hace que funcione, curiosamente, no tiene un nombre matemático formal. Así que nos tomaremos la libertad de darle al que creemos que es el teorema central detrás del algoritmo un nombre (subjetivamente) pegadizo:
El Teorema de Preservación de la Imagen para Funciones Multivaluadas
Para explicar el Teorema de Preservación de la Imagen, repasaremos un último concepto (muy simple) sobre las raíces de la unidad, y luego presentaremos el teorema.
Raíces -ésimas de raíces cuadradas anidadas
La definición literal de “raíz -ésima de la unidad” es que la raíz de la unidad satisface . Dicho de otra manera:
Por lo tanto, no debería sorprender que si es la raíz cuarta primitiva de la unidad, entonces
Ahora hagamos la misma operación si es la raíz octava primitiva de la unidad. El resultado sería
y la raíz octava de 1 genera todas las raíces octavas de la unidad:
Estas observaciones son simplemente una cuestión de definición. Por supuesto, no queremos calcular directamente la raíz cuadrada de 1. Es mucho más fácil encontrar primero la raíz -ésima primitiva de la unidad y luego generar el conjunto de respuestas para . Por ejemplo:
import galois
Fq = 17
k = 8
assert (Fq - 1) % k == 0, "no such subgroup"
GF = galois.GF(Fq)
pr = GF.primitive_root_of_unity(k)
roots = []
for i in range(0,k):
roots.append(pr**i)
print(roots)
También podemos observar que:
y así sucesivamente. Como se señaló anteriormente, calcular directamente no es eficiente. En su lugar, consideramos el siguiente diagrama, donde cada flecha hacia abajo es una raíz cuadrada del número que está encima:

Podemos calcular las raíces octavas de la unidad comenzando con 1 y tomando raíces cuadradas repetidamente.
Para un arbitrario, el diagrama es el siguiente.

A continuación, se presenta un recorrido por los cálculos de la raíz cuadrada:
La raíz cuadrada de 1 es . es congruente con -1
Recuerda del capítulo anterior que la raíz cuadrada de es y (asumiendo que es par).
Por lo tanto, la raíz cuadrada de es .
También recuerda que el inverso aditivo de es .
Entonces, para calcular sin el signo negativo, calculamos . Por lo tanto, la raíz cuadrada de es .
La raíz cuadrada de es . Nuevamente, para deshacernos del signo negativo, calculamos
El porqué la raíz cuadrada de se deja como ejercicio para el lector.
La altura del árbol es
Calcular las raíces -ésimas de la unidad tomando repetidamente las raíces cuadradas de 1 crea un “árbol” que tiene una altura de .
Conceptualización de los estados intermedios del árbol
El conjunto
es matemáticamente equivalente a las raíces octavas de la unidad. El conjunto también es equivalente a:
Lo cual también es equivalente a:
En otras palabras:
Un breve inciso: funciones multivaluadas e imágenes
Es cierto que las observaciones que hicimos anteriormente son extensiones triviales de la definición de raíces -ésimas. Las implicaciones más interesantes de estas observaciones se mostrarán en la siguiente sección. Sin embargo, será útil introducir primero algo de terminología matemática:
Imagen de una función — si tenemos un conjunto de puntos sobre los que evaluamos una función, el conjunto de evaluaciones es la imagen. Por ejemplo, si la función es y el dominio sobre el que evaluamos es , entonces la imagen será . El término rango de una función significa el conjunto de valores que una función podría generar. En nuestro contexto, la imagen de la función se refiere al conjunto real de salidas para un conjunto dado de entradas.
Función multivaluada — una función que puede devolver más de una evaluación para un solo punto en el dominio. Por ejemplo, evaluada en 0 devuelve 0, pero evaluada en 1 devuelve .
Nota: La función multivaluada tiene una imagen más grande que su dominio.
Con estas definiciones en mente, el lector debería comprender las siguientes afirmaciones:
“La imagen de en el dominio es ”
“La imagen de la función multivaluada en el dominio es ”
Ahora llegamos a un conjunto de observaciones más interesantes.
La imagen de evaluada en es la misma que evaluada en (k = 8)
Esta afirmación es una simple reformulación de los conceptos mostrados anteriormente, por lo que no daremos más detalles. La parte interesante es cómo podemos generalizar esto a otras funciones.
El matiz aquí es que es una función multivaluada que devuelve ocho elementos.
La imagen de evaluada en las raíces cuartas de la unidad es la misma que la de la función multivaluada evaluada en (k = 4)
Recuerda, , por lo que . Esta es la misma imagen que resulta al evaluar en cada raíz de la unidad una por una. Dado que
Ejercicio para el lector: Sea . ¿Cuál es la imagen de en las raíces cuartas de la unidad? ¿Cuál es la imagen de la función multivaluada en el dominio ?
En los siguientes capítulos, mostraremos cómo manejar casos más complejos como , pero por ahora, mostraremos cómo calcular realmente funciones multivaluadas para los casos simples que presentamos aquí. Pero primero, demos una definición formal a la observación que hemos hecho hasta ahora sobre la equivalencia de imágenes.
La imagen de evaluada en las raíces cuartas de la unidad es la misma que la de la función multivaluada evaluada en las raíces segundas de la unidad (k = 4)
Este ejemplo es muy similar al anterior, excepto que no “apuntamos” al dominio , sino a .
Tenemos que
Esta es la misma imagen que al evaluar en
En resumen, si “encogemos” el dominio en un factor de y reemplazamos cada en por para crear una nueva función multivaluada , las imágenes de y son idénticas.
Ahora definiremos formalmente el concepto que hemos estado ilustrando.
El teorema central de NTT: Teorema de Preservación de la Imagen para Funciones Multivaluadas
Sea la raíz -ésima primitiva de la unidad y las raíces -ésimas de la unidad definidas en .
Sea una potencia de 2.
Sea un polinomio en . Sea una potencia de 2 menor o igual a .
Sea una función multivaluada creada reemplazando cada en por .
Sea el dominio el conjunto . Nota que si entonces .
La imagen de en es exactamente igual a la imagen de en .
¡Es de suma importancia que el lector comprenda el teorema anterior, ya que es el concepto clave en el que se basa la Number Theoretic Transform!
Aquí hay algunos ejemplos para reforzar el concepto:
- La imagen de en las raíces cuartas de la unidad es igual a la imagen de en las raíces segundas de la unidad (como se mostró en la sección anterior).
- La imagen de en las raíces 16-ésimas de la unidad es igual a la imagen de en las raíces octavas de la unidad.
- La imagen de en las raíces k-ésimas de la unidad es igual a la imagen de en las raíces k/2-ésimas de la unidad.
- La imagen de en las raíces k/2-ésimas de la unidad es igual a la imagen de en las raíces k/4-ésimas de la unidad.
La siguiente sección muestra ejemplos donde es ligeramente más compleja.
Ejemplos del Teorema de Preservación de la Imagen para
Sea y el dominio sean las raíces cuartas de la unidad .
Sea la función multivaluada y el dominio sea o, de manera equivalente, .
Sea la función multivaluada y el dominio sea .
Las imágenes de , y son idénticas:
Conexión con NTT
Recuerda que el objetivo de NTT es evaluar en las raíces -ésimas de la unidad en un tiempo de . En otras palabras, queremos calcular la imagen de en las raíces -ésimas de la unidad.
Probablemente puedas adivinar hacia dónde va esto.
Calcular la imagen de en las raíces -ésimas de la unidad es equivalente a calcular la imagen de una nueva función definida de tal manera que para cada en , evaluada en .
Sin embargo, esto deja una pregunta abierta:
Expandir en no conduce directamente a una aceleración. Algorítmicamente, expandir un en las raíces -ésimas de la unidad es lo mismo que evaluar en los puntos. ¿De qué nos sirve esta forma alternativa de evaluar ?
En el próximo capítulo, demostraremos cómo evaluar funciones multivaluadas utilizando la expansión de raíces cuadradas y explicaremos cómo este enfoque puede evitar cálculos redundantes.