20 votos

Fft sobre campos finitos?

Estoy tratando de comprender cómo calcular la transformada rápida de Fourier sobre un campo finito. Esta pregunta se planteó en el análisis de algunos de los códigos BCH.

Considere el campo finito $F$ con $2^n$ elementos. Es posible definir un (discreta) de la transformada de Fourier en vectores de longitud $2^n-1$ como sigue. Elegir un $2^n-1$ raíz de la unidad $\omega\in F$. Entonces, dado un vector $V=(V_0,...,V_{2^n-2})\in F^{2^n-1}$, podemos definir su transformada de Fourier $W=(W_0,...,W_{2^n-2}) \in F^{2^n-1}$ como: $$W_i=\sum_{j=0}^{2^n-2} \omega^{ij} V_j$$ Encontrar un $\omega$ podemos utilizar elementos primitivos de $F$.

Supongamos que tenemos $V$ y nos gustaría para calcular eficientemente $W$. Si tuviéramos la operación a través de los números complejos, se podría elegir a cualquiera de un número de algoritmos de la transformada rápida de Fourier. La mezcla de base de Cooley-Tukey algoritmo se traduce modificado en este contexto, por lo que si $2^n-1$ es el producto de pequeños factores (es decir, es suave), entonces todos estamos conjunto.

Sin embargo, $2^n-1$ podría ser la mejor (después de todo, estos números incluyen los números primos de Mersenne) o contienen grandes factores primos. La tradicional Cooley-Tukey algoritmo ya no es eficiente. Sobre los números complejos, que esto no supone un problema, existen rápido algoritmos (como Bluestein del algoritmo y Rader del algoritmo) para el manejo de este caso. Estos algoritmos suelen involucrar a reformular una $N$-punto de la transformada de Fourier como una convolución y la evaluación de la convolución mediante la realización de una $2^m$ de puntos de la FFT, donde $2^m\geq 2N-1$.

Por desgracia para nosotros, no es $2^m$ raíz de la unidad en cualquier campo finito de característica 2. Contigua a dicha raíz de nuestro campo muestra un anillo más grande, y la mayor complejidad en el manejo de estos elementos aparece para cancelar la velocidad a la que habría recibido de la FFT. En (1), Pollard sugiere el uso de Bluestein del algoritmo, pero su argumento no parece aplicarse a los campos de la característica 2 (a menos que yo estoy entendiendo él).

Mi pregunta es: en el caso descrito anteriormente, ¿cómo puedo calcular una transformada rápida de Fourier? Para mi propósito original, tenía la esperanza de encontrar un radix-dos del algoritmo, pero en este momento yo estaría interesado en cualquier algoritmo rápido.

(1) J. M. Pollard. "La transformada Rápida de Fourier en un Campo Finito". Las matemáticas de la Computación, Vol. 25, Nº 114 (Abr., 1971), pp 365-374.

10voto

Issac Kelly Puntos 123

Hay un par de enfoques diferentes:

1) Como Peter Shor mencionado puede utilizar un $3^n$ punto de transformar con Bluestein del algoritmo.

2) aunque no $2^n$ raíces de la unidad existen sustitutos para ellos (primero implícitamente discutido por Leonard Carlitz y, a continuación, de forma explícita por David Cantor). Clic aquí para ver una buena cuenta de este http://www.math.clemson.edu/~sgao/papers/GM10.pdf

Este algoritmo es más probable que la más eficiente en la práctica.

3) Hay una observación de Shmuel Winograd que se dio cuenta de que, usando la relación entre multiplicativo y aditivo de caracteres que puede convertir una FFT en $N$ puntos para el cálculo de la convolución cíclica en $N-1$ puntos. Y $N-1$ podría factor de bien.

4voto

Chasler Puntos 2158

Para finitos campos de la característica 2, el clásico resultado es cuanto sé

@article{Schonhage:1976, author = {A. Sch\"{o}nhage}, title = {Schnelle Multiplikation von Polynomen \"{u}ber K\"{o}rpern der Charakteristik 2}, journal = {Acta Informar.}, volumen = {7}, año = {1976}, páginas = {395--398}, }

(en alemán)

Aquí un extra de registro de registro de factor aparece en la complejidad, en comparación con el clásico citado O(n log n) la complejidad a través de los números complejos. La mayoría de los resultado general (aunque sobre la multiplicación) parece ser

@article{123568, author = {Cantor, David G. y Kaltofen, Erich}, title = {Sobre la rápida multiplicación de polinomios sobre arbitraria álgebras}, journal = {Acta Inf.}, volumen = {28}, número = {7}, año = {1991}, issn = {0001-5903}, páginas = {693 701--}, doi = {http://dx.doi.org/10.1007/BF01178683}, publisher = {Springer-Verlag New York, Inc.}, dirección = {Secaucus, NJ, Estados Unidos}, }

con la misma O(n log n log log n) la complejidad de un amplio clase de álgebras.

Crandall y Pomerance el libro de los Números Primos: Una Perspectiva Computacional es también muy útil sobre este tema.

Sin embargo, vale la pena considerar las complejidades en más detalle para un momento y lo que uno de los supuestos, sobre el modelo de cálculo. Todas las complejidades de la clásica citado se refieren a la máquina de Turing modelo. Sin embargo, el estándar de la multiplicación de dos números de n bits, por ejemplo, es en realidad una operación O(n) tiempo de operación en el ahora popular en el costo de la unidad de RAM modelo mediante el uso de simples bits de embalaje. Si uno se preocupa por registro de los factores, entonces este tipo de problema se convierte en relevante para la FFT demasiado.

1voto

gdm Puntos 180

si utiliza un campo de Galois GF(p^2), donde p es un primo Mersenne, este campo contendrá el deseado conveniente raíces de la unidad (puesto que p^2-1 tiene una gran potencia de 2, es decir 2*(p+1), como un factor).

0voto

mkasberg Puntos 101

Usted puede utilizar Gao-Mateer Aditivo algos. Es casi como radix-2, pero utiliza algunos x^2-x de la serie en lugar de raíces de la unidad.

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