La complejidad computacional de la multiplicación de matrices.


14

Estoy buscando información sobre la complejidad computacional de la multiplicación de matrices de matrices rectangulares. Wikipedia afirma que la complejidad de multiplicar por B R n × p es O ( m n p ) (multiplicación del libro escolar).ARm×nBRn×pO(mnp)

Tengo un caso en el que y n son mucho menores que p , y esperaba conseguir mejor la complejidad de lineal en p , en la costa de hacer la dependencia de m y nmnppmn peor que lineal.

¿Algunas ideas?

Gracias.

Nota: la razón por la que espero que sea posible es por el resultado bien conocido de una dependencia menor que la cúbica en si m = n = p (cuando las matrices son todos cuadrados).pm=n=p


8
La complejidad de un algoritmo (secuencial) no puede ser menor que el tamaño de su salida. Para su problema, ¿puede representar la entrada y la salida utilizando un espacio que es sublineal en p?
Colin McQuillan

¿los elementos son mayormente distintos de cero o a menudo cero? es decir, escasa? eso ciertamente lleva a varias optimizaciones. también parece que la SVD [descomposición de valor singular] podría ser relevante en función de la respuesta actual que se refiere a aproximaciones.
vzn

Respuestas:


13

El trabajo clásico de Coppersmith muestra que para algunos , uno puede multiplicar una matriz n × n α con una matriz n α × n en ˜ O ( n 2 ) operaciones aritméticas. Este es un ingrediente crucial del reciente resultado celebrado de Ryan Williams.α>0n×nαnα×nO~(n2)

François le Gall mejoró recientemente el trabajo de Coppersmith, y su artículo acaba de ser aceptado en FOCS 2012. Para comprender este trabajo, necesitará algunos conocimientos de la teoría de la complejidad algebraica. El artículo de Virginia Williams contiene algunos consejos relevantes. En particular, el trabajo de Coppersmith se describe completamente en la teoría de la complejidad algebraica , el libro.

Una línea diferente de trabajo se concentra en multiplicar matrices aproximadamente . Puedes consultar este trabajo de Magen y Zouzias. Esto es útil para manejar matrices realmente grandes, por ejemplo, multiplicando una matriz y una matriz N × n , donde N n .n×NN×nNn

El enfoque básico es muestrear las matrices (esto corresponde a una reducción aleatoria de la dimensionalidad) y multiplicar las matrices muestreadas mucho más pequeñas. El truco es descubrir cuándo y en qué sentido esto da una buena aproximación. A diferencia de la línea de trabajo anterior que es completamente poco práctica, los algoritmos de muestreo son prácticos e incluso necesarios para manejar grandes cantidades de datos.


Solo una nota: se sabe (a partir de noviembre de 2010) que la multiplicación de matriz rectangular no es necesaria para resolver ACC SAT. (Lo cual es bueno, porque la matriz rectangular mult es "galáctica" y compleja.)
Ryan Williams
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.