Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Permutationsmatrix berechnen

Permutationsmatrix berechnen
Gabriel
Guten Morgen liebe Kolleginen, Kollegen des Excel-Forums
Ich habe das folgende Problem. Ich betrachte n Objekten die von 1 bis n nummeriert sind. Für die Permutationen dieser Objekten, ist es dann möglich die Permutationen dieser n Zahlen zu analysieren.
Diese Permutationen können auch lexikographisch gelistet werden:Zum Beispiel
P0: 1 2 3 4 5 6 7 8
P1: 2 1 3 4 5 6 7 8
usw....
Zu jederPermutation gehört eine Permutationsmatrix. Kennt jemand eine VBA-Prozedur, welche für jede der n! Permutationen die entsprechende Permutationsmatrix ausrechnet?
Dies ist die grössere Schwiriegkeit. Diese Permutationsmatrix wird k-mal potenziert, die zweite Aufgabe besteht darin eine bestimmte Permutationen sodass dei k-te Potenz dieser Matrix gleich der Einheitsmatrix ist.
Eingangsgrösse: Die Zahl n.
Ausgangsgrösse: alle Permutationsmatrixen P mit P hoch k = Einheitsmatrix.
Im Voraus herzlichen Dank für alle klärenden Hinweise.
Viele Grüsse
Gabriel

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Permutationsmatrix berechnen
11.07.2009 18:40:25
Erich
Hi Gabriel.
so als Ansatz:

Option Explicit
Sub PermMatrix()
Dim nn As Long, tt As String, zz As Long, lngA As Long, arrP(), pMat() As Byte
nn = 5
For zz = 1 To nn
tt = tt & zz
Next zz
zz = 0
lngA = Application.Fact(Len(tt))
ReDim arrP(1 To lngA)
Perm tt, "", zz, arrP                        ' Permutationen
For zz = 1 To lngA
ReDim pMat(1 To lngA, 1 To lngA)          ' Permutationsmatrix
For nn = 1 To Len(tt)
pMat(nn, Mid(arrP(zz), nn, 1)) = 1
Next nn
' hier k-te Potenz von pMat mit Einheitsmatrix vergleichen
Next zz
End Sub
Sub Perm(aa$, bb$, Ze&, arrW)
Dim ii%, jj%
jj = Len(aa)
If jj > 1 Then
For ii = 1 To jj
Perm Left(aa, ii - 1) + Right(aa, jj - ii), bb + Mid(aa, ii, 1), Ze, arrW
Next ii
Else
Ze = Ze + 1
arrW(Ze) = bb & aa
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönes Wochenende!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige