Semana 3 - leosaq/AnalisisDeAlgoritmos GitHub Wiki

ALGORITMO PARA MULTIPLICAR MATRICES

image

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 elementos
  • b → matriz de n × p elementos
  • c → 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:

  1. Se inicializa cada celda c[i][j] en cero.
  2. Luego, se toma la fila i de a y la columna j de b.
  3. Se multiplica cada elemento correspondiente (a[i][k] × b[k][j]).
  4. El resultado se acumula como suma para formar el valor final de c[i][j].

La fórmula matemática que representa esto es:

image

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 de b.
  • 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í).