Verfasst am: 06.12.2015, 11:06
Titel: Alle möglichen Anordnungen ermitteln
Hallo, ich habe folgendes Problem. Ich möchte alle möglichen Anordnungen von 3 Objekten auf 14 möglichen Positionen haben. Pro Position ist immer nur ein Objekt möglich. Wenn ich richtig liege sind das insgesamt 364 Variationen [ 14!/(3! 11!)].
Um alle Anordnungen zu bekommen wollte ich die Permutationen eines Vektors bestimmen und die mehrfachen Zeilen mit unique(b,'rows') wieder entfernen.
Leider konnte Matlab die Permutationen nicht bestimmen, da meine 5GB Ram nicht ausreichen. Kann man dieses Problem auch auf eine andere Weise lösen? Ich denke mein Weg ist wahrscheinlich nicht die beste Lösung. Wie heißt mein Problem eigentlich mathematisch korrekt?
Verfasst am: 06.12.2015, 15:56
Titel: Re: Alle möglichen Anordnungen ermitteln
Hallo Gasterino,
Du kannst das üProblem von der anderen Richtung aus angehen:
Du hast 14 Positionen und möchtest darauf jeweils 3 ohne Wiederholung ziehen.
Das sind Permutationen mit Berücksichtigung der Reihenfolge, wenn ich Dich richtig verstanden habe. Dann hättest Du allerdings nicht 364 sondern 2184 Lösungen: N!/(N-K)!
Sind [14,13,12] und [12,13,14] gleiche oder unterschiedliche Lösungen?
Siehe: http://www.mathworks.com/matlabcent.....eexchange/26397-vchooseko
Dort findest Du auch sehr schnelle Methoden für die anderen Permutationen und Kombinantionen.
Gruß, Jan
Gasterino
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.12.2015, 10:08
Titel:
Danke für die bisherigen Antworten, aber anscheinend konnte ich mein Problem nicht richtig erklären, da sich die Links auf etwas anderes beziehen.
Ich versuche es mal etwas anschaulicher zu erklären: Ich habe 2 Geldscheine (5 und 10) und 4 Stühle. Ich möchte dann herausfinden, auf welche Arten ich die Geldscheine auf die Stühle verteilen kann.
es sollte dann so eine Matrix als Lösung bekommen (der Spaltenindex steht für den Stuhl)
0 0 5 10
0 0 10 5
0 5 0 10
0 5 10 0
0 10 0 5
0 10 5 0
5 0 0 10
5 0 10 0
5 10 0 0
10 0 0 5
10 0 5 0
10 5 0 0
Die erste Zeile sagt dann folgendes aus: auf den Stühlen 1&2 liegt kein Geld, auf dem 3. Stuhl liegt der 5 Schein und auf dem 4. der 10er.
Ich denke auch, dass die Antworten passen.
Statt die Geldscheine auf 4 Stühle zu vertzeilen, kannst Du auch jeweils die Indizes von zwei Stühlen bestimmen.
Die erste Spalte ist also der (Stuhl)Index des 5er Scheins, die zweite Spalte die des 10er Scheins. Wenn man mit großen Arrays rechnet benötigt man so nur die Hälfte des Speicherplatzes. Gerade bei Kombinationen und Permutationen explodiert der RAM-Bedarf immer wieder unerwartet.
Per
sub2ind
kannst Du aus der Index-Matrix die Matrix mit den zusätzlichen Nullen wieder erzeugen, falls Du sie wirklich brauchst.
Gruß, Jan
Gasterino
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 09.12.2015, 19:07
Titel:
Vielen Dank euch beiden! Das Problem ist jetzt tatsächlich gelöst.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.