SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Multiplica¸c˜ao de Matrizes
Do O(n3
) ao O(n2
)
Diego Antonio Lusa
Universidade de Passo Fundo
3 de julho de 2014
1 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Roteiro
1 Matrizes
Opera¸c˜oes envolvendo matrizes
2 Matrizes e a Computa¸c˜ao
3 M´etodos para multiplica¸c˜ao de matrizes
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
4 Considera¸c˜oes finais
2 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Matrizes
Arranjo retangular composto por m linhas e n colunas;
Cada elemento ´e identificado em termos da linha e coluna a
qual pertence;
Quando o n´umero de colunas m for igual ao n´umeros de
linhas n, a matriz ´e dita quadrada de ordem n;
Matriz gen´erica
M3×4 =


m11 m12 m13 m14
m21 m22 m23 m24
m31 m32 m33 m34


3 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Matrizes Quadradas
Matrizes quadradas tˆem uma diagonal principal e uma
diagonal secund´aria;
Diagonal principal e secund´aria
M3×3


12 30 40
13 15 48
14 50 22


Mpri


12 . . . . . .
. . . 15 . . .
. . . . . . 22


Msec


. . . . . . 40
. . . 15 . . .
14 . . . . . .


4 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Matriz Identidade
A matriz identidade possui todos os elementos da diagonal
principal iguais a 1;
Os demais elementos s˜ao todos iguais a 0 (zero);
Caracteriza-se por ser o elemento neutro em opera¸c˜oes de
multiplica¸c˜ao;
Matriz Identidade
I3 =


1 0 0
0 1 0
0 0 1


5 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Representa¸c˜ao Computacional
Representadas atrav´es de tipos de dados estruturados;
Os arranjos s˜ao as estruturas comumente utilizadas para
armazenar matrizes;
Algoritmo gen´erico
1. define A[2][2];
2. A[1][2] = 3;
6 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Opera¸c˜oes
Pode-se aplicar opera¸c˜oes como soma, subtra¸c˜ao e
multiplica¸c˜ao em matrizes;
A soma requer o mesmo n´umero de linhas e colunas em
ambas as matrizes;
A complexidade assint´otica de uma opera¸c˜ao de soma ´e igual
a O(n2);
Considerando-se duas matrizes quaisquer A e B, a opera¸c˜ao
de adi¸c˜ao C = A + B ´e definida por:
Defini¸c˜ao matem´atica da soma
cij = aij + bij
7 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Opera¸c˜oes - Soma
Exemplo
(I) A2×2 =
1 2
3 4
(II) B2×2 =
5 −6
−8 9
(III) C2×2 = A2×2 + B2×2 =
1 + 5 2 − 6
3 − 8 4 + 9
(IV) C2×2 =
6 −4
−5 13
8 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Opera¸c˜oes - Multiplica¸c˜ao
A multiplica¸c˜ao requer que o n´umero de colunas da primeira
matriz seja igual ao n´umero de linhas da segunda;
A complexidade assint´otica de uma opera¸c˜ao de multiplica¸c˜ao
´e igual a O(n3);
A multiplica¸c˜ao de matrizes ´e associativa, mas n˜ao ´e
comutativa. A × B × C ´e identico a A × (B × C). Contudo,
A × B ´e diferente de B × A;
Defini¸c˜ao matem´atica da multiplica¸c˜ao
pij =
a
k=1
mik × nkj
9 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Opera¸c˜oes envolvendo matrizes
Opera¸c˜oes - Multiplica¸c˜ao
Exemplo
(I) M2×2 =
1 2
3 4
(II) N2×3 =
5 6 7
8 9 10
(III) P2×3 = M2×2 × N2×3
(IV) P2×3 =
1 × 5 + 2 × 8 1 × 6 + 2 × 9 1 × 7 + 2 × 10
3 × 5 + 4 × 8 3 × 6 + 4 × 9 3 × 7 + 4 × 10
(V) P2×3 =
21 24 27
47 54 61
10 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Matrizes e a Computa¸c˜ao
A multiplica¸c˜ao de matrizes ´e uma das opera¸c˜oes mais b´asicas
para a computa¸c˜ao num´erica e simb´olica;
Aplica-se a diversos problemas de ´algebra linear, fatora¸c˜ao
polinomial, transforma¸c˜oes geom´etricas, entre outros;
O c´alculo do produto entre matrizes ´e uma opera¸c˜ao que
apresenta complexidade assint´otica O(n3);
Por muito tempo pensou-se que n˜ao seria poss´ıvel reduzir este
complexidade;
11 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
M´etodos para multiplica¸c˜ao de matrizes
Por meio de pesquisas, demostrou-se que seria poss´ıvel obter
coeficientes de complexidade menores que O(n3);
Neste contexto, destacam-se os m´etodos de:
Strassen
Winograd
Coppersmith-Winograd
12 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
M´etodo Tradicional
Possui complexidade assint´otica O(n3);
At´e 1960, era considerado o algoritmo ´otimo;
Caracter´ısticas
Executa (n3) multiplica¸c˜oes;
Executa n2(n − 1) somas;
13 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Pseudo-algoritmo
1. define A[2][2];
2. define B[2][3];
3. define C[2][3];
4. para cada i de 1 a 2 fa¸ca:
5. para cada j de 1 a 3 fa¸ca:
6. para cada k de 1 a 2 fa¸ca:
7. C[i][j] = C[i][j] + A[i][k]*B[k][j];
8. fim para;
9. fim para;
10. fim para;
14 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
M´etodo de Strassen
Desenvolvido pelo matem´atico alem˜ao Volker Strassen em
1969;
Obteve complexidade assint´otica O(nlog 7) ;
Serviu de referˆencia para trabalhos posteriores;
Enquanto o m´etodo tradicional requer 8 multiplica¸c˜oes e 4
somas para multiplicar duas matrizes de ordem 2, o m´etodo
de Strassem executa 7 multiplica¸c˜oes e 18 somas/subtra¸c˜oes;
Requer que a ordem das matrizes seja quadrada;
Caracter´ısticas
Executa 7 n
2
3
multiplica¸c˜oes;
Executa (11n − 4) × n2
4 somas;
15 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Matrizes de origem
A3


1 2 3
4 5 6
7 8 9

 B3


1 4 7
2 5 8
3 6 9


Tornando a ordem quadr´atica
A4




1 2 3 0
4 5 6 0
7 8 9 0
0 0 0 0



 B4




1 4 7 0
2 5 8 0
3 6 9 0
0 0 0 0




16 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapa 1 - Divis˜ao
A11
1 2
4 5
A12
3 0
6 0
A21
7 8
0 0
A22
9 0
0 0
B11
1 4
2 5
B12
7 0
8 0
B21
3 6
0 0
B22
9 0
0 0
17 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapas 2 - C´alculo dos subproblemas
P1 = (A11 + A22) × (B11 + B22)
P2 = (A21 + A22) × B11
P3 = A11 × (B12 − B22)
P4 = A22 × (B21 − B11)
P5 = (A11 + A12) × B22
P6 = (A21 − A11) × (B11 + B12)
P7 = (A12 − A22) × (B21 + B22)
18 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapa 3 - Conquista
C11 = P1 + P4 − P5 + P7
C12 = P3 + P5
C21 = P2 + P4
C22 = P1 + P3 − P2 + P6
19 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Resultado
C3 =
C11 C12
C21 C22
→






14 32
32 77
50 0
122 0
50 122
0 0
194 0
0 0






C3 =




14 32 50 0
32 77 122 0
50 122 194 0
0 0 0 0




C3 =


14 32 50
32 77 122
50 122 194


20 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
M´etodos de Winograd
Criado por Shmuel Winograd, em 1987;
Possui a mesma complexidade assint´otica que o m´etodo de
Strassen;
Requer um n´umero menor de somas e subtra¸c˜oes se
comparado ao m´etodo de Strassen.
Em contrapartida, necessita de um n´umero maior de passos;
Caracter´ısticas
Executa 7 n
2
3
multiplica¸c˜oes;
Executa 19n3
8 − n2 somas/subtra¸c˜oes;
21 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapas do processo
S1 = A21 + A22
S2 = S1 − A11
S3 = A11 − A21
S4 = A12 − S2
T1 = B12 − B11
T2 = B22 − T1
T3 = B22 − B12
T4 = B21 − T2
22 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapas do processo
P1 = A11 × B11
P2 = A12 × B21
P3 = S1 × T1
P4 = S2 × T2
P5 = S3 × T3
P6 = S4 × B22
P7 = A22 × T4
23 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Etapas do processo
U1 = P1 + P2
U2 = P1 + P4
U3 = U2 + P5
U4 = U3 + P7
U5 = U3 + P3
U6 = U2 + P3
U7 = U6 + P6
C11 = U1
C12 = U7
C21 = U4
C22 = U5
24 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
M´etodo Coppersmith-Winograd
M´etodo criado por Don Coppersmith e Shmuel Winograd em
1987;
Foi o primeiro algoritmo da hist´oria a obter coeficiente de
complexidade inferior a 2.5;
A complexidade do m´etodo ´e O(n2.376);
Permaneceu por duas d´ecadas como o m´etodo mais eficiente
conhecido;
Maior contribui¸c˜ao te´orica do que pr´atica;
25 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Considera¸c˜oes acerca dos m´etodos
O algoritmo de Strassen teve grande importˆancia na evolu¸c˜ao
dos m´etodos;
Contudo, o m´etodo de Strassen apresenta certa instabilidade
num´erica e cont´em um fator oculto de complexidade
consider´avel;
As submatrizes necess´arias ao processo consomem espa¸co;
O m´etodo de Don Coppersmith e Shmuel Winograd teve
maior contribui¸c˜ao te´orica do que pr´atica;
Em 2012, no trabalho “Multiplying matrices faster than
Coppersmith-Winograd”, Virginia Vassileska Williams provou
ter alcan¸cado coeficiente de complexidade igual a O(n2.3729);
O M´etodo Tradicional continua a ter ampla aplicabilidade;
26 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Evolu¸c˜ao dos coeficientes de complexidade para o problema do
c´alculo do produto entre matrizes
Ano Autor(es) Complexidade
1969 Strassen log2 8 ≈ 2.807
1979 Bini, Capovani, Romani e Lotti’s 3 log12 10 ≈ 2.779
1981 Sch¨onhage log6 5 ≈ 2.694
1986 Strassen (laser method) 2.48
1989 Coppersmith e Winograd 2.376
2012 Virginia Vassilevska Williams 2.3729
27 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Tradicional
Strassen
Winograd
Coppersmith-Winograd
Considera¸c˜oes acerca dos m´etodos
Compara¸c˜ao entre os m´etodos em rela¸c˜ao ao n´umero de opera¸c˜oes
de somas e multiplica¸c˜oes necess´arias
Tam. (n) Tradicional Strassen Winograd
Multip. Somas Multip. Somas Multip. Somas
2 8 4 7 18 7 15
4 64 48 56 160 56 136
8 512 448 448 1.344 448 1.152
16 4.096 3.840 3.584 11.008 3.584 9.472
32 32.768 31.744 28.672 89.088 28.672 76.800
64 262.144 258.048 229.376 716.800 229.376 618.496
128 2.097.152 2.080.768 1.835.008 5.750.784 1.835.008 4.964.352
256 16.777.216 16.711.680 14.680.064 46.071.808 14.680.064 39.780.352
28 / 29
Matrizes
Matrizes e a Computa¸c˜ao
M´etodos para multiplica¸c˜ao de matrizes
Considera¸c˜oes finais
Considera¸c˜oes finais
O c´alculo do produto entre matrizes ´e umas das opera¸c˜oes
mais b´asicas tanto para a matem´atica quanto para a
computa¸c˜ao;
O trabalho de Volker Strassen foi muito importante nas
pesquisas por m´etodos mais eficientes;
O m´etodo mais adequado para o c´alculo do produto entre
matrizes depende do contexto;
A aplica¸c˜ao do m´etodo de Strassen em matrizes muito
pequenas talvez n˜ao seja mais adequada;
A principal quest˜ao neste contexto ´e dimensionar
numericamente a percep¸c˜ao emp´ırica do que ´e “pequeno” e
“grande”;
Mesmo considerando os avan¸cos, o m´etodo tradicional
continua tendo ampla aplicabilidade;
29 / 29

Mais conteúdo relacionado

Mais procurados (20)

Matrizes
MatrizesMatrizes
Matrizes
 
Matrizes
MatrizesMatrizes
Matrizes
 
Matrizes
MatrizesMatrizes
Matrizes
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
 
Matrizes fb
Matrizes fbMatrizes fb
Matrizes fb
 
Introdução a Matrizes
Introdução a MatrizesIntrodução a Matrizes
Introdução a Matrizes
 
Matrizes aula 01
Matrizes aula 01Matrizes aula 01
Matrizes aula 01
 
01 matrizes
01 matrizes01 matrizes
01 matrizes
 
Matrizes determinantes
Matrizes determinantesMatrizes determinantes
Matrizes determinantes
 
Slide: Matrizes, Matemática.
Slide: Matrizes, Matemática.Slide: Matrizes, Matemática.
Slide: Matrizes, Matemática.
 
Matrizes
MatrizesMatrizes
Matrizes
 
Matrizes ppt
Matrizes pptMatrizes ppt
Matrizes ppt
 
Matemática - Vídeo Aula Matrizes
Matemática - Vídeo Aula MatrizesMatemática - Vídeo Aula Matrizes
Matemática - Vídeo Aula Matrizes
 
Matcontexto slide matrizes
Matcontexto slide matrizesMatcontexto slide matrizes
Matcontexto slide matrizes
 
12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas
 
Aula 02 matrizes - parte 1 e 2
Aula 02   matrizes - parte 1 e 2Aula 02   matrizes - parte 1 e 2
Aula 02 matrizes - parte 1 e 2
 
Matrizes
MatrizesMatrizes
Matrizes
 
Calculo numerico
Calculo numerico Calculo numerico
Calculo numerico
 
Matriz e Determinantes
Matriz e DeterminantesMatriz e Determinantes
Matriz e Determinantes
 
Matrizes 2014
Matrizes 2014Matrizes 2014
Matrizes 2014
 

Semelhante a Multiplicação de Matrizes

Analise comparativa de métodos diretos e iterativos para a solução de sistema...
Analise comparativa de métodos diretos e iterativos para a solução de sistema...Analise comparativa de métodos diretos e iterativos para a solução de sistema...
Analise comparativa de métodos diretos e iterativos para a solução de sistema...Fabricio Magalhães
 
Aula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoAula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoEduardo de Lucena Falcão
 
Implementação mód4 - encontro 1-
Implementação   mód4 - encontro 1-Implementação   mód4 - encontro 1-
Implementação mód4 - encontro 1-inechidias
 
Implementação módulo4
Implementação   módulo4 Implementação   módulo4
Implementação módulo4 inechidias
 
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...Eduardo de Lucena Falcão
 
Algoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoAlgoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoFabrício Barth
 
SysSorting Professional
SysSorting ProfessionalSysSorting Professional
SysSorting ProfessionalMichel Alves
 
Implementação Currículo - módulo4 - Matrizes/Nºs Complexos
Implementação Currículo - módulo4 - Matrizes/Nºs ComplexosImplementação Currículo - módulo4 - Matrizes/Nºs Complexos
Implementação Currículo - módulo4 - Matrizes/Nºs Complexosinechidias
 
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexos
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs ComplexosImplementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexos
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexosinechidias
 
Livro Métodos Numéricos: Exercícios Resolvidos
Livro Métodos Numéricos: Exercícios ResolvidosLivro Métodos Numéricos: Exercícios Resolvidos
Livro Métodos Numéricos: Exercícios ResolvidosFlavio Gomes Lima
 
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17Aline Guedes
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4 inechidias
 
Implementação mód4 -
Implementação   mód4 - Implementação   mód4 -
Implementação mód4 - inechidias
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4 inechidias
 

Semelhante a Multiplicação de Matrizes (20)

Analise comparativa de métodos diretos e iterativos para a solução de sistema...
Analise comparativa de métodos diretos e iterativos para a solução de sistema...Analise comparativa de métodos diretos e iterativos para a solução de sistema...
Analise comparativa de métodos diretos e iterativos para a solução de sistema...
 
Aula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoAula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvido
 
Implementação mód4 - encontro 1-
Implementação   mód4 - encontro 1-Implementação   mód4 - encontro 1-
Implementação mód4 - encontro 1-
 
Implementação módulo4
Implementação   módulo4 Implementação   módulo4
Implementação módulo4
 
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Algoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoAlgoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionado
 
Construcao de Algoritmos - Aula 11
Construcao de Algoritmos - Aula 11Construcao de Algoritmos - Aula 11
Construcao de Algoritmos - Aula 11
 
SysSorting Professional
SysSorting ProfessionalSysSorting Professional
SysSorting Professional
 
áLgebra linear
áLgebra linearáLgebra linear
áLgebra linear
 
Implementação Currículo - módulo4 - Matrizes/Nºs Complexos
Implementação Currículo - módulo4 - Matrizes/Nºs ComplexosImplementação Currículo - módulo4 - Matrizes/Nºs Complexos
Implementação Currículo - módulo4 - Matrizes/Nºs Complexos
 
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexos
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs ComplexosImplementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexos
Implementação currículo- Módulo IV-Matrizes/Determinantes/Nºs Complexos
 
Livro Métodos Numéricos: Exercícios Resolvidos
Livro Métodos Numéricos: Exercícios ResolvidosLivro Métodos Numéricos: Exercícios Resolvidos
Livro Métodos Numéricos: Exercícios Resolvidos
 
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
 
Introdução ao matlab
Introdução ao matlabIntrodução ao matlab
Introdução ao matlab
 
Matrizes
MatrizesMatrizes
Matrizes
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
 
Implementação mód4 -
Implementação   mód4 - Implementação   mód4 -
Implementação mód4 -
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
 
Apostila grafos
Apostila grafosApostila grafos
Apostila grafos
 

Mais de Diego Lusa

Oracle XML DB - Conceitos iniciais
Oracle XML DB - Conceitos iniciaisOracle XML DB - Conceitos iniciais
Oracle XML DB - Conceitos iniciaisDiego Lusa
 
Cidades Inteligentes e Big Data
Cidades Inteligentes e Big DataCidades Inteligentes e Big Data
Cidades Inteligentes e Big DataDiego Lusa
 
Rede "Olhos do Bem"
Rede "Olhos do Bem"Rede "Olhos do Bem"
Rede "Olhos do Bem"Diego Lusa
 
Engenharia de software orientada a aspectos: do interesse ao aspecto
Engenharia de software orientada a aspectos: do interesse ao aspectoEngenharia de software orientada a aspectos: do interesse ao aspecto
Engenharia de software orientada a aspectos: do interesse ao aspectoDiego Lusa
 
Ordenação de pares e ímpares
Ordenação de pares e ímparesOrdenação de pares e ímpares
Ordenação de pares e ímparesDiego Lusa
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Diego Lusa
 
O uso de tecnologias de big data na concepção e execução de estratégias de en...
O uso de tecnologias de big data na concepção e execução de estratégias de en...O uso de tecnologias de big data na concepção e execução de estratégias de en...
O uso de tecnologias de big data na concepção e execução de estratégias de en...Diego Lusa
 

Mais de Diego Lusa (9)

Oracle XML DB - Conceitos iniciais
Oracle XML DB - Conceitos iniciaisOracle XML DB - Conceitos iniciais
Oracle XML DB - Conceitos iniciais
 
Cidades Inteligentes e Big Data
Cidades Inteligentes e Big DataCidades Inteligentes e Big Data
Cidades Inteligentes e Big Data
 
Oracle XML DB
Oracle XML DBOracle XML DB
Oracle XML DB
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
Rede "Olhos do Bem"
Rede "Olhos do Bem"Rede "Olhos do Bem"
Rede "Olhos do Bem"
 
Engenharia de software orientada a aspectos: do interesse ao aspecto
Engenharia de software orientada a aspectos: do interesse ao aspectoEngenharia de software orientada a aspectos: do interesse ao aspecto
Engenharia de software orientada a aspectos: do interesse ao aspecto
 
Ordenação de pares e ímpares
Ordenação de pares e ímparesOrdenação de pares e ímpares
Ordenação de pares e ímpares
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
 
O uso de tecnologias de big data na concepção e execução de estratégias de en...
O uso de tecnologias de big data na concepção e execução de estratégias de en...O uso de tecnologias de big data na concepção e execução de estratégias de en...
O uso de tecnologias de big data na concepção e execução de estratégias de en...
 

Multiplicação de Matrizes

  • 1. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Multiplica¸c˜ao de Matrizes Do O(n3 ) ao O(n2 ) Diego Antonio Lusa Universidade de Passo Fundo 3 de julho de 2014 1 / 29
  • 2. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Roteiro 1 Matrizes Opera¸c˜oes envolvendo matrizes 2 Matrizes e a Computa¸c˜ao 3 M´etodos para multiplica¸c˜ao de matrizes Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos 4 Considera¸c˜oes finais 2 / 29
  • 3. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Matrizes Arranjo retangular composto por m linhas e n colunas; Cada elemento ´e identificado em termos da linha e coluna a qual pertence; Quando o n´umero de colunas m for igual ao n´umeros de linhas n, a matriz ´e dita quadrada de ordem n; Matriz gen´erica M3×4 =   m11 m12 m13 m14 m21 m22 m23 m24 m31 m32 m33 m34   3 / 29
  • 4. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Matrizes Quadradas Matrizes quadradas tˆem uma diagonal principal e uma diagonal secund´aria; Diagonal principal e secund´aria M3×3   12 30 40 13 15 48 14 50 22   Mpri   12 . . . . . . . . . 15 . . . . . . . . . 22   Msec   . . . . . . 40 . . . 15 . . . 14 . . . . . .   4 / 29
  • 5. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Matriz Identidade A matriz identidade possui todos os elementos da diagonal principal iguais a 1; Os demais elementos s˜ao todos iguais a 0 (zero); Caracteriza-se por ser o elemento neutro em opera¸c˜oes de multiplica¸c˜ao; Matriz Identidade I3 =   1 0 0 0 1 0 0 0 1   5 / 29
  • 6. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Representa¸c˜ao Computacional Representadas atrav´es de tipos de dados estruturados; Os arranjos s˜ao as estruturas comumente utilizadas para armazenar matrizes; Algoritmo gen´erico 1. define A[2][2]; 2. A[1][2] = 3; 6 / 29
  • 7. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Opera¸c˜oes Pode-se aplicar opera¸c˜oes como soma, subtra¸c˜ao e multiplica¸c˜ao em matrizes; A soma requer o mesmo n´umero de linhas e colunas em ambas as matrizes; A complexidade assint´otica de uma opera¸c˜ao de soma ´e igual a O(n2); Considerando-se duas matrizes quaisquer A e B, a opera¸c˜ao de adi¸c˜ao C = A + B ´e definida por: Defini¸c˜ao matem´atica da soma cij = aij + bij 7 / 29
  • 8. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Opera¸c˜oes - Soma Exemplo (I) A2×2 = 1 2 3 4 (II) B2×2 = 5 −6 −8 9 (III) C2×2 = A2×2 + B2×2 = 1 + 5 2 − 6 3 − 8 4 + 9 (IV) C2×2 = 6 −4 −5 13 8 / 29
  • 9. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Opera¸c˜oes - Multiplica¸c˜ao A multiplica¸c˜ao requer que o n´umero de colunas da primeira matriz seja igual ao n´umero de linhas da segunda; A complexidade assint´otica de uma opera¸c˜ao de multiplica¸c˜ao ´e igual a O(n3); A multiplica¸c˜ao de matrizes ´e associativa, mas n˜ao ´e comutativa. A × B × C ´e identico a A × (B × C). Contudo, A × B ´e diferente de B × A; Defini¸c˜ao matem´atica da multiplica¸c˜ao pij = a k=1 mik × nkj 9 / 29
  • 10. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Opera¸c˜oes envolvendo matrizes Opera¸c˜oes - Multiplica¸c˜ao Exemplo (I) M2×2 = 1 2 3 4 (II) N2×3 = 5 6 7 8 9 10 (III) P2×3 = M2×2 × N2×3 (IV) P2×3 = 1 × 5 + 2 × 8 1 × 6 + 2 × 9 1 × 7 + 2 × 10 3 × 5 + 4 × 8 3 × 6 + 4 × 9 3 × 7 + 4 × 10 (V) P2×3 = 21 24 27 47 54 61 10 / 29
  • 11. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Matrizes e a Computa¸c˜ao A multiplica¸c˜ao de matrizes ´e uma das opera¸c˜oes mais b´asicas para a computa¸c˜ao num´erica e simb´olica; Aplica-se a diversos problemas de ´algebra linear, fatora¸c˜ao polinomial, transforma¸c˜oes geom´etricas, entre outros; O c´alculo do produto entre matrizes ´e uma opera¸c˜ao que apresenta complexidade assint´otica O(n3); Por muito tempo pensou-se que n˜ao seria poss´ıvel reduzir este complexidade; 11 / 29
  • 12. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos M´etodos para multiplica¸c˜ao de matrizes Por meio de pesquisas, demostrou-se que seria poss´ıvel obter coeficientes de complexidade menores que O(n3); Neste contexto, destacam-se os m´etodos de: Strassen Winograd Coppersmith-Winograd 12 / 29
  • 13. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos M´etodo Tradicional Possui complexidade assint´otica O(n3); At´e 1960, era considerado o algoritmo ´otimo; Caracter´ısticas Executa (n3) multiplica¸c˜oes; Executa n2(n − 1) somas; 13 / 29
  • 14. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Pseudo-algoritmo 1. define A[2][2]; 2. define B[2][3]; 3. define C[2][3]; 4. para cada i de 1 a 2 fa¸ca: 5. para cada j de 1 a 3 fa¸ca: 6. para cada k de 1 a 2 fa¸ca: 7. C[i][j] = C[i][j] + A[i][k]*B[k][j]; 8. fim para; 9. fim para; 10. fim para; 14 / 29
  • 15. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos M´etodo de Strassen Desenvolvido pelo matem´atico alem˜ao Volker Strassen em 1969; Obteve complexidade assint´otica O(nlog 7) ; Serviu de referˆencia para trabalhos posteriores; Enquanto o m´etodo tradicional requer 8 multiplica¸c˜oes e 4 somas para multiplicar duas matrizes de ordem 2, o m´etodo de Strassem executa 7 multiplica¸c˜oes e 18 somas/subtra¸c˜oes; Requer que a ordem das matrizes seja quadrada; Caracter´ısticas Executa 7 n 2 3 multiplica¸c˜oes; Executa (11n − 4) × n2 4 somas; 15 / 29
  • 16. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Matrizes de origem A3   1 2 3 4 5 6 7 8 9   B3   1 4 7 2 5 8 3 6 9   Tornando a ordem quadr´atica A4     1 2 3 0 4 5 6 0 7 8 9 0 0 0 0 0     B4     1 4 7 0 2 5 8 0 3 6 9 0 0 0 0 0     16 / 29
  • 17. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapa 1 - Divis˜ao A11 1 2 4 5 A12 3 0 6 0 A21 7 8 0 0 A22 9 0 0 0 B11 1 4 2 5 B12 7 0 8 0 B21 3 6 0 0 B22 9 0 0 0 17 / 29
  • 18. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapas 2 - C´alculo dos subproblemas P1 = (A11 + A22) × (B11 + B22) P2 = (A21 + A22) × B11 P3 = A11 × (B12 − B22) P4 = A22 × (B21 − B11) P5 = (A11 + A12) × B22 P6 = (A21 − A11) × (B11 + B12) P7 = (A12 − A22) × (B21 + B22) 18 / 29
  • 19. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapa 3 - Conquista C11 = P1 + P4 − P5 + P7 C12 = P3 + P5 C21 = P2 + P4 C22 = P1 + P3 − P2 + P6 19 / 29
  • 20. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Resultado C3 = C11 C12 C21 C22 →       14 32 32 77 50 0 122 0 50 122 0 0 194 0 0 0       C3 =     14 32 50 0 32 77 122 0 50 122 194 0 0 0 0 0     C3 =   14 32 50 32 77 122 50 122 194   20 / 29
  • 21. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos M´etodos de Winograd Criado por Shmuel Winograd, em 1987; Possui a mesma complexidade assint´otica que o m´etodo de Strassen; Requer um n´umero menor de somas e subtra¸c˜oes se comparado ao m´etodo de Strassen. Em contrapartida, necessita de um n´umero maior de passos; Caracter´ısticas Executa 7 n 2 3 multiplica¸c˜oes; Executa 19n3 8 − n2 somas/subtra¸c˜oes; 21 / 29
  • 22. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapas do processo S1 = A21 + A22 S2 = S1 − A11 S3 = A11 − A21 S4 = A12 − S2 T1 = B12 − B11 T2 = B22 − T1 T3 = B22 − B12 T4 = B21 − T2 22 / 29
  • 23. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapas do processo P1 = A11 × B11 P2 = A12 × B21 P3 = S1 × T1 P4 = S2 × T2 P5 = S3 × T3 P6 = S4 × B22 P7 = A22 × T4 23 / 29
  • 24. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Etapas do processo U1 = P1 + P2 U2 = P1 + P4 U3 = U2 + P5 U4 = U3 + P7 U5 = U3 + P3 U6 = U2 + P3 U7 = U6 + P6 C11 = U1 C12 = U7 C21 = U4 C22 = U5 24 / 29
  • 25. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos M´etodo Coppersmith-Winograd M´etodo criado por Don Coppersmith e Shmuel Winograd em 1987; Foi o primeiro algoritmo da hist´oria a obter coeficiente de complexidade inferior a 2.5; A complexidade do m´etodo ´e O(n2.376); Permaneceu por duas d´ecadas como o m´etodo mais eficiente conhecido; Maior contribui¸c˜ao te´orica do que pr´atica; 25 / 29
  • 26. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Considera¸c˜oes acerca dos m´etodos O algoritmo de Strassen teve grande importˆancia na evolu¸c˜ao dos m´etodos; Contudo, o m´etodo de Strassen apresenta certa instabilidade num´erica e cont´em um fator oculto de complexidade consider´avel; As submatrizes necess´arias ao processo consomem espa¸co; O m´etodo de Don Coppersmith e Shmuel Winograd teve maior contribui¸c˜ao te´orica do que pr´atica; Em 2012, no trabalho “Multiplying matrices faster than Coppersmith-Winograd”, Virginia Vassileska Williams provou ter alcan¸cado coeficiente de complexidade igual a O(n2.3729); O M´etodo Tradicional continua a ter ampla aplicabilidade; 26 / 29
  • 27. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Evolu¸c˜ao dos coeficientes de complexidade para o problema do c´alculo do produto entre matrizes Ano Autor(es) Complexidade 1969 Strassen log2 8 ≈ 2.807 1979 Bini, Capovani, Romani e Lotti’s 3 log12 10 ≈ 2.779 1981 Sch¨onhage log6 5 ≈ 2.694 1986 Strassen (laser method) 2.48 1989 Coppersmith e Winograd 2.376 2012 Virginia Vassilevska Williams 2.3729 27 / 29
  • 28. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Tradicional Strassen Winograd Coppersmith-Winograd Considera¸c˜oes acerca dos m´etodos Compara¸c˜ao entre os m´etodos em rela¸c˜ao ao n´umero de opera¸c˜oes de somas e multiplica¸c˜oes necess´arias Tam. (n) Tradicional Strassen Winograd Multip. Somas Multip. Somas Multip. Somas 2 8 4 7 18 7 15 4 64 48 56 160 56 136 8 512 448 448 1.344 448 1.152 16 4.096 3.840 3.584 11.008 3.584 9.472 32 32.768 31.744 28.672 89.088 28.672 76.800 64 262.144 258.048 229.376 716.800 229.376 618.496 128 2.097.152 2.080.768 1.835.008 5.750.784 1.835.008 4.964.352 256 16.777.216 16.711.680 14.680.064 46.071.808 14.680.064 39.780.352 28 / 29
  • 29. Matrizes Matrizes e a Computa¸c˜ao M´etodos para multiplica¸c˜ao de matrizes Considera¸c˜oes finais Considera¸c˜oes finais O c´alculo do produto entre matrizes ´e umas das opera¸c˜oes mais b´asicas tanto para a matem´atica quanto para a computa¸c˜ao; O trabalho de Volker Strassen foi muito importante nas pesquisas por m´etodos mais eficientes; O m´etodo mais adequado para o c´alculo do produto entre matrizes depende do contexto; A aplica¸c˜ao do m´etodo de Strassen em matrizes muito pequenas talvez n˜ao seja mais adequada; A principal quest˜ao neste contexto ´e dimensionar numericamente a percep¸c˜ao emp´ırica do que ´e “pequeno” e “grande”; Mesmo considerando os avan¸cos, o m´etodo tradicional continua tendo ampla aplicabilidade; 29 / 29