Actualización 2: Si usted considerar la rápida multiplicación de la matriz de algoritmos, entonces usted puede hacer mejor que el ingenuo $O(n^4)$. Permítanme supongamos que existe un algoritmo que calcula el producto de una $l\times m$ $m\times n$ matriz en $O(l m^\epsilon n)$ del tiempo, con $\epsilon < 1$. Permítanme cambiar un poco la notación $A(i,j) \to A(i;j)$ a resaltar la diferencia entre el entrante y saliente de la matriz de índices. A continuación, considere los siguientes pasos.
- la fijación de $({k,l,i})$ $n^3$ veces ($1\times 1$ por $1\times 1$): $B_1(k,l;i) = A(k;l) A(k;i) A(l;i)$
- la fijación de $(k)$ $n$ veces ($n\times n$ por $n\times n$): $B_2(k,j;i) = \sum_l A(j;l) B_1(k,l;i)$
- la fijación de $(j)$ $n$ veces ($1\times n$ por $n\times n$): $B_3(j;i) = \sum_k A(j;k) B_2(k,j;i)$
- la fijación de $(i)$ $n$ veces ($1\times n$ por $n\times 1$): $B_4(i) = \sum_j A(i;j) B_3(j;i)$
- do $1$ tiempo ($1\times n$ por $n\times 1$): $B_5 = \sum_i B_4(i)$
$B_5$ es la suma que desee, como se puede ver mediante la sustitución de cada una de las $B_i$ en la siguiente expresión. El prefijo de cada paso que indica la complejidad como un número dado (para cada valor de la lista de índices) de la matriz rectangular multiplicaciones de los tamaños indicados, que también da a los requisitos de almacenamiento.
Como se puede ver, el tiempo de ejecución de la complejidad estará dominada por el paso 2, con $O(n^{3+\epsilon})$ operaciones. Los pasos 1 y 2 dominan en términos de almacenamiento, que requieren $O(n^3)$ espacio. Como usted señala en los comentarios, $\epsilon = 0.37$ es el mejor valor conocido. A continuación, $3+\epsilon = 3.37 < 4$ hace latir el método ingenuo.
Actualización: lo Siento, en más de reflexión, no creo que se puede hacer mejor con este particular, la contracción de $O(n^4)$, al menos no con las optimizaciones que yo tenía en mente. Estas optimizaciones son de una dinámica de programación de clase. Es decir, el uso de almacenamiento adicional para los resultados intermedios con la esperanza de obtener una aceleración en las operaciones que le llevan de un resultado intermedio a la siguiente. En este caso, el almacenamiento consistiría en matrices multidimensionales de tamaño $O(n^d)$ (para algunos $d$) y las operaciones consisten en la multiplicación por una o más copias de $A$ y la suma de más de uno o más de los índices de matriz, que implican $O(n^f)$ operaciones (para algunos $f$). Pero de cualquier manera yo trate de hacer que siempre se obtiene el $f\ge 4$, que no es mejor que el enfoque ingenuo.
Expresiones como estas son a veces conocido como el tensor de redes. Esto te dará una buena palabra clave para buscar en la literatura. También, usted puede encontrar de utilidad algunos de los "dispersos de la factorización de" técnicas de uno de mis artículos antiguos (arXiv:0809.3190). Puede ignorar todo excepto la sección 5 y el debate de cómo evaluar el producto-seguimiento en la ecuación (40).
Como has escrito, la evaluación de la complejidad es $O(n^4)$. Creo que este caso puede ser simplificado a $O(n^3)$. Si tengo tiempo más tarde, voy a tratar de escribir que en más detalle.