Documente Academic
Documente Profesional
Documente Cultură
(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