Ich habe eine lineare Funktion (n Eingänge -> n Ausgänge), und mit speziellen Struktur der Funktion (einige DP-ähnliche Algorithmus), kann ich die Ausgabe auswerten in O (n) Zeit, anstatt O (n^2) Zeit. Nun, bei einigen Ausgabewerten muss ich die Eingabe finden, die die Ausgabe auswertet.Algorithmus zum Lösen von linearen Gleichungssystem ohne explizite Schreibweise der Matrix-Komponenten
Ich könnte die Matrix-Komponenten (durch Auswertung der linearen Funktion mit n Basis-Eingaben) buchstabieren und einige Algorithmen wie LU-Zerlegung verwenden, aber das würde O (n^3) Zeit zur Berechnung benötigen. Gibt es einen schnelleren Algorithmus, der die Struktur der linearen Funktion ausnutzt?
(Da die lineare Funktion nicht symmetrisch ist, könnte Conjugate Gradient Verfahren nicht verwendet werden.)
ich genaue Lösungen benötigen, wobei n klein ist (n = 10 ~ 20), aber ich brauche diese Art zu tun der Berechnung Hunderttausende von Malen in einer Sekunde.
Vom Code-Design-Standpunkt aus wäre es besser, wenn der Algorithmus keine Transponierung der linearen Funktion benötigt. (Obwohl auf Kosten von mehr Code und mehr Debugging, ist es möglich, die Transponierungsfunktion mit O (n) Zeitkomplexität bereitzustellen.)