Gibt es eine verbesserte Methode zur Berechnung des folgenden Ausdrucks?

8

gegeben eine symmetrische Matrix und eine beliebige Matrix und einen Vektor , ist es möglich, den folgenden Ausdruck in -Zeit zu berechnen ?YRn×nXRn×nvRn×1O(n2)

diag(XTYX)v

wobei eine Matrix zurückgibt, deren Hauptdiagonalelemente gleich denen von und nicht diagonalen Elementen gleich 0 sind und die Transponierte von .diag(X)n×nXXTX

John Smith
quelle
3
Kurze Bemerkung: ist nutzlos: Die Frage ist äquivalent zu " es möglich, in zu berechnen ?". Ich weiß die Antwort nicht, aber ich vermute, dass es nein ist . vdiag(XTYX)O(n2)
Federico Poloni
2
Ich denke, kann eine Rolle bei der Reduzierung der Kosten spielen, denn wenn wir die Berechnung von , ist es möglich, mit wie folgt berechnet zu werden: . Aber wenn verwendet wird, schätze ich, dass mir jemand könnte. v(XTYX)vO(n2)XT(Y(Xv))diag
John Smith
1
Für die Diagonale kann das Produkt in berechnet werden. Ich nehme an, es ist möglich, dass die Vektorproduktstruktur ausgenutzt wird, aber ich bezweifle es. Wenn Sie eine Matrix in Zeit so berechnen könnten, dass , dann wäre dieses Vektorprodukt sicher nützlich. DDvO(n)ZO(n2)diag(XTYX)=XTYXZ
Geoff Oxberry
Es scheint schwierig zu sein, ein solches in . ZO(n2)
John Smith
4
Ich bestehe darauf: ist nutzlos. Wenn man ein Verfahren , das berechnet in Zeit, dann kann man auch compute in Zeit : wähle einfach als den Vektor aller. Die entgegengesetzte Reduktion ist ebenfalls klar. vdiag(XTYX)vO(n2)diag(XTYX)O(n2)v
Federico Poloni

Antworten:

2

Lassen Sie mich versuchen zu helfen, aber bitte korrigieren Sie mich, wenn ich falsch liege, weil ich das nur aus meinem Hut ziehe:

Ich werde nur die Berechnung erweitern, um zu sehen, was passiert.

Schreiben wirA=(XTY)

Sie möchten also für jedes berechnenkaikxkiνii

undaik=lxliylk

(diag(XTYX)v)i=klxliylkxkiνi , was .O(n3)

Lassen Sie uns nun die Hypothese bringen: Da symmetrisch ist, ist . In der Summe gibt es nur das Produkt , das auch in Bezug auf und symmetrisch ist .Yylk=yklxlixkikl

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

Das sind mal Berechnungen. Sie können die Berechnung also durch fast teilen, aber nicht durch .nn(n+1)22n

Jean Mercat
quelle