Coloquialmente, la definición del exponente de multiplicación de matrices es el valor más pequeño para el cual existe un algoritmo de multiplicación de matrices conocido . Esto no es aceptable como una definición matemática formal, por lo que supongo que la definición técnica es algo así como el infimum sobre todo tal que existe un algoritmo de multiplicación de matrices en .
En este caso, no podemos decir que hay un algoritmo para la multiplicación de matrices en o incluso , simplemente que para todo existe un algoritmo en . Sin embargo, a menudo, los documentos y resultados que utilizan la multiplicación de matrices informarán su costo simplemente como .
¿Existe alguna definición alternativa de que permita este uso? ¿Hay resultados que garanticen que debe existir un algoritmo de tiempo o ? ¿O es el uso simplemente descuidado?
fuente
Respuestas:
El exponente de multiplicación matricial siendo no garantiza que haya un algoritmo que se ejecute en el tiempo O ( n ω ) , sino que solo para cada ϵ > 0 , hay un algoritmo que se ejecuta en O ( n ω + ϵ ) . De hecho, si puede encontrar un algoritmo que se ejecute en el tiempo O ( n 2 p o l y l o g ( n ) ) , esto muestra que ω = 2 .ω O(nω) ϵ>0 O(nω+ϵ) O(n2polylog(n)) ω=2
Puede encontrar la definición formal en el libro Teoría de la complejidad algebraica de Peter Bürgisser, Michael Clausen, Amin Shokrollahi.
fuente
Un comentario menor que es demasiado largo para ser un comentario:
A veces, cuando tiene un problema para el cual hay un algoritmo con tiempo de ejecución para cada ϵ > 0 , hay un algoritmo con tiempo de ejecución n k + o ( 1 ) .O(nk+ϵ) ϵ>0 nk+o(1)
Por ejemplo, a veces obtienes algoritmos que van como para alguna función de crecimiento rápido f (como 2 2 1 / ϵ ). Si establece f ( 1 / ϵ ) en (digamos) log n , entonces ϵ será o (1). En el ejemplo con f ( 1 / ϵ ) siendo 2 2 1 / ϵ , puede elegir 1 / ϵf(1/ϵ)nk+ϵ f 221/ϵ f(1/ϵ) logn ϵ f(1/ϵ) 221/ϵ 1/ϵ ser , que da ϵ = 1 / ( log log log n ) , que es o (1). Entonces, el tiempo de ejecución final de este algoritmo será n k + o ( 1 ) , ya que log n también es n o ( 1 ) .logloglogn ϵ = 1 / ( logIniciar sesiónIniciar sesiónn ) nortek+o(1) logn no(1)
fuente
Es bien sabido el resultado de Coppersmith y Winograd que el tiempo no puede ser realizado por un solo algoritmo. Pero he leído que se restringieron a algoritmos basados en identidades bilineales similares a Strassen, por lo que no estoy seguro ya que el documento está detrás de un muro de pago.O(nω)
fuente
No estoy de acuerdo con su afirmación en la pregunta de que no está bien definido por "el valor más pequeño para el cual existe un algoritmo de multiplicación de matriz n ω conocido ". Cuando las personas usan esta constante, es porque su algoritmo se basa en una multiplicación de matriz, y por una complejidad n ω , significan que "la complejidad óptima de nuestro algoritmo viene dada por el algoritmo óptimo para la multiplicación de matriz".ω nω nω
No digo que no sea posible definir otra manera (por ejemplo, decir que ω es la mejor complejidad posible).ω ω
Por cierto, el límite superior más conocido para la multiplicación de matrices acaba de mejorar a si no me equivoco.2.3737
fuente