Wie kann ich von zwei oder mehr Vektoren Linearkombinationen erstellen, so daß möglichst viele Komponenten Null sind?
Ich habe m Vektoren in einem Vektorraum ℚⁿ (m≪n), deren Koordinaten mir bekannt sind (sie können als ganzzahlig angenommen werden). Diese Vektoren kommen aus einer Berechnung eines Eigensystems zu einem entarteten Eigenwert und spannen einen Unterraum auf, und ich suche nun eine Möglichkeit, eine Basis für diesen Unterraum zu finden, in dem möglichst viele Koordinaten der Basisvektoren Null sind, und der Rest wenn möglich positiv. Orthogonalität ist dabei kein Thema.
Beispiel: Ich habe a=(1,3,1) und b=(1,0,−2). Als Lösung sollte mir der Algorithmus die Vektoren ⅓(a−b)=(0,1,1) und ⅓(2a+b)=(1,2,0) vorschlagen. Ich habe dabei die Vermutung, daß eine solche Lösung mit ausschließlich nichtnegativen Koordinaten für meine Anwendung immer existiert, bin mir aber nicht sicher.
Ist eine solche diffuse Aufgabenstellung überhaupt klar formulierbar, und wenn ja, gibt es einen Algorithmus, der die Lösung findet?
2 Antworten
Ich habe dabei die Vermutung, daß eine solche Lösung mit ausschließlich nichtnegativen Koordinaten für meine Anwendung immer existiert, bin mir aber nicht sicher.
Ja, das sollte stimmen
Hallo, besser spät als nie!
Vielleicht hilft es ja. Je nach dem wo du das darstellen möchtest? Und ob überhaupt noch.
1. Gegeben: \( A \in \mathbb{Q}^{n \times m} \) mit Spalten \( a_1, \dots, a_m \).
2. Variablen:
\( x \in \mathbb{Q}^m \) — Linearkombinationskoeffizienten,
\( v = A x \in \mathbb{Q}^n \) — resultierender Vektor,
\( z \in \{0,1\}^n \) — Indikatorvariablen für \( v_i \ne 0 \).
3. Nebenbedingungen (für jedes \( i = 1,\dots,n \))
\[
-M z_i \le v_i \le M z_i
\]
(z. B. \( M = 10^3 \))
und ggf
\[
v_i \ge 0 \quad \text{(für nichtnegative Koordinaten)}
\]
4. Zielfunktion:
\[
\min \sum_{i=1}^n z_i
\]
5. Wiederhole für mehrere \( x^{(k)} \), sodass \( v^{(1)}, \dots, v^{(k)} \) linear unabhängig sind.
Prüfe dabei z. B. Rang \( \text{rank}(V) = k \) mit \( V = [v^{(1)} \dots v^{(k)}] \).
Das kannst du direkt in einem ILP-Solver darstellen.
Liebe Grüße