ich einen Freund habe, der die folgenden zu berechnen braucht:Paths in vollständigen Graphen
Im vollständigen Graphen Kn (k < = 13), gibt es k * (k-1)/2 Kanten. Jede Kante kann auf 2 Arten gerichtet sein, also 2^[(k * (k-1))/2] verschiedene Fälle.
Sie braucht P[A !-> B && C !-> D] - P[A !-> B]*P[C !-> D]
X berechnen -> Y bedeutet: "Es gibt keinen Weg von X nach Y" und P [] ist die Wahrscheinlichkeit. Der Bruteforce-Algorithmus untersucht also jeden der 2^[(k * (k-1))/2] verschiedenen Graphen, und da sie vollständig sind, muss man in jedem Graphen nur einen Satz von betrachten A, B, C, D wegen der Symmetrie.
P [A! -> B] wird dann berechnet als "Anzahl der Graphen ohne Pfad zwischen Knoten 1 und 2" dividiert durch die Gesamtzahl der Graphen, dh 2^[(k * (k-1))/2].
Die Bruteforce-Methode funktioniert in Mathematica bis K8, aber sie benötigt K9, K10 ... bis K13.
Wir müssen natürlich nicht den kürzesten Weg in den Fällen finden, nur wollen, ob es einen gibt.
Wer hat Optimierungsvorschläge? (Dies klingt wie ein typisches Project Euler Problem).
Beispiel:
Die minimale Graph K4 haben 4 Ecken, Kanten 6 geben. Daher gibt es 2^6 = 64 mögliche Wege, um den Kanten Richtungen zuzuweisen, wenn wir die 4 Ecken A, B, C und D beschriften.
In einigen Graphen gibt es KEINEN Weg von A nach B (sagen wir X von ihnen) und in einigen anderen gibt es keinen Weg von C nach D (sagen wir Y). Aber in einigen Graphen, gibt es keinen Weg von A nach B, und zur gleichen Zeit kein Pfad von C nach D ist diese W.
So P[A !-> B]=X/64
, P[C !-> D]=Y/64
und P[A !-> B && C !-> D] = W/64
.
Update:
- A, B, C und D sind 4 verschiedene vertives, daher müssen wir mindestens K4.
- Beachten Sie, dass es sich um DIRECTED-Graphen handelt, daher reicht eine normale Darstellung mit UT-Matrizen nicht aus.
- Es gibt eine Funktion in Mathematica, die die Entfernung zwischen den Knoten in einem gerichteten Graphen findet (wenn sie unendlich zurückgibt, gibt es keinen Pfad), aber das ist ein bisschen übertrieben, da wir die Entfernung nicht brauchen ein Pfad oder nicht.
Würden Sie bitte ein kleines Beispiel hinzufügen, um das Problem zu verdeutlichen? –
Darf A, B, C, D gleich sein? –