A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Multiplicação de Matrizes Colégio Batista Santos Dumont Olimpíada Brasileira de Informática Wladimir Araújo Tavares."— Transcrição da apresentação:

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

2 Problema Encontrar uma ordem para a multiplicação de 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 A n x m por uma matriz B m x p é n x m x p.

3 Seja A 1 : 5 x 2 A 2 :2 x 3 A 3 : 3 x 4 A 4 : 4 x 5 A 1 x A 2 x A 3 A 1 x A 2 x A 3 x A 4 A 1 x A 2 x A 3 x A 4 (A 1 x A 2 )x A 3 ((A 1 x A 2 ) x A 3 ) x A 4 A 1 x (A 2 x A 3 ) ((A 1 x A 2 ) x (A 3 x A 4 )) (A 1 x (A 2 x A 3 )) x A 4 (A 1 x (A 2 x A 3 )) x A 4 A 1 x ((A 2 x A 3 ) x A 4 ) Veja que existe vários sub-problemas que se repetem.

4 Podemos atacar esse problema resolvendo todas as multiplicações envolvendo 2 matrizes e depois para a multiplicações envolvendo 3 matrizes e finalmente resolver o problema. Vamos denotar m[i,j] = custo de multiplicar as matrizes de A i...A j. Vamos denotar b[i-1],b[i] como as dimensões das matrizes. b[0]=5 b[1]=2 b[2]=3 b[3]=4 b[4]=5 Multiplicações envolvendo 1 matriz tem custo 0. Multiplicações envolvendo 2 matrizes: m[1,2] = 5 x 2 x 3 = 30 m[2,3] = 2 x 3 x 4 = 24 m[3,4] = 3 x 4 x 5 = 60

5 Multiplicação envolvendo 3 matrizes: Podemos calcular A 1 x A 2 x A 3 de duas formas: (A 1 x A 2 )x A 3 = m[1,2] +m[3,3]+ b[0] x b[2] x b[3] = (A 1 x A 2 )x A 3 = m[1,2] +m[3,3]+ b[0] x b[2] x b[3] = x 3 x 4 = 90. A 1 x (A 2 x A 3 ) = m[1,1] +m[2,3] b[0] x b[1] x [3] = x 2 x 4 = 64. O custo mínimo para calcular m[1,3] =64 Podemos calcular A 2 x A 3 x A 4 de duas formas (A 2 x A 3 )x A 4 = m[2,3] +m[4,4]+ b[1] x b[3] x b[4] = x 4 x 5 = 64 A 2 x (A 3 x A 4 ) = m[2,2] +m[3,4] b[1] x b[2] x [4] = x 3 x 5 = 90 m[2,4]=64

6 Para a multiplicação de tamanho 2 temos 4 formas: A 1 x (A 2 x A 3 x A 4 ) = m[1,1] + m[2,3] + b[0] x b[1] x b[4] x 5 x 5 = 114 ((A 1 x A 2 ) x (A 3 x A 4 )) = m[1,2] + m[3,4] +b[0] x b[2] x b[4] x 3 x 5 = 120 (A 1 x A 2 x A 3 ) x A 4 = m[1,3] + m [4,4] + b[0] x b[3] x b[4] x 4 x 5 = 104 Logo, m[1,4] = 104

7 Em geral, Em geral, m[i,j] = min i<=k

8 Algoritmo Para i=1 até n faça m[i,i] = 0 variando as diagonais variando as diagonais Para u=1 até n-1 faça Para u=1 até n-1 faça Para i = 1 ate n – u faça Para i = 1 ate n – u faça j = i + u j = i + u min = s[i,j] = 0 min = s[i,j] = 0 Para k = i ate j faca Para k = i ate j faca q = m[i,k] + m[k+1][j] + b[i-1] * b[k] * b[j] q = m[i,k] + m[k+1][j] + b[i-1] * b[k] * b[j] Se q < min então { min = q s[i,j] = k } Se q < min então { min = q s[i,j] = k } m[i,j] = min m[i,j] = min

9 Construindo a solução ótima Print-MCM(s,i,j) if i=j then imprima Ai else imprima "(" + Print-MCM(s,1,s[i,j]) + "*" + Print-MCM(s,s[i,j]+1,j) + ")"


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

Apresentações semelhantes


Anúncios Google