Articulo de referencia

Diagrama de mariposa

Diagrama de flujo de señales que conecta las entradas x (izquierda) con las salidas y que dependen de ellas (derecha) para un paso de "mariposa" de una FFT de Cooley-Tukey de ba...

Diagrama de flujo de señales que conecta las entradas x (izquierda) con las salidas y que dependen de ellas (derecha) para un paso de "mariposa" de una FFT de Cooley-Tukey de base 2. Este diagrama se asemeja a una mariposa (como la mariposa morfo que se muestra a modo de comparación), de ahí su nombre, aunque en algunos países también se le conoce como diagrama de reloj de arena.

En el contexto de los algoritmos de transformada rápida de Fourier , una mariposa es una parte del cálculo que combina los resultados de transformadas discretas de Fourier (DFT) más pequeñas en una DFT más grande, o viceversa (dividiendo una DFT más grande en subtransformadas). El nombre "mariposa" proviene de la forma del diagrama de flujo de datos en el caso de base 2, como se describe a continuación. [ 1 ] Se cree que la primera aparición impresa del término fue en un informe técnico del MIT de 1969. [ 2 ] [ 3 ] La misma estructura también se puede encontrar en el algoritmo de Viterbi , utilizado para encontrar la secuencia más probable de estados ocultos.

El término "mariposa" suele aparecer en el contexto del algoritmo FFT de Cooley-Tukey , que descompone recursivamente una DFT de tamaño compuesto n  = rm en r transformadas más pequeñas de tamaño m , donde r es la base de la transformada. Estas DFT más pequeñas se combinan mediante mariposas de tamaño r , que a su vez son DFT de tamaño r (realizadas m veces sobre las salidas correspondientes de las subtransformadas) premultiplicadas por raíces de la unidad (conocidas como factores de rotación ). (Este es el caso de "diezmado en el tiempo"; también se pueden realizar los pasos a la inversa, conocido como "diezmado en la frecuencia", donde las mariposas se aplican primero y se postmultiplican por factores de rotación. Véase también el artículo sobre la FFT de Cooley-Tukey ). 

Diagrama de mariposa Radix-2

En el caso del algoritmo Cooley-Tukey de base 2, la mariposa es simplemente una DFT de tamaño 2 que toma dos entradas ( x0 , x1 ) ( salidas correspondientes de las dos subtransformadas) y da dos salidas ( y0 , y1 ) mediante la fórmula (sin incluir factores de giro ):  

y0=incógnita0+incógnita1{\displaystyle y_{0}=x_{0}+x_{1}\,}
y1=incógnita0incógnita1.{\displaystyle y_{1}=x_{0}-x_{1}.\,}

Si se dibuja el diagrama de flujo de datos para este par de operaciones, las líneas ( x 0 , x 1 ) a ( y 0 , y 1 ) se cruzan y se asemejan a las alas de una mariposa , de ahí su nombre (véase también la ilustración de la derecha).  

Una FFT de base 2 con diezmado en el tiempo divide una DFT de longitud N en dos DFT de longitud N /2, seguida de una etapa de combinación que consiste en muchas operaciones de mariposa.

Más específicamente, un algoritmo FFT de decimación en el tiempo de base 2 sobre n  =  2 p entradas con respecto a una raíz n -ésima primitiva de la unidad. ωnortek=mi2πiknorte{\displaystyle \omega _{n}^{k}=e^{-{\frac {2\pi ik}{n}}}}Se basa en O( n  log 2 n ) mariposas de la forma: 

y0=incógnita0+incógnita1ωnortek{\displaystyle y_{0}=x_{0}+x_{1}\omega _{n}^{k}\,}
y1=incógnita0incógnita1ωnortek,{\displaystyle y_{1}=x_{0}-x_{1}\omega _{n}^{k},\,}

donde k es un número entero que depende de la parte de la transformación que se esté calculando. Mientras que la transformación inversa correspondiente se puede realizar matemáticamente reemplazando ω por ω 1 (y posiblemente multiplicando por un factor de escala general, dependiendo de la convención de normalización), también se pueden invertir directamente las mariposas:

incógnita0=12(y0+y1){\displaystyle x_{0}={\frac {1}{2}}(y_{0}+y_{1})\,}
incógnita1=ωnortek2(y0y1),{\displaystyle x_{1}={\frac {\omega _ {n}^{-k}}{2}}(y_{0}-y_{1}),\,}

correspondiente a un algoritmo FFT de decimación en frecuencia.

Otros usos

La mariposa también puede utilizarse para mejorar la aleatoriedad de grandes conjuntos de números parcialmente aleatorios, poniendo en contacto causal cada palabra de 32 o 64 bits con todas las demás palabras mediante un algoritmo de hash deseado, de modo que un cambio en cualquier bit tenga la posibilidad de cambiar todos los bits del conjunto grande. [ 4 ]

Véase también

Referencias

  1. Alan V. Oppenheim, Ronald W. Schafer y John R. Buck, Procesamiento de señales en tiempo discreto , 2.ª edición (Upper Saddle River, NJ: Prentice Hall, 1989)
  2. CJ Weinstein (21 de noviembre de 1969). Efectos de cuantización en filtros digitales (PDF) (Informe). Laboratorio Lincoln del MIT . pág.  42. Este cálculo, denominado "mariposa"
  3. Cipra, Barry A. (2012-06-04). "FFT y diagrama de mariposa" . mathoverflow.net . Recuperado el 2015-02-10 .
  4. Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007), "Sección 7.2 Hashing completo de una matriz grande", Numerical Recipes: The Art of Scientific Computing (3.ª ed.), Nueva York: Cambridge University Press, pág. 358, ISBN   978-0-521-88068-8
  • Explicación de la FFT y los diagramas de mariposa .
  • Diagramas de mariposa de varias implementaciones de FFT (Radix-2, Radix-4, Split-Radix) .