Algoritmo FFT de Bruun

O algoritmo de Bruun é um algoritmo de transformada rápida de Fourier (FFT) baseado numa abordagem invulgar de fatorização recursiva de polinómios, proposto para potências de dois por G. Bruun em 1978 e generalizado para tamanhos compostos pares arbitrários por H. Murakami em 1996. Como as suas operações envolvem apenas coeficientes reais até à última etapa de cálculo, foi inicialmente proposto como uma forma de calcular eficientemente a transformada discreta de Fourier (DFT) de dados reais. O algoritmo de Bruun não tem tido um uso generalizado, contudo, uma vez que as abordagens baseadas no algoritmo FFT de Cooley-Tukey comum foram adaptadas com sucesso para dados reais com pelo menos a mesma eficiência. Além disso, existem evidências de que o algoritmo de Bruun possa ser intrinsecamente menos preciso do que o de Cooley-Tukey face à precisão numérica finita (Storn 1993).

No entanto, o algoritmo de Bruun ilustra uma estrutura algorítmica alternativa que pode expressar tanto a si próprio como ao algoritmo de Cooley-Tukey e, por conseguinte, fornece uma perspetiva interessante sobre as FFTs que permite misturas dos dois algoritmos e outras generalizações.

Uma abordagem polinomial à DFT

Recorde-se que a DFT é definida pela fórmula:

Por conveniência, denotemos as raízes da unidade por (): e defina-se o polinómio cujos coeficientes são :

A DFT pode então ser compreendida como uma redução deste polinómio; isto é, é dado por: onde mod denota a operação de resto polinomial (teorema do resto polinomial). A chave para algoritmos rápidos como o de Bruun ou Cooley-Tukey advém do facto de que é possível executar este conjunto de operações de resto em fases recursivas.

Fatorizações recursivas e FFTs

Para calcular a DFT, precisamos de avaliar o resto de módulo polinómios de grau 1, tal como descrito acima. Avaliar estes restos um a um é equivalente a avaliar a fórmula habitual da DFT diretamente, e requer operações. Contudo, é possível combinar estes restos recursivamente para reduzir o custo, utilizando o seguinte truque: se quisermos avaliar módulo dois polinómios e , podemos primeiro obter o resto módulo o seu produto , o que reduz o grau do polinómio e torna as operações de módulo subsequentes menos dispendiosas computacionalmente.

O produto de todos os monómios para é simplesmente (cujas raízes são claramente as raízes da unidade). Pretende-se então encontrar uma fatorização recursiva de em polinómios de poucos termos e de grau cada vez menor. Para calcular a DFT, toma-se módulo cada nível desta fatorização, recursivamente, até se chegar aos monómios e ao resultado final. Se cada nível da fatorização dividir cada polinómio num número (limitado por uma constante) de polinómios menores, cada um com um número de coeficientes não nulos, então as operações de módulo para esse nível demoram um tempo ; uma vez que haverá um número logarítmico de níveis, a complexidade global é .

Mais explicitamente, suponha-se, por exemplo, que , e que , e assim sucessivamente. O algoritmo FFT correspondente consistiria em primeiro calcular , depois calcular , e assim por diante, criando recursivamente cada vez mais polinómios de resto de grau cada vez menor até se chegar aos resultados finais de grau 0.

Além disso, desde que os fatores polinomiais em cada etapa sejam primos entre si (o que para polinómios significa que não têm raízes comuns), é possível construir um algoritmo dual revertendo o processo com o Teorema chinês dos restos.

Cooley-Tukey como fatorização polinomial

O algoritmo padrão de Cooley-Tukey de base- com dizimação na frequência (DIF - decimation-in-frequency) corresponde de perto a uma fatorização recursiva. Por exemplo, o Cooley-Tukey DIF de base-2 fatora em e . Estas operações de módulo reduzem o grau de em 2, o que corresponde a dividir o tamanho do problema por 2. Contudo, em vez de fatorizar recursivamente diretamente, o Cooley-Tukey calcula primeiro , deslocando todas as raízes (por um fator de rotação ou twiddle factor) para que se possa aplicar a fatorização recursiva de a ambos os subproblemas. Isto é, o algoritmo Cooley-Tukey garante que todos os subproblemas também são DFTs, enquanto que isto não é geralmente verdade para uma fatorização recursiva arbitrária (como a de Bruun, abaixo).

A fatorização de Bruun

O algoritmo básico de Bruun para potências de dois fatora recursivamente através das regras:

onde é uma constante real com . Se , , então e .

Na etapa , , o estado intermédio consiste em polinómios de grau ou inferior, em que:

Pela construção da fatorização de , os polinómios codificam cada um valores da transformada de Fourier; para , os índices cobertos são ; para os índices cobertos são .

Durante a transição para a etapa seguinte, o polinómio é reduzido aos polinómios e através de divisão polinomial. Se se pretender manter os polinómios por ordem crescente de índice, este padrão requer uma implementação com dois arrays (matrizes). Uma implementação in-place produz uma sequência de índices previsível, mas altamente desordenada; por exemplo, para , a ordem final dos 8 restos lineares é (0, 4, 2, 6, 1, 7, 3, 5).

No final da recursividade, para , restam polinómios lineares que codificam dois coeficientes de Fourier e para o primeiro e, para qualquer outro -ésimo polinómio, os coeficientes e .

Em cada etapa recursiva, todos os polinómios do grau comum são reduzidos a duas partes de metade do grau . O divisor deste cálculo de resto polinomial é um polinómio quadrático , pelo que todas as reduções podem ser convertidas em divisões polinomiais de polinómios cúbicos por quadráticos. Existem destas pequenas divisões em cada etapa, originando um algoritmo para a FFT.

Além disso, como todos estes polinómios têm coeficientes puramente reais (até à última etapa), exploram automaticamente o caso especial em que as entradas são puramente reais para poupar sensivelmente um fator de dois no cálculo e no armazenamento. Também é possível tirar partido direto do caso de dados simétricos reais para calcular a transformada discreta de cosseno (Chen & Sorensen 1992).

Generalização para bases arbitrárias

A fatorização de Bruun, e por conseguinte o algoritmo FFT de Bruun, foi generalizada para lidar com comprimentos compostos pares arbitrários, ou seja, dividindo o grau do polinómio por uma base arbitrária (fator), da seguinte forma. Primeiro, define-se um conjunto de polinómios para inteiros positivos e para em por:

Note-se que todos os polinómios que surgem na fatorização de Bruun acima podem ser escritos desta forma. Os zeros destes polinómios são para no caso de , e para no caso em que . Assim, estes polinómios podem ser fatorizados recursivamente para um fator (base) através de:

Referências

  • Bruun, Georg (1978). «z-Transform DFT filters and FFTs» (PDF). IEEE Transactions on Acoustics, Speech, and Signal Processing. 26 (1): 56–63. doi:10.1109/TASSP.1978.1163036 
  • Nussbaumer, H. J. (1990). Fast Fourier Transform and Convolution Algorithms. Col: Springer Series in Information Sciences. 2. Berlin: Springer-Verlag. ISBN 978-3-540-11825-1. doi:10.1007/978-3-642-81897-4 
  • Wu, Yuhang (1990). «New FFT structures based on the Bruun algorithm» (PDF). IEEE Transactions on Acoustics, Speech, and Signal Processing. 38 (1): 188–191. doi:10.1109/29.45572 
  • Chen, Jianping; Sorensen, Henrik (1992). «An efficient FFT algorithm for real-symmetric data». [Proceedings] ICASSP-92: 1992 IEEE International Conference on Acoustics, Speech, and Signal Processing. 5. [S.l.: s.n.] pp. 17–20. ISBN 0-7803-0532-9. doi:10.1109/ICASSP.1992.226669 
  • Storn, Rainer (1993). «Some results in fixed point error analysis of the Bruun-FTT [sic] algorithm». IEEE Transactions on Signal Processing. 41 (7): 2371–2375. Bibcode:1993ITSP...41.2371S. doi:10.1109/78.224246 
  • Murakami, Hideo (1994). «Real-valued decimation-in-time and decimation-in-frequency algorithms». IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing. 41 (12): 808–816. doi:10.1109/82.338622 
  • Murakami, Hideo (1996). «Real-valued fast discrete Fourier transform and cyclic convolution algorithms of highly composite even length». 1996 IEEE International Conference on Acoustics, Speech, and Signal Processing Conference Proceedings. 3. [S.l.: s.n.] pp. 1311–1314. ISBN 0-7803-3192-3. doi:10.1109/ICASSP.1996.543667 
  • Mittal, Shashank; Khan, Md. Zafar Ali; Srinivas, M. B. (2007). «A Comparative Study of Different FFT Architectures for Software Defined Radio». Embedded Computer Systems: Architectures, Modeling, and Simulation. Col: Lecture Notes in Computer Science. 4599. [S.l.: s.n.] pp. 375–384. ISBN 978-3-540-73622-6. doi:10.1007/978-3-540-73625-7_39