Estoy escribiendo un programa que multiplica una matriz por su transposición, y estaba tratando de encontrar hackeos de eficiencia que pudiera explotar considerando que las dos matrices que se están multiplicando están relacionadas. ¿Alguna idea?
Respuesta
¿Demasiados anuncios?Después de la sugerencia de Sivaram estoy convirtiendo mi comentario en una respuesta.
En general, (AB)T=BTAT así que para el producto de una matriz con su transposición, tienes AAT=(AAT)T es simétrico. También puedes ver esto directamente observando que si el ij la entrada de A es aij entonces el ij la entrada de AAT es ∑nk=1aikajk que es lo mismo si cambias i y j . Por lo tanto, si se calculan las entradas con i≤j tienes las entradas con i>j de forma gratuita. Hay 1+2+3+⋯+n=n(n+1)2 tales entradas, en lugar de la n2 que generalmente necesitas.
(Estaba pensando en n -por- n matrices, pero si su entrada es m -por- n esto te dará m(m+1)2 cálculos de entrada, cada uno de los cuales es una suma de n productos.)