Multiplicação de Matrizes

9
Multiplicação de Multiplicação de Matrizes Matrizes Colégio Batista Santos Colégio Batista Santos Dumont Dumont Olimpíada Brasileira de Olimpíada Brasileira de Informática Informática Wladimir Araújo Tavares Wladimir Araújo Tavares

description

Multiplicação de Matrizes. Colégio Batista Santos Dumont Olimpíada Brasileira de Informática Wladimir Araújo Tavares. Problema. Encontrar uma ordem para a multiplicação de matrizes que minimize o número de operações. Sabendo que o custo de multiplicar uma matriz - PowerPoint PPT Presentation

Transcript of Multiplicação de Matrizes

Page 1: Multiplicação de Matrizes

Multiplicação de Multiplicação de MatrizesMatrizes

Colégio Batista Santos Colégio Batista Santos DumontDumont

Olimpíada Brasileira de Olimpíada Brasileira de InformáticaInformática

Wladimir Araújo TavaresWladimir Araújo Tavares

Page 2: Multiplicação de Matrizes

ProblemaProblema

Encontrar uma ordem para a Encontrar uma ordem para a multiplicação demultiplicação de

matrizes que minimize o número de matrizes que minimize o número de operações.operações.

Sabendo que o custo de multiplicar Sabendo que o custo de multiplicar uma matriz uma matriz

A A n x m n x m por uma matriz B por uma matriz B m x p m x p é é

n x m x p.n x m x p.

Page 3: Multiplicação de Matrizes

Seja Seja

AA1 1 :: 5 x 2 A5 x 2 A2 2 :2 x 3 A:2 x 3 A3 3 : 3 x 4 A: 3 x 4 A4 4 :: 4 x 5 4 x 5

AA1 1 x Ax A22 x A x A33 AA1 1 x Ax A22 x A x A3 3 x Ax A44

(A(A1 1 x Ax A22 )x A )x A33 ((A((A1 1 x Ax A22) x A) x A33)) x x AA44

AA1 1 x (Ax (A22 x A x A3 3 )) ((A((A1 1 x Ax A22) x (A) x (A3 3 x x AA44))))

(A(A1 1 x (Ax (A22 x A x A33)))) x x AA44

AA1 1 x ((Ax ((A22 x A x A33)) x x AA44))

Veja que existe vários sub-problemas que se repetem.

Page 4: Multiplicação de Matrizes

Podemos atacar esse problema resolvendo todasPodemos atacar esse problema resolvendo todasas multiplicações envolvendo 2 matrizes e depoisas multiplicações envolvendo 2 matrizes e depoispara a multiplicações envolvendo 3 matrizes epara a multiplicações envolvendo 3 matrizes efinalmente resolver o problema.finalmente resolver o problema.Vamos denotar m[i,j] = custo de multiplicar asVamos denotar m[i,j] = custo de multiplicar as

matrizes de Amatrizes de Aii...A...Ajj. Vamos denotar b[i-1],b[i]. Vamos denotar b[i-1],b[i]como as dimensões das matrizes.como as dimensões das matrizes.b[0]=5 b[1]=2 b[2]=3 b[3]=4 b[4]=5b[0]=5 b[1]=2 b[2]=3 b[3]=4 b[4]=5Multiplicações envolvendo 1 matriz tem custo 0.Multiplicações envolvendo 1 matriz tem custo 0.Multiplicações envolvendo 2 matrizes:Multiplicações envolvendo 2 matrizes:m[1,2] = 5 x 2 x 3 = 30m[1,2] = 5 x 2 x 3 = 30m[2,3] = 2 x 3 x 4 = 24m[2,3] = 2 x 3 x 4 = 24m[3,4] = 3 x 4 x 5 = 60m[3,4] = 3 x 4 x 5 = 60

Page 5: Multiplicação de Matrizes

Multiplicação envolvendo 3 matrizes:Multiplicação envolvendo 3 matrizes:Podemos calcular APodemos calcular A1 1 x Ax A22 x A x A3 3 de duas formas:de duas formas: (A(A1 1 x Ax A22 )x A )x A3 3 = m[1,2] +m[3,3]+ b[0] x b[2] x = m[1,2] +m[3,3]+ b[0] x b[2] x

b[3] =b[3] =30 + 0 + 5 x 3 x 4 = 90.30 + 0 + 5 x 3 x 4 = 90.AA1 1 x (Ax (A22 x A x A33) = m[1,1] +m[2,3] b[0] x b[1] x [3] =) = m[1,1] +m[2,3] b[0] x b[1] x [3] =0 + 24 + 5 x 2 x 4 = 64.0 + 24 + 5 x 2 x 4 = 64.O custo mínimo para calcular m[1,3] =64O custo mínimo para calcular m[1,3] =64Podemos calcular APodemos calcular A22 x A x A3 3 x Ax A4 4 de duas formasde duas formas

(A(A2 2 x Ax A33 )x A )x A4 4 = m[2,3] +m[4,4]+ b[1] x b[3] x b[4] = m[2,3] +m[4,4]+ b[1] x b[3] x b[4] ==

24 + 0 + 2 x 4 x 5 = 6424 + 0 + 2 x 4 x 5 = 64AA2 2 x (Ax (A33 x A x A44) = m[2,2] +m[3,4] b[1] x b[2] x [4] =) = m[2,2] +m[3,4] b[1] x b[2] x [4] =0 + 60 + 2 x 3 x 5 = 900 + 60 + 2 x 3 x 5 = 90m[2,4]=64m[2,4]=64

Page 6: Multiplicação de Matrizes

Para a multiplicação de tamanho 2 temos 4 Para a multiplicação de tamanho 2 temos 4 formas:formas:

AA1 1 x (Ax (A22 x A x A3 3 x Ax A44) = m[1,1] + m[2,3] + b[0] x ) = m[1,1] + m[2,3] + b[0] x b[1] x b[4]b[1] x b[4]

0 + 64 + 2 x 5 x 5 = 1140 + 64 + 2 x 5 x 5 = 114

((A((A1 1 x Ax A22) x (A) x (A3 3 x Ax A44)) = m[1,2] + m[3,4] +b[0] )) = m[1,2] + m[3,4] +b[0] x b[2] x b[4]x b[2] x b[4]

30+ 60 + 2 x 3 x 5 = 12030+ 60 + 2 x 3 x 5 = 120

(A(A1 1 x Ax A22 x A x A33)) x Ax A4 4 = m[1,3] + m [4,4] + b[0] x = m[1,3] + m [4,4] + b[0] x b[3] x b[4]b[3] x b[4]

64 + 0 + 2 x 4 x 5 = 10464 + 0 + 2 x 4 x 5 = 104

Logo, m[1,4] = 104Logo, m[1,4] = 104

Page 7: Multiplicação de Matrizes

Em geral,Em geral,

m[i,j] = min m[i,j] = min i<=k<ji<=k<j( m[i,k] + m[k+1,j] + b[i-1] ( m[i,k] + m[k+1,j] + b[i-1] x b[k] x b[j])x b[k] x b[j])

Se resolvermos primeiro os casos menores Se resolvermos primeiro os casos menores poderemospoderemos

utilizar estes resultados para construir utilizar estes resultados para construir casos maiores.casos maiores.

Page 8: Multiplicação de Matrizes

AlgoritmoAlgoritmo

Para i=1 até n faça m[i,i] = 0Para i=1 até n faça m[i,i] = 0 variando as diagonaisvariando as diagonais Para u=1 até n-1 façaPara u=1 até n-1 faça Para i = 1 ate n – u façaPara i = 1 ate n – u faça j = i + uj = i + u min = ∞ s[i,j] = 0min = ∞ s[i,j] = 0 Para k = i ate j facaPara k = i ate j faca q = m[i,k] + m[k+1][j] + b[i-1] * b[k] q = m[i,k] + m[k+1][j] + b[i-1] * b[k]

* b[j] * b[j] Se q < min então { min = q Se q < min então { min = q s[i,j] = s[i,j] =

k }k } m[i,j] = min m[i,j] = min

Page 9: Multiplicação de Matrizes

Construindo a solução Construindo a solução ótimaótima

Print-MCM(s,i,j)Print-MCM(s,i,j)  if i=j then  if i=j then    imprima “Ai”    imprima “Ai”  else  else    imprima "(" + Print-    imprima "(" + Print-MCM(s,1,s[i,j]) + "*" + Print-MCM(s,1,s[i,j]) + "*" + Print-MCM(s,s[i,j]+1,j) + ")" MCM(s,s[i,j]+1,j) + ")"