Que la multiplicación de matrices no está en Evidencia


39

Se cree comúnmente que para todo , es posible multiplicar dos matrices en el tiempo . Alguna discusión está aquí .ϵ>0n×nO(n2+ϵ)

Le pregunté a algunas personas que están más familiarizadas con la investigación si creen que hay un independiente de modo que exista un algoritmo para la multiplicación de matrices y parecían abrumadoramente tener intuición de que la respuesta es "no" pero no podría explicar por qué. Es decir, creen que podemos hacerlo en el tiempo , pero no en el tiempo .k>0nO(n2logkn)O(n2.001)O(n2log100n)

¿Qué razones hay para creer que no hay un algoritmo en un valor fijo ?O(n2logkn)k>0

Respuestas:


29

Existe un algoritmo para multiplicar una matriz con una matriz en operaciones aritméticas. La identidad principal utilizada para ello proviene del artículo de Coppersmith "Multiplicación rápida de matrices rectangulares", pero la explicación de por qué conduce a lugar de encuentra en el apéndice del artículo de Williams , "Nuevos algoritmos y límites inferiores para circuitos con puertas de umbral lineales".N×N0.172N0.172×NN2polylog(N)N2polylog(N)N2+ϵ

Esto solo funciona porque la identidad de Coppersmith tiene una estructura adicional que puede aprovechar, y los algoritmos MM más recientes no parecen tener esta estructura. Dicho esto, no estoy seguro de por qué uno no puede esperar extender este enfoque a multiplicación matricial.N×N×N


11

Bueno, una cosa es que creo que todas las construcciones que conocemos, e incluso las familias de construcciones potenciales que la gente ha propuesto (por ejemplo, enfoques Cohn-Umans, generalizaciones de Coppersmith-Winograd), "simplemente" producirían una familia de algoritmos Aϵ funcionando en el tiempo O(n2+ϵ) . Por lo tanto, para tener un algoritmo único que se ejecutara en O(n2poly(logn)) , no solo tendría que estar loco asintóticamente mejor que los enfoques actuales, sino que tendría que verse realmente diferente.

Gran advertencia: creo. Nunca he pensado demasiado sobre cuánto tendría que modificar / agregar a los enfoques existentes para que puedan producir un algoritmo único que se ejecute en el tiempo O(n2poly(logn)) .


3
No estoy seguro de cómo tener una familia no conduce de manera plausible a O (n ^ 2poly (log n)) ya que si uno pudiera describir a la familia lo suficientemente bien, entonces podría elegir miembros de la familia cada vez más eficientes para un n mayor. La única razón entonces de que esto no sea plausiblemente O (n ^ 2poly (log N)) es que las constantes involucradas probablemente serían muy grandes, pero no es obvio que ese sea necesariamente el caso.
JoshuaZ

1
O(n2+x)ε>0O(n2+ε)

1
@JoshuaZ Supongo que otra forma aún más extraña que podría fallar sería si de alguna manera elegir / construir un miembro de la familia tomara más de O (n ^ 2 poli (log n)) tiempo, por ejemplo, tal vez se necesite el código O (1 / e) para implementar el algoritmo O (n ^ (2 + e)) o algo así. ¿No sería eso salvaje?
Daniel Wagner

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.