Prudutu
de]l1afrizes:
.
umaaburdagemmaiseficiente
. Pedro Soaresda Silva Neto*
RESUMO
. ' -.
Oproduto deduasmatrizes nxnexige 8(n3
) passos conlou'sodo algoritmo
tradicionaL Sera apresentadoo algoritmode Strassen que reduzessa complexidade para 8(n2.81).
l.INTRQDU<;AQ
.
S
.
.
ejam AeBduasmatrizes nxo a, '.' setemm, Ult.iplicadas, e sejaC 0 seu
. '. produto. 0 algoritmo chlssico de produto de matrizes e obtido diretamente da definic;ao:
II
Cij=~AikBkj'
k",1Cada elementoda matriz C e cal'-cuI ado em urn tempo 8(n) (gasta n pas-sos), ao todo, nprodutos e n somas.
As-sume~se que adic;ao escalar. emultiplica-c;aosao operaC;6esekmentares. Des(H~ que
ha
n2 elementos a sen~nicalculadospara'. *Maj OEM - Instituto Militar de Engenharia:~Departme~tdde
Sistemase·Computagao. .
.obten9ao de C, oprodutodeA e B pode
. ser calculado em8(n, " , , 3).
No final da'decadade 60, Strassem apresentou uma melhora para esse algoritmo. A idei<:i.basica ebaseadana estrategia dividir para conquistar.Deseja-seobtero produto C = AB, on de A,B eC sao matrizes nxn. Assumindo-se que n e uma potenciade 2, pode-se dividir cada uma das matrizes emquatrosubtnatrizes
nl2 x nl2 :
Oproduto seraobtido mediante as seguinte opel'a<;6es:
A MATEMATICA NA CULTURA
A matriz
e
dada por C = (M)+ M2 - M4+
M 6) .. (M4+
Ms) (M6+ M7) ... (M2 - M3+
M4S - Ms)
A descoberta de Strassen
e
uma abordagem recursiva que exige apenas 7 multiplica-c;5es de matrizes que gastam 8(n3) passos cada, e 24 adic;5es. de matrizes com 8(n2) passos cada uma.
2. 0 ALGORITMO DE STRASSEN
Algoritmo Strassen (A,B,n)
- I*Retoma M
=
A *B, onde A e B sao matrizes nxn e ne
assumido como potencia de2*
1
- inicio
- se n == 1 fa~a entao
- retornar M
=
A *BI*multiplicaC;ao escalar*l;- senao
- Particionar A
=
eB= , onde Aij e Bij sao matrizes de tamanho (n/2) x (n/2);- M)
=
Strassen( A)2 - A22, B21+ B22,n/2);=
A22, BII- M3
=
Strassen( All -A21, BII+
B12, nl2);- M4
=
Strassen( All+
A12, B22, nl2);- Ms = Strassen( All' BI2 -B22, nl2);
- M6
=
Strassen(A22, B21 - BII , nl2);- M7
=
Strassen( A21 + A22, BII , nl2);- ell
=
MI+
M2 -M4+
M6;- Retorne
e
=
- Fim
3. COMPLEXIDADE DO ALGORITMO
Passaremos a analisar a complexidade do algoritmo apresentado.
Seja T(n) 0 numero de passos necessarios para calcular 0 produto de duas matrizes de
dimensao n. A partir do algoritmo de Strassen pode-se concluir que:
T(n)
=
7T(nl2)+
18(nl2)2 pois sao necessarias 7 chamadas recursivas ao algoritmo comma-trizes de tamanho nl2 e 18 opera<;5es de soma e subtra<;ao entre matrizes de dimensao nl2.
Substituindo os val ores de n por nl2, obtem-se:
que e equivalente
a
expressao a seguir.A MATEMATICA NA CULTURA
Substituindo sucessivamente ate atingir T(1), tem-se:
• <-I n <-2 11 '-' n
)
2
( )
2
( )
2
T(fl)=
7 T(l) + 7 .l8(2k + 7 .18 2<-1 + ... +7.182"
k 7i-1 1 k(7)i
k 1 k 2 . T(n)=7 +18n-L2T=7 +18n-L-i=1 2 7 j=l 4
[(
~)k
-1]
1 7 4 T(n)=
n1og2 7+
18n2 74 7 --1 4 T(n)=
7.n2 .81 - 6n2 (1) (2) (3)Dessa forma, 0 algoritmo de Strassen tern complexidade 8(n281), para algum valor n
>
no' 0 que 0 torna superior ao algoritmo tradicional. A expressao (3) nao considera outras
opera<;5es que nao sejam soma e subtra<;ao, havendo constantes multiplicativas nao revela-das. A expressao (3) considera que a recursao foi aprofundada ate obter matrizes de dimen-sao lxI, mas sabe-se que 0 algoritmo gasta 7 produtos e 18 somas para calcular uma matriz
2x2 e 0 algoritmo tradicional gasta 8 multiplica<;5es e 4 somas. Usando esse raciocfnio, seria
interessante suspender a recursao para alguma constante no' usando 0 algoritmo tradicional
para matrizes de dimens5es men ores que noxno' 0 valor dessa constante depende muito da
implementa<;ao e po de ser determinada experimental mente. Admite-se que 0 valor no deve
ser no minimo 453
.
o
limite atual para produto de matrizes e 8(n2376), mas 0 algoritmo utilizado nao e tao
pn'itico comparado com 0 algoritmo de Strassen.
o
algoritmo apresentado pode ser generalizado para matrizes com dimensoes arbitni -rias, nao necessariamente potencia de 2. Basta modificar 0 algoritmo para acrescentar uma linha ou uma coluna de zeros quando 0 numero de linhas ou de colunas for impar, possibili-tando-o particionamento da matriz ao meio. Esse problema nao existe para matrizes com ambas dimensoes menores do que no' a constante abaixo da qual usa-se 0 algoritmo tradicio-nal.A literatura tern explorado outros esquemas semelhantes ao apresentado, como 0 es-quema de matrizes 3x3 propos to em2
, que requer apenas 23 multiplica<;oes ao inves de 27.
o
esquema proposto por Strassen pode ser melhorado com a redu<;ao das opera<;oes de adi<;ao/subtra<;ao de 18 para 15 opera<;oes. Essa melhoria nao e muito grande, mas ajuda a reduzir urn pouco 0 numero de opera<;oes, com urn gasto maior de mem6ria.Como caniter ilustrativo, urn produto entre matrizes densas com dimensoes da ordem de 1000x 1000,0 algoritmo de Strassen e cerca de tres vezes mais nipido do que 0 algoritmo tradicional, 0 que nao pode ser desprezado em aplica<;oes pnHicas.
REFERENCIAS BIBLIOGRAFIAS
1. Gilles Brassard and Paul Bratley, Fundamentals of Algorithmics, Prentice Hall, 1996 2. J.D. Laderman, A non-commutative algorithm for mUltiplying 3x3 matrices using 23
multiplications, Bull. Am. Math.Soc., 82 (1976) 126-128.
3. Cormen, T.H., et. aI., Introduction to Algorithms, McGraw-Hill, 1990.