Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
2 Carlos Alexandre Mello – [email protected]
Algoritmos Rápidos
Objetivo: melhoria do desempenho de
algoritmos
Implementam de forma mais eficiente um
algoritmo sem modificar seu resultado final
Exemplos.....
2
3 Carlos Alexandre Mello – [email protected]
Algoritmos Rápidos
x = a.c + a.d + b.c + b.d
4 multiplicações
x = (a + b).(c + d)
1 multiplicação
Mesma expressão anterior
Menor número de operações
No caso, a multiplicação é a operação mais custosa
3
4 Carlos Alexandre Mello – [email protected]
Algoritmos Rápidos
Multiplicação de números complexos
(e + jf) = (a + jb).(c + jd)
e = (a.c – b.d)
f = (a.d + b.c)
4 multiplicações e duas adições
e = (a – b).d + a.(c – d)
f = (a – b).d + b.(c + d)
3 multiplicações apenas
4
5 Carlos Alexandre Mello – [email protected]
Equação de Análise:
Equação de Síntese:
Transformada Discreta de Fourier
5
WN = e-j(2/N)
6 Carlos Alexandre Mello – [email protected]
Transformada Discreta de Fourier
Alta complexidade computacional
O(N2)
Para diminuir essa complexidade,
algoritmos rápidos são empregados
A FFT usa um número reduzido de
operações aritméticas para calcular a DFT
em relação ao seu cálculo direto
6
7 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
1965
J.W.Cooley (IBM) e J.W.Tukey (Bell Labs)
Decimação no Tempo
Ideia:
dividir a sequência x[n] em duas sequências: uma
com os coeficientes de índice par e outra com os
coeficientes de índice ímpar
Algoritmos no qual a sequência é decomposta
sucessivamente em sequências menores são
chamados de algoritmos de decimação em tempo
7
8 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
8
Sequência de
Entrada
Coeficientes
Pares
Coeficientes
Ímpares
9 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Fazendo n = 2r e n = 2r + 1
9
(Eq. 1)
(Eq. 2)
(Eq. 3)
10 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Mas WN2 = WN/2 já que:
Logo, a Eq. 3 pode ser re-escrita como:
10
(Eq. 4)
Twiddle
11 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Cada parcela da Eq. 4 anterior é uma DFT de N/2
pontos
G[k] e H[k]
No caso de uma DFT de 8 pontos, o resultado da
decimação no tempo gera o seguinte diagrama de
fluxo...
11
12 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
12
Índices
pares
Índices
ímpares
14 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
X[4] = G[4] + H[4]*WN4
= G[0] + H[0]*WN4
15 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Análise de Complexidade:
DFT clássica:
N2 multiplicações complexas e adições
Cooley-Tukey
DFT de
N/2 pontos
(N/2)2
operações
DFT de
N/2 pontos
(N/2)2
operações
+ N multiplicações pelo twiddle
N + 2(N/2)2 =
= N + N2/2
operações
16 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Análise de Complexidade:
Assim, usando o algoritmo de Cooley-Tukey, para N>2,
temos uma complexidade menor do que usando o
algoritmo de DFT clássico
Mas, ainda podemos buscar melhoria na
complexidade se aplicarmos novamente a ideia de
divisão de Cooley-Tukey
17 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
17
DFT de N-Pontos
DFT de N/2 Pontos
H[k]
DFT de N/2 Pontos
G[k]
DFT de N/4
Pontos
DFT de N/4
Pontos
DFT de N/4
Pontos
DFT de N/4
Pontos
18 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Se N é potência de 2, podemos dividir novamente
o conjunto de dados:
19 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
G[k] = { x[0] x[2] x[4] x[6] } 0 1 2 3
Índices
pares
Índices
ímpares
20 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Fluxo
completo
da DFT de
8 pontos
21 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey Análise de Complexidade
Para o caso geral, mas ainda considerando N
como potência de 2, podemos continuar com a
decomposição da DFT de N/4 pontos em duas de
N/8 pontos e continuarmos até que só restem
DFTs de 2 pontos
Como em uma árvore, esse processo requer v
estágios, onde v = log2N
22 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey Análise de Complexidade
Para uma única decimação (N -> N/2):
N + 2(N/2)2 operações
Com mais uma decimação (N/2 -> N/4):
O termo (N/2)2 é substituído por N/2 + 2(N/4)2:
N + 2[N/2 + 2(N/4)2]
N + N + 4(N/4)2
Se N=2v,a decomposição pode acontecer
no máximo v = log2N
23 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey Análise de Complexidade
Assim, se fizermos a decomposição o maior
número de vezes possível, temos uma quantidade
total de multiplicações complexas e adições igual
a N.log2N
24 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
25 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
A DFT de 8 pontos teve sua computação reduzida
até DFTs de 2 pontos (N = 2):
x[0]
x[4]
WN0 = 1
W2 1= WN
N/2 = -1 WNN/2 = e-j(2/N)N/2 = e-j = -1
26 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
O processo pode ser simplificado mais ainda...
A obtenção de um par de valores de um estágio
depende apenas de um par de valores do estágio
anterior
gráfico butterfly
Estágio m-1
WNr
WNr+ N/2
Estágio m
Como:
WNN/2 = -1
então o fator WNr+N/2 pode
ser escrito como:
WNr+N/2 = WN
N/2.WNr = -WN
r
27 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
Isso muda o gráfico da butterfly para:
Estágio m-1
WNr
-1
Estágio m
Gráfico butterfly simplificado
29 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
29
Relação
entrada-saída
dos índices...
30 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey Ordenação Bit-Reverso
Ou seja:
X0[0] = x[0]
X0[1] = x[4]
X0[2] = x[2]
X0[3] = x[6]
X0[4] = x[1]
X0[5] = x[5]
X0[6] = x[3]
X0[7] = x[7]
30
Que implica:
X0[000] = x[000]
X0[001] = x[100]
X0[010] = x[010]
X0[011] = x[110]
X0[100] = x[001]
X0[101] = x[101]
X0[110] = x[011]
X0[111] = x[111]
31 Carlos Alexandre Mello – [email protected]
Algoritmo de Cooley-Tukey
A representação final do gráfico butterfly para uma
DFT de 8 pontos fica....
31
33 Carlos Alexandre Mello – [email protected]
Outras FFTs
Cooley-Tukey é também chamado de Radix-2
Existem Radix-4 e Radix-8
Danielson-Lanczos
Quebra em sequências de tamanho primo como uma
fatoração
Winograd
Para DFTs de N pequeno (até 16)
Re-ordena os dados de entrada e saída
34 Carlos Alexandre Mello – [email protected]
FFT
Referências:
Discrete-Time Signal Processing, J.R.Buck,
A.Oppenheim e R.W.Schafer, Prentice-Hall,
1999
Fast Algorithms for Digital Signal Processing,
R.E.Blahut, Addison-Wesley, 1985
34