Existem métodos aprimorados de calcular a seguinte expressão?

8

dada uma matriz simétrica , e uma matriz arbitrária X R n × n , e um vetor v R n × 1 , é possível calcular a seguinte expressão no tempo O ( n 2 ) ?YRn×nXRn×nvRn×1O(n2)

diag(XTYX)v

onde retorna um n × n matriz com os seus principais elementos diagonais iguais aos dos X e elementos fora da diagonal igual a 0, e X T é a transposta de X .diag(X)n×nXXTX

John Smith
fonte
3
Observação rápida: é inútil: a questão é equivalente a "é possível calcular diag ( X T Y X ) em O ( n 2 ) ?". Não sei a resposta, mas acho que não . vdiag(XTYX)O(n2)
Federico Poloni
2
Eu acho que pode ter algum papel na redução do custo, porque se considerarmos o cálculo de ( X T Y X ) v , é possível ser calculado com O ( n 2 ) da seguinte maneira: X T ( Y ( X v ) ) . Mas quando d i a g é usado, eu aprecio que alguém possa me dar uma mão. v(XTYX)vO(n2)XT(Y(Xv))diag
John Smith
1
Para a diagonal , o produto D v pode ser calculado em O ( n ) tempo. Suponho que seja possível que a estrutura do produto vetorial possa ser explorada, mas duvido. Se você pudesse calcular uma matriz Z no tempo O ( n 2 ) tal que d i a g ( X T Y X ) = X T Y X - Z , certamente esse produto vetorial seria útil. DDvO(n)ZO(n2)diag(XTYX)=XTYXZ
precisa saber é o seguinte
Parece difícil encontrar esse em O ( n 2 ) . ZO(n2)
John Smith
4
Eu insisto: é inútil. Se você tiver um procedimento que calcule diag ( X T Y X ) v no tempo O ( n 2 ) , também poderá calcular diag ( X T Y X ) no tempo O ( n 2 ) : basta escolher v como o vetor de todos. A redução oposta também é clara. vdiag(XTYX)vO(n2)diag(XTYX)O(n2)v
Federico Poloni

Respostas:

2

Deixe-me tentar ajudar, mas, por favor, corrija-me se estiver errado, porque estou tirando isso do meu chapéu:

Vou apenas expandir o cálculo para ajudar a ver o que está acontecendo.

Vamos escrever A=(XTY)

assim que você quer computação para cada ikaikxkiνii

e aik=lxliylk

que éO(n3).(diag(XTYX)v)i=klxliylkxkiνiO(n3)

Yylk=yklxlixkikl

(diag(XTYX)v)i=2×kl>kxliylkxkiνi+kxkiykkxkiνi

nn(n+1)22n

Jean Mercat
fonte