¿Cuáles son los algoritmos matriciales más importantes que todo programador debe saber implementar?

Lo más simple y fácil de hacer: Multiplicación matricial.
Por qué ?
Porque se usa para resolver fórmulas recursivas muy muy rápido.

Tomemos una serie simple de Fibonacci cuya fórmula recursiva es:

Fib (n) = Fib (n-1) + Fib (n-2)

La programación dinámica se usa generalmente para esto. Eso lo resuelve en O (n).

Pero con la multiplicación matricial repetida podemos resolverlo en O (log (n) * matrix_size ^ 3)

dado que el tamaño de la matriz es pequeño, lo cual es generalmente, para n grande, es un gran método.

El problema es cómo crear una matriz cuya cuadratura repetida hasta la enésima potencia nos dé el enésimo número de Fibonacci.

Vamos a crear una matriz de 2 * 2,

Matriz A =
El | F_ (n-2) F_ (n-3) |
El | F_ (n-1) F_ (n-2) |

Matriz B =
El | 1 1 |
El | 1 0 |

Matriz A * B = C
El | F_ (n-1) F_ (n-2) |
El | F_ (n) F_ (n-1) |

Ahora mira de cerca a A y C

Cada valor de x en F_ (x) en A se incrementa en 1 en C.

Entonces, C * B = D daría su matriz [1] [0] como (n + 1) th elemento de Fibonacci.

Si partimos de la matriz básica A: para n = 3
El | 1 1 |
El | 2 1 |

A * B = C daría en C [1] [0] = 3.
C * B = D daría en D [1] [0] = 5.

entonces A * B ^ (n-3) daría el enésimo número de Fibonacci en la posición [1] [0].

B ^ (n-3) se puede calcular en tiempo O (log (n)). 🙂

Multiplicación matriz-matriz en mosaico, porque crea una conciencia de cómo la estructura de caché afecta el rendimiento.

Esquema SOR rojo-negro, porque modifica un método familiar y útil para paralelizarlo para arquitecturas de memoria distribuida.

Francamente, la mayoría de los programadores no van a utilizar la manipulación matricial en sus trabajos. Entonces, a menos que ingrese a uno de los campos matemáticamente más inclinados, la respuesta es “ninguno de ellos”. Se está pagando a mucha más gente por disputar bases de datos.

Dicho esto, las matrices son comunes en las ciencias y en los gráficos en 3D, y son una herramienta poderosa para resolver muchas clases de problemas. Casi todo lo que hagas con ellos implicará la multiplicación de matrices, por lo que es un buen lugar para comenzar. Casi cualquier otra cosa va a ser específica de la tarea: uso mucho los solucionadores de mínimos cuadrados, pero un programador de juegos casi nunca lo hace. Algunos problemas requieren resolver grandes sistemas multivariados, y otros nunca lo hacen. Algunas veces todas sus matrices son grandes y escasas, otras veces todas son pequeñas y densas.

En resumen, una gran cantidad de herramientas de matriz son útiles, y una pequeña porción de ellas se aplica a cualquier problema. Aprenda a multiplicar, luego lea en su dominio de problemas favorito.

Factorización matricial a través de mínimos cuadrados alternos

Solucionador SVD / Eigenvalue escaso a través de Lanczos

Solución de regresión lineal usando Gauss Seidel o sucesiva sobre-relajación