Está en la página 1de 36

TÉCNICA DE DISEÑO

DIVIDE Y CONQUISTA

Claudia Pereira – Liliana Martinez


DIVIDE Y CONQUISTA

Multiplicación de matrices cuadradas


Multiplicación de matrices

Sean A y B dos matrices n x n,

C(i,j) =  A(i,k) B(k,j)


1kn

• La matriz producto C = AB es una matriz de n x n


• C(i,j) se forma a partir de los elementos de la i-ésima fila de A y los de la j-
ésima columna de B, para todo i y j entre 1 y n.
Multiplicación de matrices

Sean A y B dos matrices n x n,

C(i,j) =  A(i,k) B(k,j)


1kn

• Para calcular C(i,j) necesitamos n multiplicaciones.


• C tiene n2 elementos -> el tiempo del algoritmo convencional  O(n3).
Multiplicación de matrices

j
Divide y Conquista : Multiplicación de matrices
Dadas dos matrices de tamaño nk , D y C sugiere dividir las matrices ,

el producto usando la fórmula anterior para el producto de matrices de 2 x 2:

8 multiplicaciones
4 sumas
𝑛 𝑛
de matrices 𝑥
2 2
Divide y Conquista : Multiplicación de matrices
Divide y Conquista : Multiplicación de matrices
Divide y Conquista : Multiplicación de matrices
Divide y Conquista : Multiplicación de matrices
Divide y Conquista : Multiplicación de matrices

T(n)  O (n3)
Divide y Conquista : Multiplicación de matrices

T(n)  O (n3)
No mejora el algoritmo convencional

Volker Strassen descubrió una forma de


calcular los C(i,j) usando:
 sólo 7 multiplicaciones y
 18 adiciones y substracciones.
Multiplicación de matrices de Strassen
Strassen calcula los C(i,j) usando
 sólo 7 multiplicaciones y
 18 adiciones y substracciones.

𝑛 𝑛
Este método (no es obvio) calcula primero 7 matrices (productos) de 𝑥
2 2
P = (A11 + A22) (B11 + B22)
Q = (A21 + A22) B11 C11 = P + S - T + V
R = A11 (B12 - B22)
C12 = R + T
S = A22 (B21 - B11)
T = (A11 + A12) B22 C21 = Q + S
U = (A21 - A11) (B11 + B12) C22 = P + R - Q + U
V = (A12 - A22) (B21 + B22)
Multiplicación de matrices de Strassen
Strassen calcula los C(i,j) usando
 sólo 7 multiplicaciones y
 18 adiciones y substracciones.

Complejidad temporal ?

O(n log 7)  O(n 2,81)


Multiplicación de matrices de Strassen
Multiplicación de matrices de Strassen
 7 multiplicaciones y
 18 adiciones y substracciones.

¿Cuál es el espacio requerido?

Este método calcula primero 7 matrices n/2 x n/2


P = (A11 + A22) (B11 + B22)
Q = (A21 + A22) B11 C11 = P + S - T + V
R = A11 (B12 - B22)
C12 = R + T
S = A22 (B21 - B11)
T = (A11 + A12) B22 C21 = Q + S
U = (A21 - A11) (B11 + B12) C22 = P + R - Q + U
V = (A12 - A22) (B21 + B22)
Multiplicación de matrices de Strassen

P = (A11 + A22) (B11 + B22) Secuencia de cálculos espacio auxiliar


Q = (A21 + A22) B11 1. P aux1, aux2
2. Q aux1
R = A11 (B12 - B22) 3. R aux1
S = A22 (B21 - B11) 4. S
T = (A11 + A12) B22 5. T aux1
U = (A21 - A11) (B11 + B12) 6. U aux1, aux2
V = (A12 - A22) (B21 + B22) 7. V aux1, aux2
8. C11
9. C12
10. C21
C11 = P + S - T + V 11. C22
C12 = R + T Espacio requerido: 7 + 2 matrices aux. y 4 matrices Cij
C21 = Q + S
9 matrices auxiliares
C22 = P + R - Q + U
Multiplicación de matrices de Strassen

P = (A11 + A22) (B11 + B22) Otra secuencia de cálculos:


Q = (A21 + A22) B11 Calculamos espacio auxiliar Resultado
1. P aux1,aux2 aux3
R = A11 (B12 - B22)
2. V aux1,aux2 C11
S = A22 (B21 - B11) 3. P+V C11
T = (A11 + A12) B22 4. U aux1,aux2 C22
U = (A21 - A11) (B11 + B12) 5. Q aux1 C21
V = (A12 - A22) (B21 + B22) 6. R aux1 C12
7. R-Q aux1
8. (P+U) + (R-Q) C22
9. S aux1 aux2
C11 = P + S - T + V 10. Q+S C21
C12 = R + T 11. T aux1 aux3
12. S-T aux2
C21 = Q + S 13. (P+V)+(S-T) C11
C22 = P + R - Q + U 14. R+T C12
Multiplicación de matrices de Strassen

P = (A11 + A22) (B11 + B22) Otra secuencia de cálculos:


Q = (A21 + A22) B11 Calculamos espacio auxiliar Resultado
1. P aux1,aux2 aux3
R = A11 (B12 - B22)
2. V aux1,aux2 C11
S = A22 (B21 - B11) 3. P+V C11
T = (A11 + A12) B22 4. U aux1,aux2 C22
U = (A21 - A11) (B11 + B12) Vemos
5. Q que haciendo aux1una C21
6. R aux1
V = (A12 - A22) (B21 + B22) secuencia de cálculos adecuada C12
7. R-Q aux1
podemos
8. (P+U) + reducir
(R-Q) el espacio requerido
C22 a:
9. S
3 Matrices aux1 y 4 matrices aux2
auxiliares Cij
C11 = P + S - T + V 10. Q+S C21
C12 = R + T 11. T aux1 aux3
12. S-T aux2
C21 = Q + S 13. (P+V)+(S-T) C11
C22 = P + R - Q + U 14. R+T C12
Multiplicación de matrices de Strassen

¿ qué pasa si n no es pontencia de 2?

¿Podemos aplicar Strassen a productos de matrices generales?


Suponer a las matrices cubiertas con ceros hasta la potencia de 2 más cercana, operando
conceptualmente con los ceros

Completar la matriz con ceros hasta la potencia de dos más cercana.


Multiplicación de matrices de Strassen
Para multiplicar A (3 x 4) por B (4 x 5) aumentar el tamaño de A y B :
Tamaño final : 8 x 8 ( 8 es la potencia de 2 más cercana a 5, tamaño mayor de la segunda matriz)
DIVIDE Y CONQUISTA

Representación de matrices
Representación de matrices
En la técnica Divide y Conquista las etapas de

● dividir el problema original P en k subproblemas y

● combinar las soluciones de los subproblemas

deben ser eficientes


Representación de matrices

¿Cómo representar a las matrices?

Problemas recursivos

Representación recursiva de los datos


Representación de matrices

Quadtree:
El término quedtree se usa para describir

una clase de estructura de datos jerárquica

basada en el principio de descomposición

recursiva del espacio.


Representación de matrices
Arreglos unidimensionales:
Matriz A:
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
Representación de matrices
Arreglos unidimensionales:
Matriz A: Índice en el arreglo de los elemento de la matriz A

a11 a12 a13 a14 1 2


a21 a22 a23 a24 3 4
a31 a32 a33 a34
a41 a42 a43 a44

Representación de arreglo para la matriz A:

a11 a12 a21 a22

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Representación de matrices
Arreglos unidimensionales:
Matriz A: Índice en el arreglo de los elemento de la matriz A

a11 a12 a13 a14 1 2 5 6


a21 a22 a23 a24 3 4 7 8
a31 a32 a33 a34
a41 a42 a43 a44

Representación de arreglo para la matriz A:

a11 a12 a21 a22 a13 a14 a23 a24


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Representación de matrices
Arreglos unidimensionales:
Matriz A: Índice en el arreglo de los elemento de la matriz A

a11 a12 a13 a14 1 2 5 6


a21 a22 a23 a24 3 4 7 8
a31 a32 a33 a34 9 10
a41 a42 a43 a44 11 12

Representación de arreglo para la matriz A:

a11 a12 a21 a22 a13 a14 a23 a24 a31 a32 a41 a42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Representación de matrices
Arreglos unidimensionales:
Matriz A: Índice en el arreglo de los elemento de la matriz A

a11 a12 a13 a14 1 2 5 6


a21 a22 a23 a24 3 4 7 8
a31 a32 a33 a34 9 10 13 14
a41 a42 a43 a44 11 12 15 15

Representación de arreglo para la matriz A:

a11 a12 a21 a22 a13 a14 a23 a24 a31 a32 a41 a42 a33 a34 a43 a44
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Representación de matrices
Arreglos unidimensionales:
A11 (n/2) elementos A12
Matriz A de dimensión n x n (n = 2 k )
1 2 5 6 17 18 21 22
A11, A12, A21, A22 se almacenan recursivamente:
(n/2) 3 4 7 8 19 20 23 24

9 10 13 14 25 26 29 30 índice (A11) = índice (A)


11 12 15 16 27 28 31 32 índice (A12) = índice (A) + (n/2) 2
33 34 37 38 49 50 53 54
índice (A21) = índice (A) + 2 (n/2) 2
35 36 39 40 51 52 55 56
índice (A22) = índice (A) + 3 (n/2) 2
41 42 45 46 57 58 61 62
43 44 47 48 59 60 63 64
A21 A22

... ... . ...

1 ... 17 ... 33 49 ... 64


Representación de matrices
Matriz Quadtree: representación de matrices ralas
Representación de matrices
Matriz Quadtree: representación de matrices ralas

Arreglo de direcciones: ● Un valor positivo indica una matriz que vuelvo a


particionar y representa el índice dentro del mismo
J -K L M J1 arreglo donde se encuentran las particiones.

4 ...

0 1 2 3 4

Arreglo de valores: Almacena la información contenida en la matriz


Representación de matrices
Matriz Quadtree: representación de matrices ralas

Arreglo de direcciones: ● Un valor positivo indica una matriz que vuelvo a


particionar y representa el índice dentro del mismo
J -K L M J1 arreglo donde se encuentran las particiones.

4 -9 ...
● Un valor negativo indica el índice del arreglo de
0 1 2 3 4 valores donde está almacenada la información.

● Un cero indica una región de ceros “conocidos”.

Arreglo de valores: Almacena la información contenida en la matriz


Representación de matrices
Matriz Quadtree: representación de matrices ralas
Arreglo de direcciones

Arreglo de valores

cantidad de valores = 64 / 42 cantidad de valores = 64 / 41


Representación de matrices
Matriz Quadtree: representación de matrices ralas
Arreglo de direcciones

Arreglo de valores

cantidad de valores = 64 / 42 cantidad de valores = 64 / 41

En general, la cantidad de valores a la que se accede a través del índice negativo del arreglo de direcciones es igual a la
cantidad de elementos de la matriz ( n x n) dividido 4 elevado a la cantidad de indirecciones en el arreglo de direcciones
(nivel del árbol)
BIBLIOGRAFÍA

• Cormen, T.; Lieserson, C.; Rivest, R. Introduction to Algorithms


Ed. The MIT Press. 2009.

• Horowitz, E.; Sahni, S.; Rajasekaran, S. Computer Algorithms.


Computer Science Press.1998.

• Brassard, G.; Bratley, P. Prentice-Hall. Fundamentos de Algoritmia.


1997.

También podría gustarte