Vektorauswahl Problem

Neue Frage »

OhNo Auf diesen Beitrag antworten »
Vektorauswahl Problem
Hallo,

ich bin auf ein Problem gestoßen und komme bsiher zu keiner brauchbaren Lösung. Vielleicht hat einer von euch eine passende Idee oder hat schon ein ähnliches Problem gehabt:

Gegeben ist eine endliche Menge von $n$ verschiedenen Einheitvektoren aus dem R³.
Zu jedem Vektor $v$ nimmt man den negativen Vektor $-v$ hinzu.

Ziel: Aus jedem Paar $v,-v$ soll nun ein Vektor ausgewählt werden, so dass
die hierdurch insgesamt erhaltene Menge von Vektoren eine möglichst große Vektorsumme ergibt



Grüße OhNo
René Gruber Auf diesen Beitrag antworten »

"Möglichst groß" ist dann wohl im Sinne des Betrages zu verstehen? Interessantes Problem.
OhNo Auf diesen Beitrag antworten »

Ja der Betrag des resultierenden Vektors sollte möglichst groß sein. Das gleiche Kriterium müsste dann auch die Spannweite erfüllen. Das würde bedeuten: Ist die Spannweite klein ist der Betrag möglichst groß.
gonnabphd Auf diesen Beitrag antworten »

Hi,

Könntest du noch erzählen, woher das Problem stammt? Und wie gross ist n typischerweise (bzw. ist das ein Problem für eine Anwendung oder aus einem Kurs über Algorithmen oder sowas)?


Grüsse Wink
OhNo Auf diesen Beitrag antworten »

Hi,

das problem hat sich im Laufe meiner Bachelorarbeit ergeben. Es rührt daher, dass eine Spannung in der Machanik auf einer Schnittfläche wirkt. Theoretisch also in beide Richtungen der Normalen dieser Fläche. Ich möchte nun zu einer Belastung durch n Lastfälle die resultierende Belastung errechenen oder die mittlere Hauptlastrichtung. Die Anzahl der Lastfälle kann theoretisch beliebig groß sein. Im aktuellen Rahmen <5. Die Lösung des Problems möchte ich im Anschluss in Matlab implementiert werden.

Ich hoffe ich konnte euch das einigermaßen verständlich erklären. Vielen Dank dassi hr euch Gedanken macht.
gonnabphd Auf diesen Beitrag antworten »

Etwas effizientes fällt mir zwar nicht ein, aber für kleine n kann man ja einfach alle Möglichkeiten durchprobieren lassen. Um das ein bisschen geordnet zu gestalten, könnte man die gegebenen Vektoren in eine Matrix schreiben und diese auf Vektoren mit Einträgen aus anwenden. Wenn man alle Vektoren in durchgeht, kommt man genau auf alle möglichen Summen, welche du betrachten willst.

Dabei muss man sich dann einfach denjenigen Vektor merken, dessen Bild die maximale Norm hat und löst so das Problem.

Allerdings kenne ich mich mit Algorithmen nicht so wirklich aus und es ist gut möglich, dass es einen halbwegs anständigen gibt (der nicht ist).

So viel zu meinen Ideen.
 
 
OhNo Auf diesen Beitrag antworten »

Hi gonnabphd danke für deinen nächtlichen Einsatz. An eine Permutationsvariante habe ich auch schon gedacht und es als zu aufwendig verworfen. Aber diese Matrix formulierung könnte es interessant machen, da ich das ganze ja in Matlab umsetzten will. Allerdings habe ich noch nicht ganz erstanden wie deine idee exakt funktioniert.

Zitat:
Original von gonnabphd
diese auf Vektoren mit Einträgen aus anwenden.


meinst du damit ?

Ich steh gerade ein bischen auf dem Schlauch sorry.
gonnabphd Auf diesen Beitrag antworten »

ist eine 3 x n Matrix.

Mal ein Beispiel wie ich mir das gedacht hatte mit n = 4:



Dann wäre



Nun beginnt man z.B. erst mit dem Vektor :



und berechnet die Norm von .

dann weiter mit



etc. etc.

Man müsste also einen Weg finden, alle Vektoren in nacheinander zu generieren.

Übrigens: Wenn du blosse eine Abschätzung für die maximale Grösse des Vektors haben willst, dann könntest du bspw. einfach die Matrix zu einer n x n Matrix mit Nullen ergänzen, also



bilden, und dann die 2-Norm von berechnen. Damit bekommst du für alle Vektoren aus :



Also eine obere Schranke für die Länge des längsten Vektors. Interessant wäre es vielleicht auch, zu untersuchen wie nahe diese obere Schranke an das Optimum herankommt.
OhNo Auf diesen Beitrag antworten »

Zitat:
Original von gonnabphd
Übrigens: Wenn du blosse eine Abschätzung für die maximale Grösse des Vektors


eigentlich ist mir die Größe nicht wichtig. wichtig ist nur die Richtung.


Wenn ich bei deinem Beispiel bleibe wäre es dann richtig



und davon dann die Summe zuberechenen?

Zitat:
Original von gonnabphd
Man müsste also einen Weg finden, alle Vektoren in nacheinander zu generieren.

Dafür könnte ich diese Funktion nutzen
http://www.mathworks.de/help/toolbox/stats/combnk.html
gonnabphd Auf diesen Beitrag antworten »

Zitat:
Original von OhNo
Wenn ich bei deinem Beispiel bleibe wäre es dann richtig



und davon dann die Summe zuberechenen?


Nein. Dieses Matrixprodukt ist doch noch nicht einmal definiert. Allerdings gibt dir (mit deiner Schreibweise)



eine Matrix in der alle möglichen Summen in den Spalten spalten stehen.

Mir ist noch nicht so ganz klar, was diese Vektorsummen dann physikalisch darstellen sollen. Also man hat eine Fläche und auf diese Fläche wirken Kräfte. Und du willst nun die Gesamtkraft ausrechnen? Falls ja: Wieso kennt man denn die Kräfte bis auf das Vorzeichen?
Ich kann mir im Moment gerade keine physikalische Situation vorstellen, bei der das der Fall ist - aber vielleicht verstehe ich dich auch ganz falsch.
OhNo Auf diesen Beitrag antworten »

Zitat:
Original von gonnabphd
Nein. Dieses Matrixprodukt ist doch noch nicht einmal definiert. Allerdings gibt dir (mit deiner Schreibweise)



eine Matrix in der alle möglichen Summen in den Spalten spalten stehen.

Die Reihe mit der größten Summe müsste doch dann die richtige Richtung sein. also nochmal das Problem:

Man hat ein Bauteil auf das Kräfte wirken. Im inneren ergeben sich Spannungen. Diese liegen in einer Fläche. Für meine Anwendung ist es egal ob diese Spannungen Zug- oder Druckspannungen sind.

Die Spannungen die ich betrachte treten nicht gleichzeitig auf. Überlagern sich also nicht. Während die Fläche die gleiche, bleibt ändern die Spannungen ihre Richtung. Nun möchte ich die mittlere Richtung der Spannungen ermitteln. Ein einfacher Mittelwert reicht hier nicht aus, da sich entgegengesetze Spannungen eliminieren. Da ich aber zwischen negativer und positver Spannung nicht unterschiede müssen diese sich addieren und diese Richtung "bestärken" anstatt sie zu "schwächen".

Frag gerne ochmal nach falls ich mich unverständlich ausgedrückt habe.
gonnabphd Auf diesen Beitrag antworten »

Zitat:
Die Reihe mit der größten Summe müsste doch dann die richtige Richtung sein.


Ich würde sagen, die Spalte in mit dem grössten Betrag wäre die Richtung, die du suchst. (jedenfalls ist das dann die grösste Vektorsumme wie im Threadstart beschrieben.)
Denn jede Spalte ist ja eine Summe , die Reihen haben mMn keine Bedeutung.
OhNo Auf diesen Beitrag antworten »

ja du hast natürlich Recht. Habs per Hand gerade nachgerechnet. Die Spalten sind die gesuchten Vektroren.

Grüße
gonnabphd Auf diesen Beitrag antworten »

Mir ist gerade noch eine Idee gekommen, wie man vielleicht einen effizienten Algorithmus finden könnte:

Dein Problem kann ja zurückgeführt werden auf folgendes: Gegeben eine Matrix A in , finde diejenige Ecke des Hyperquaders , für welche maximal ist.


Ich vermute mal, dass es gute Algorithmen gibt, um folgendes Problem zu lösen:

Finde einen Punkt welcher



maximiert. Ein solcher Punkt liegt natürlich auf einer Seitenfläche des Hyperquaders.
Ich würde nun mal vermuten, dass sich zeigen lässt, dass dein gesuchter Punkt dann eine der Ecken dieser Seite sein muss (weil die am nächsten liegen).

Ich kenne mich mit Optimierung überhaupt nicht aus, aber ich denke mal, dass man mit obigem eine polynomielle Laufzeit erreichen könnte (wenn denn alles tatsächlich so ist, wie ich vermute...).

Ich weiss nicht, ob's noch relevant ist, oder ob du dich weiter damit beschäftigen willst, aber ich dachte ich schreib den Gedanken einfach mal hier auf.
Neue Frage »
Antworten »



Verwandte Themen