Semana 3 - leosaq/AnalisisDeAlgoritmos GitHub Wiki
ALGORITMO PARA MULTIPLICAR MATRICES
Propósito
Este algoritmo permite calcular el producto entre dos matrices usando el método convencional. Se generan los resultados en una nueva matriz, aplicando la fórmula matemática básica para multiplicación de matrices.
Tamaño de las matrices
a
→ matriz de m × n elementosb
→ matriz de n × p elementosc
→ matriz resultante de m × p elementos
Lógica del Algoritmo
El procedimiento recorre cada fila i
de la matriz a
y cada columna j
de la matriz b
, y calcula el valor que debe ir en la posición c[i][j]
. Ese valor se obtiene sumando los productos de los elementos correspondientes de la fila i
de a
y la columna j
de b
.
Pseudocódigo
para i desde 1 hasta m
para j desde 1 hasta p
c[i][j] = 0
para k desde 1 hasta n
c[i][j] = c[i][j] + a[i][k] × b[k][j]
¿Qué hace exactamente?
El algoritmo construye una nueva matriz c
utilizando la siguiente lógica:
- Se inicializa cada celda
c[i][j]
en cero. - Luego, se toma la fila
i
dea
y la columnaj
deb
. - Se multiplica cada elemento correspondiente (
a[i][k] × b[k][j]
). - El resultado se acumula como suma para formar el valor final de
c[i][j]
.
La fórmula matemática que representa esto es:
Ejemplo
Supongamos que tenemos:
a = [ [2, 3],
[1, 4] ]
b = [ [5, 6],
[7, 8] ]
El producto c = a × b
se calcula como:
c[0][0] = (2×5) + (3×7) = 10 + 21 = 31
c[0][1] = (2×6) + (3×8) = 12 + 24 = 36
c[1][0] = (1×5) + (4×7) = 5 + 28 = 33
c[1][1] = (1×6) + (4×8) = 6 + 32 = 38
Entonces:
c = [ [31, 36],
[33, 38] ]
Consideraciones
- Las dimensiones de las matrices deben ser compatibles: el número de columnas de
a
debe coincidir con el número de filas deb
. - Este algoritmo tiene una complejidad de O(m × n × p), lo cual es adecuado para matrices no muy grandes.
- Es posible optimizar este algoritmo usando técnicas como programación paralela o algoritmos especializados como Strassen (no cubiertos aquí).