Sunteți pe pagina 1din 10

Algoritmul WINOGRAD

Operaiile de convoluie i transformata Fourier discret (TFD) ocup un loc


important n prelucrarea numeric a semnalelor. Din pcate ele implic un volum
relativ mare de calcule, ceea ce ridic mari probleme, mai ales n cazul realizrii
acestor operaii n timp real. De aceea, eforturi importante au fost orientate n direcia
gsirii unor algoritmi rapizi de efectuare a operaiilor respective.
Sa reamintim pentru inceput alte cateva elemente din teoria numerelor. Fie
secventa:
x n
n
a mod N, aN, n=0,1,2,... (1)
Evaluarea fiind fcut modulo N, secvena de mai sus va avea un numr finit
de valori distincte, ea fiind de fapt periodic. Ne intereseaz perioada maxim ce se
poate obine pentru un N dat. Se poate demonstra c perioada maxim este dat de
funcia lui Euler (N). Aceasta reprezint, prin definiie, numrul de numere naturale
mai mici ca N i relativ prime fa de acesta. Numerele a care conduc la realizarea
perioadei maxime se numesc rdcini primitive ale inelului Z N i vor fi notate cu g.
Prin urmare secvena g
n
conine un numr de (N) valori distincte
g
1
n
g
2
n
mod N,
,
2 1
n n
0
, 1 ) ( ,
2 1
N n n
g
N g
N
mod 1
0 ) (

(2)
Referitor la functia
) (N
se poate arata ca:
-daca N este un numar prim,
1 ) ( N N
;
-daca N este de forma N=p
c
, unde p este prim si cN , atunci
). 1 ( ) (
1


p p N
c
Algoritmul Winograd utilizeaza asa numita permutare Rader. Sa luam pentru
inceput cazul N prim. Se poate scrie:

1
0
) ( ) 0 (
N
n
n x X

, ) ( ) 0 ( ) (
1
1

+
N
n
nk
n
W n x x k X
k=1,2,...,N-1 (3)
Va exista o rdcin primitiv g a lui Z n , avnd proprietatea
2 , 0 , , N j i j i g g
N
j
N
i
si (4)
0
n
i
g
Deci
N
i
g
pentru i = 0,1,... , N 2K , este o permutare a numerelor 1,2,..,N-1.
Ca urmare vom putea exprima indicii k si n prin:
2 ,... 1 , 0 ,

N n g n
N
n

2 ,... 1 , 0 , N k g n
N
k
(5)
Rezult:

1
0
) ( ) 0 (
N
n
n x X
( ) ( ) . 2 ,... 1 , 0 , ) 0 (
2
0
+

N k W g x X g X
n k
g
N
N
n
N
n
N
k
(6)
Se observ c ultima sum este o convoluie ciclic n n i k. Acest procedeu de
conversie a unei TFD de ordin N ntr-o convoluie ciclic de ordin N-1 se numete
permutare Rader. S mai observm c ultima din relaiile (6) mai poate fi scris
( ) ( )( ) . 2 ,..., 1 , 0 , 1 ) 0 (
2
0
+

N k W g x X g X
n k
g
N
N
n
N
n
N
k
(7)
Exemplu
Se considera TFD de ordin 5:

4
0
) ( ) 0 (
n
n x X
. 4 , 3 , 2 , 1 , ) ( ) 0 ( ) (
4
1
5
+

k W n x X k X
n
nk
(9)
Se observa ca g=2 este o radacina primitiva a lui Z 5 . Intr-adevar,
1 2 , 3 2 , 4 2 , 2 2 , 1 2
5
4
5
3
5
2
5
1
5
0

(10)
iar
3
5
1

g
, deoarece
. 1 3 2
5

Punand
k n
k n 2 , 2

:

4
0
) ( ) 0 (
n
n x X

( ) ( ) . 4 , 3 , 2 , 1 , 0 , 2 ) 0 ( 2
5
3
0
5 5
+

k W x x X
n k
n
n k
(11)
Ecuatiile de mai inainte pot fi scrise:
[ ]
1
1
1
1
1
1
]
1

) 4 (
) 3 (
) 2 (
) 1 (
) 0 (
1 1 1 1 1 ) 0 (
x
x
x
x
x
X
(12)
( )
( )
( )
( )
1
1
1
1
]
1

+
1
1
1
1
]
1

1
1
1
1
1
]
1

1
1
1
1
]
1

+
1
1
1
1
1
]
1

1
1
1
1
1
]
1

1
1
1
1
]
1



) 0 (
) 0 (
) 0 (
) 0 (
) 2 (
) 4 (
) 3 (
) 1 (
) 3 (
) 2 (
) 1 (
) 0 (
2
2
2
2
) 4 (
) 3 (
) 2 (
) 1 (
1
5
2
5
4
5
3
5
3
5
1
5
2
5
4
5
4
5
3
5
1
5
2
5
2
5
4
5
3
5
1
5
5
3
5
2
5
1
5
0
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
2
5
0 1 2 3
1 0 1 2
2 1 0 1
3 2 1 0
x
x
x
x
x
x
x
x
W W W W
W W W W
W W W W
W W W W
x
x
x
x
x
x
x
x
W W W W
W W W W
W W W W
W W W W
X
X
X
X
(13)
Pe de alta parte relatia (11) se mai poate scrie sub forma
( ) ( )( ) 3 , 2 , 1 , 0 , 1 2 ) 0 ( 2
) ( ) 0 (
2
5
3
0
5 5
4
0
+

k W x X X
n x X
n k
n
n k
n
(14)
Ultima suma reprezinta o convolutie si o vom calcula utilizand algoritmul Winogrand.
( ) ( )
( ) ( )
( )
( ) ( ) 1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1



2 sin sin
2 sin
sin
cos 2 cos
2
1
1 cos 2 cos
2
1
1
1
1
1
0 2 0 2
2 2 2 2
2 2 2 2
1 1 1 1
1 1 1 1
4
1
3
5
4
5
2
5
1
5
5
4
3
2
1
j
j
j
W
W
W
W
jB
jB
jB
B
B
(15)
unde = 5 / 2 si in continuare:
) 0 (
1
1
1
1
) 2 (
) 4 (
) 3 (
) 1 (
1 1 1 1
1 0 1 0
0 1 0 1
1 1 1 1
1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 0 1 1 1
1 1 0 1 1
) 3 (
) 4 (
) 2 (
) 1 (
5
4
3
2
1
X
jB
jB
jB
B
B
x
x
x
x
X
X
X
X
1
1
1
1
]
1

,
_

1
1
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
1
1
]
1


1
1
1
1
]
1

1
1
1
1
]
1

(16)
Operaia e comutativ i poate fi nlocuit cu o nmulire de matrice, nlocuind
vectorul ce conine elementele B i cu o matrice diagonal.
) 0 (
1
1
1
1
) 2 (
) 4 (
) 3 (
) 1 (
1 1 1 1
1 0 1 0
1 1 0 1
1 1 1 1
1 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 1 1 1
1 1 0 1 1
1 0 1 1 1
1 1 0 1 1
) 3 (
) 4 (
) 2 (
) 1 (
5
4
3
2
1
X
x
x
x
x
jB
jB
jB
B
B
X
X
X
X
1
1
1
1
]
1

+
1
1
1
1
]
1

1
1
1
1
1
1
]
1



1
1
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1


(17)
Introducand si pe X(0):
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1


1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

) 2 (
) 4 (
) 3 (
) 1 (
) 0 (
1 1 1 1 0
1 0 1 0 0
0 1 0 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
1 0 1 1 1 1
1 1 0 1 1 1
1 0 1 1 1 1
1 1 0 1 1 1
0 0 0 0 0 1
) 3 (
) 4 (
) 2 (
) 1 (
) 0 (
5
4
3
2
1
0
x
x
x
x
x
jB
jB
jB
B
B
B
X
X
X
X
X

(18)
B i sunt nite constante reale, precalculate pentru un ordin dat i B 0 =1. Operaiile ce
trebuie efectuate, pot fi deci reprezentate prin:
1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

) 2 (
) 4 (
) 3 (
) 1 (
) 0 (
) 3 (
) 4 (
) 2 (
) 1 (
) 0 (
x
x
x
x
x
CBA
X
X
X
X
X
(19)
Vor trebui deci calculate succesiv:
1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

+ + +
+ + +
+ + + +

1
1
1
1
1
1
]
1

5
4
3
2
1
0
) 2 ( ) 4 ( ) 3 ( ) 1 (
) 2 ( ) 3 (
) 4 ( ) 1 (
) 2 ( ) 4 ( ) 3 ( ) 1 (
) 2 ( ) 4 ( ) 3 ( ) 1 (
) 2 ( ) 4 ( ) 3 ( ) 1 ( ) 0 (
) 2 (
) 4 (
) 3 (
) 1 (
) 0 (
v
v
v
v
v
v
x x x x
x x
x x
x x x x
x x x x
x x x x x
x
x
x
x
x
A
(20)
1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

5
4
3
2
1
0
5 5
4 4
3 3
2 2
1 1
0 0
5
4
3
2
1
0
m
m
m
m
m
m
v jB
v jB
v jB
v B
v B
v B
v
v
v
v
v
v
B
(21)
1
1
1
1
1
1
]
1

+ + + +
+ + +
+ +
+

1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

5 3 2 1 0
5 4 2 1 0
5 3 2 1 0
5 4 2 1 0
0
5
4
3
2
1
0
) 3 (
) 4 (
) 2 (
) 1 (
) 0 (
m m m m m
m m m m m
m m m m m
m m m m m
m
m
m
m
m
m
m
C
X
X
X
X
X
(22)
Se organizeaz astfel adunrile, nct s se foloseasc n continuare rezultatul
uneiadunri, ori de cte ori este posibil (fig.1). Rezult n total 6 nmuliri (de fapt 5,
cciBo=1) i 17 adunri. n general matricele A i C vor conduce la nite operaii de
nsumare la intrare i ieire, n centru rmnnd o zon de multiplicri (fig.2). Se
vede c numrul variabilelor intermediare (v,m), ce trebuie prelucrate n zona de
multiplicri este mai mare dect N, necesitnd memorie suplimentar.
Fig1. Graficul unei transformari pentru N=5.
Un alt caz important este acela cnd N=p
c
, unde p e prim i c natural . S-a artat c n
cest caz exist cel puin o rdcin primitiv g care va genera o secven deperioad
) 1 ( ) (
1


p p N
c
. Vom utiliza pentru inceput reprezentarea
1 ,..., 0 , 1 ,..., 0 ,
2
1
1 2
1
1 2 1
+ +

p n p n n p n n
p
N
n n
c c
(23)
Pentru k
0
2

rezulta k
p omod
si
1 1
1
2
1
1
0
1
0
1
2
1
1 1
) ( ) ( ) ( ) (
n k
p
p
n
p
n
p
n
c n pk
N
c
c c
W n p n x W n x pk X k X

,
_

+
(24)
Fig 2. Gruparea operatiilor in cazul algoritmului Winograd
Expresia din parantez reprezint de fapt o TFD n N/p puncte a secvenei

+
1
0
2
1
1
2
) (
p
n
c
n p n x
(25)
Pentru k 0mod p , vom separa X (k )n dou


+
p n mpdp n
nk
N
nk
N
W n x k B W n x k A k B k A k X
mod 0 0
) ( ) ( , ) ( ) ( ), ( ) ( ) (
(26)
Vom utiliza o noua reprezentare a indicilor
1 ,..., 0 , , 1 ,..., 0 ,
,
'
2
'
2
1 '
1
'
1
'
2
1 '
1
'
2
'
1
'
2
'
1

+ + +

p k n p k n
k p k k
p
N
k k n pn n
c
c
(27)
asa incat rezulta
( ) ( )

+
1
0
1
'
1
'
1
'
2
1 '
1
1
'
1
1
'
1
'
1
'
1
1
'
1
'
1
'
1
'
2
) (
c c
c
c
p
n
p
n
n k
p
n pk n k p
N
c
W pn x W pn x k p k A
(27)
Aceasta este ns o transformat de ordinul p
1 c
, n care termenii corespunznd
lui k
'
1
=0 nu se calculeaz. Se observ c membrul drept nu depinde de k
'
2
. Rmne
de
evaluat B(k), in care n,k 0mod p si in consecinta aceasta este o transformare de
ordinul
) 1 ( 1 ) 1 (
1 1

c c c
p p p p
Indicii n i k vor fi i acum generai utiliznd o rdcin primitiv g a lui Z N :
1 ) 1 ( ,..., 0 , , mod , mod
1


p p n k p g n p g k
c c n c k
asa incat

1 ) 1 (
0
1
) ( ) (
p p
n
n k
N
n k
c
W g x g B
care reprezint o convoluie ce poate fi calculat cu algoritmul Winograd. De exemplu
pentru N=9=3
2
, se separ mai nti termenii corespunznd lui k0 mod 3, adic
pentru
k=0,3,6. Ei se evalueaz cu
1 1
1 2
3
2
0
2
0
2 1 1
) 3 ( ) 3 (
n k
n n
W n n x k X


,
_

+
Aceast transformat de ordinul trei se poate calcula fie direct, fie utiliznd algoritmul
Winograd, prin reducerea la o convoluie de ordinul doi, dup separarea lui X[0].
Fig 3.
Expresia

+
2
3
'
1
'
2
'
1
'
1
'
1
'
1
) 3 ( ) 3 (
n
k n
W n x k k A
este tot o transformat de ordinul trei, la care nu se evalueaz termenul pentru k
'
1
=0.
Cum membrul drept nu depinde de k
'
2
, iar k
'
1
=0 nu intervine, rmn doar dou valori
distincte, pentru calculul crora se poate de asemenea utiliza algoritmul Winograd. Se
verific uor c g=2 este o rdcin primitiv n Z 9 ,
2 5 , 4 5 , 8 5 , 7 5 , 5 5 , 1 5 , 5 2
, 5 2 , 7 2 , 8 2 , 3 2 , 2 2 , 1 2
9
5
9
4
9
3
9
2
9
1
9
0
9
1
9
5
9
4
9
3
9
2
9
1
9
0

Termenii
B(k) se calculeaza ca o convolutie a secventelor
( )
T
T n
W W W W W W W
x x x x x x x
n
] , , , , , [
)] 2 ( ), 4 ( ), 8 ( ), 7 ( ), 5 ( ), 1 ( [ 5
5
9
7
9
8
9
4
9
2
9
1
9
2
9

Rezulta schema din figura 4.


Algoritmul prezentat pn aici este foarte eficient pentru N mic, N fiind numr
prim. Pentru valori mai mari ale lui N, se poate recurge la descompunerea n factori
primi N=N
1
N
2
...NQ , dup cum s-a vzut la procedeul anterior, i pentru fiecare din
transformatele de grade mai mici se poate aplica acest algoritm.
Fig 4.
Sa consideram cazul N=
.
2 1
N N
Dupa cum s-a vazut, in acest caz
2 1
N N N
W W W
Produsul Kronecker are proprietatea
) )( ( D B C A CD AB
si se poate deci scrie:
CBA A A B B C C A B C A B C W
A B C W A B C W
N
N N


) )( )( ( ) ( ) (
,
2 1 2 1 2 1 2 2 2 1 1 1
2 2 2 1 1 1
2 1
sau in general, cand Q
N N N N ...
2 1

) ... )( ... )( ... ( ) ( ... ) (


1 1 1 1 1 1 Q Q Q Q Q Q N
A A B B C C A B C A B C W
Se observ c i aici toate nmulirile sunt concentrate "la mijloc", aa nct se
calculeaz mai nti toate adunrile semnalelor de intrare (corespunztoare tuturor
modulelor), apoi toate nmulirile i n final, al doilea grup de adunri. Sub aceast
form, algoritmul Winograd pentru transformata Fourier se ntlnete sub denumirea
prescurtat WFTA (Winograd Fourier Transform Algorithm). El are n comun cu
algoritmul PFA descompunerea n module pornind de la factorizarea lui N, dar n
algoritmul PFA modulele sunt mai departe prelucrate independent.
n WFTA produsul Q
B B B B ...
1 1 , poate fi precalculat si numarul total
de inmultiri este
), ( )... ( ) ( ) (
2 1 Q
N M N M N M N M
unde M(N i ) este numarul de
inmultiri pentru modulul de lungime N i .
Pentru doi factori, numarul de adunari e dat de
), ( ) ( ) (
2 2 1 1 1
N A N N A N N A +

unde A(N i ) este numarul de adunari pentru modului de lungime N i .
Algoritmul Winograd este foarte eficient ca volum de calcul , dar relativ dificil
de programat.
BIBLIOGRAFIE
1. C. Marin. Teoria Sistemelor; Editura Universitaria, Craiova, 2001.
2. Mateescu A. Prelucrarea numeric a semnalelor; Editura Tehnic, Bucureti, 1997
3. Mihalcea a. Prelucrarea optim a semnalelor n sisteme informaionale; Editura Militar, Bucureti,
1987

S-ar putea să vă placă și