Hallo Mackie,
tut mir Leid, falls ich mich unverständlich ausgedrückt habe. Die von mir aufgeführten Vektoren werden erstellt und besitzen alle eine unterschiedliche Anzahl an 1er und/oder 2er. Die so erstellten Vektoren gehen anschließend in meine Permutationsfunktion:
Function permutation(ByVal a, k)
If k = UBound(a) Then
Zeile = Cells(65536, 1).End(xlUp).Row
If Cells(1, 1) <> "" Then Zeile = Zeile + 1
Range(Cells(Zeile, 1), Cells(Zeile, UBound(a) + 1)).FormulaArray = a
Exit Function
Else
For i = k To UBound(a)
x = a(i)
a(i) = a(k)
a(k) = x
Call permutation(a, k + 1)
Next
End If
End Function
Da ich anschließend alle Fälle habe, eben auch die, die du genannt hast, aber eben auch doppelte Fälle wie z. B.:
1, 1, 0, 0 und 1, 1, 0, 0 und 1, 1, 0, 0 und 1, 1, 0, 0
wobei einmal die 1 mit der 1 und einmal die 0 mit der 0 getauscht wird, lösche ich am Ende alle doppelten Einträge. Bei den von mir im ersten Beitrag geschriebenen Fälle handelt es sich also nur um die Fälle, die noch permutiert werden müssen. Die eigentliche Permutation möchte ich beschleunigen, indem ich z. B. keine Funktion benutze, die
1. Sich selbst aufruft (rechenzeit)
2. Auch bereits berechnete (permutierte) Fälle nochmals berechnet
3. Trotzdem so variabel gestaltet ist, dass alle Fälle von Vektoren mit einer unterschiedlichen Anzahl an Einträgen (2x1, 3x1, 4x1, 5x1, 6x1 usw.) berechnet werden, wobei die Syntax dieser Vektoren denen aus meinem ersten Beitrag entspricht
LG Daniel
|