Nun, ich hatte ein bisschen Spaß mit diesem. Das erste, woran ich dachte, als ich das Problem zum ersten Mal las, war die Gruppentheorie (insbesondere die symmetrische Gruppe S n ). Die for-Schleife baut einfach eine Permutation σ in S n auf, indem sie bei jeder Iteration Transpositionen (dh Swaps) zusammensetzt. Meine Mathematik ist nicht allzu spektakulär und ich bin ein bisschen verrostet. Wenn meine Notation nicht stimmt, nimm sie mit.
Überblick
Sei Adas Ereignis, dass unser Array nach der Permutation unverändert bleibt. Wir sind schließlich gebeten , die Wahrscheinlichkeit von Ereignis zu finden A, Pr(A).
Meine Lösung versucht, das folgende Verfahren zu befolgen:
- Berücksichtigen Sie alle möglichen Permutationen (dh Neuordnungen unseres Arrays).
- Partitionieren Sie diese Permutationen in disjunkte Mengen basierend auf der Anzahl der darin enthaltenen sogenannten Identitätstranspositionen . Dies hilft, das Problem auf gleichmäßige Permutationen zu reduzieren .
- Bestimmen Sie die Wahrscheinlichkeit, die Identitätspermutation zu erhalten, vorausgesetzt, die Permutation ist gerade (und von einer bestimmten Länge).
- Summieren Sie diese Wahrscheinlichkeiten, um die Gesamtwahrscheinlichkeit zu erhalten, mit der das Array unverändert bleibt.
1) Mögliche Ergebnisse
Beachten Sie, dass jede Iteration der for-Schleife einen Swap (oder eine Transposition ) erzeugt, der eines von zwei Dingen ergibt (aber niemals beide):
- Zwei Elemente werden vertauscht.
- Ein Element wird mit sich selbst ausgetauscht. Für unsere Absichten und Zwecke bleibt das Array unverändert.
Wir kennzeichnen den zweiten Fall. Definieren wir eine Identitätsumsetzung wie folgt:
Eine Identitätsumsetzung tritt auf, wenn eine Nummer mit sich selbst ausgetauscht wird. Das heißt, wenn n == m in der obigen for-Schleife ist.
Für jeden Lauf des aufgelisteten Codes erstellen wir NTranspositionen. 0, 1, 2, ... , NIn dieser "Kette" können Identitätsumwandlungen auftreten.
Betrachten Sie zum Beispiel einen N = 3Fall:
Given our input [0, 1, 2].
Swap (0 1) and get [1, 0, 2].
Swap (1 1) and get [1, 0, 2]. ** Here is an identity **
Swap (2 2) and get [1, 0, 2]. ** And another **
Beachten Sie, dass es eine ungerade Anzahl von Nichtidentitätstranspositionen gibt (1) und das Array geändert wird.
2) Partitionierung basierend auf der Anzahl der Identitätstranspositionen
Sei K_idas Ereignis, dass iIdentitätstranspositionen in einer gegebenen Permutation auftreten. Beachten Sie, dass dies eine vollständige Aufteilung aller möglichen Ergebnisse darstellt:
- Keine Permutation kann zwei verschiedene Größen von Identitätstranspositionen gleichzeitig haben, und
- Alle möglichen Permutationen müssen zwischen
0und NIdentitätstranspositionen haben.
Somit können wir das Gesetz der Gesamtwahrscheinlichkeit anwenden :
Jetzt können wir endlich die Partition nutzen. Beachten Sie, dass das Array bei einer ungeraden Anzahl von Nichtidentitäts- Transpositionen auf keinen Fall unverändert bleiben kann *. So:
* Aus der Gruppentheorie ist eine Permutation gerade oder ungerade, aber niemals beides. Daher kann eine ungerade Permutation nicht die Identitätspermutation sein (da die Identitätspermutation gerade ist).
3) Bestimmen von Wahrscheinlichkeiten
Wir müssen nun zwei Wahrscheinlichkeiten für N-igerade bestimmen :


Die erste Amtszeit
Der erste Term
repräsentiert die Wahrscheinlichkeit, eine Permutation mit iIdentitätstranspositionen zu erhalten. Dies stellt sich als binomisch heraus, da für jede Iteration der for-Schleife:
- Das Ergebnis ist unabhängig von den Ergebnissen davor und
- Die Wahrscheinlichkeit, eine Identitätstransposition zu erzeugen, ist nämlich dieselbe
1/N.
Daher ist für NVersuche die Wahrscheinlichkeit, iIdentitätstranspositionen zu erhalten, wie folgt:
Die zweite Amtszeit
Also , wenn Sie es bis hierher geschafft haben, haben wir das Problem zu finden , reduziert
für N - iselbst. Dies stellt die Wahrscheinlichkeit dar, eine Identitätspermutation zu erhalten, wenn idie Transpositionen Identitäten sind. Ich verwende einen naiven Zählansatz, um die Anzahl der Wege zum Erreichen der Identitätspermutation über die Anzahl möglicher Permutationen zu bestimmen.
Betrachten Sie zuerst die Permutationen (n, m)und (m, n)Äquivalente. Dann sei Mdie Anzahl der möglichen Nichtidentitätspermutationen. Wir werden diese Menge häufig verwenden.
Ziel ist es, die Anzahl der Möglichkeiten zu bestimmen, wie eine Sammlung von Transpositionen kombiniert werden kann, um die Identitätspermutation zu bilden. Ich werde versuchen, die allgemeine Lösung neben einem Beispiel von zu konstruieren N = 4.
Betrachten wir den N = 4Fall bei allen Identitätstranspositionen ( dh i = N = 4 ). Stellen wir Xeine Identitätstransposition dar. Für jeden Xgibt es NMöglichkeiten (sie sind :) n = m = 0, 1, 2, ... , N - 1. Somit gibt es N^i = 4^4Möglichkeiten, die Identitätspermutation zu erreichen. Der Vollständigkeit halber addieren wir den Binomialkoeffizienten C(N, i), um die Reihenfolge der Identitätstranspositionen zu berücksichtigen (hier ist er nur gleich 1). Ich habe versucht, dies unten mit dem physischen Layout der obigen Elemente und der Anzahl der folgenden Möglichkeiten darzustellen:
I = _X_ _X_ _X_ _X_
N * N * N * N * C(4, 4) => N^N * C(N, N) possibilities
Jetzt, ohne explizit N = 4und zu ersetzen i = 4, können wir den allgemeinen Fall betrachten. Wenn wir das Obige mit dem zuvor gefundenen Nenner kombinieren, finden wir:
Das ist intuitiv. In der Tat sollte Sie jeder andere Wert als 1wahrscheinlich alarmieren. Denken Sie darüber nach: Wir erhalten die Situation, in der alle NTranspositionen als Identitäten bezeichnet werden. Was ist wahrscheinlich, dass das Array in dieser Situation unverändert bleibt? Klar , 1.
N = 4Betrachten wir nun noch einmal zwei Identitätstranspositionen ( dh i = N - 2 = 2 ). Als Konvention werden wir die beiden Identitäten am Ende platzieren (und später bestellen). Wir wissen jetzt, dass wir zwei Transpositionen auswählen müssen, die, wenn sie komponiert werden, zur Identitätspermutation werden. Platzieren wir ein Element an der ersten Stelle und nennen es t1. Wie oben erwähnt, gibt es MMöglichkeiten, vorausgesetzt, es t1handelt sich nicht um eine Identität (es kann nicht so sein, wie wir bereits zwei platziert haben).
I = _t1_ ___ _X_ _X_
M * ? * N * N
Das einzige Element, das möglicherweise noch an der zweiten Stelle verbleiben könnte, ist das Inverse von t1, was tatsächlich der Fall ist t1(und dies ist das einzige Element aufgrund der Eindeutigkeit des Inversen). Wir schließen wieder den Binomialkoeffizienten ein: In diesem Fall haben wir 4 offene Stellen und wir möchten 2 Identitätspermutationen platzieren. Wie viele Möglichkeiten können wir das tun? 4 wählen Sie 2.
I = _t1_ _t1_ _X_ _X_
M * 1 * N * N * C(4, 2) => C(N, N-2) * M * N^(N-2) possibilities
Betrachtet man noch einmal den allgemeinen Fall, so entspricht dies alles:
Schließlich machen wir den N = 4Fall ohne Identitätstranspositionen ( dh i = N - 4 = 0 ). Da es viele Möglichkeiten gibt, wird es schwierig und wir müssen aufpassen, dass wir nicht doppelt zählen. In ähnlicher Weise beginnen wir, indem wir ein einzelnes Element an die erste Stelle setzen und mögliche Kombinationen ausarbeiten. Nehmen Sie die einfachste zuerst: die gleiche Umsetzung 4 Mal.
I = _t1_ _t1_ _t1_ _t1_
M * 1 * 1 * 1 => M possibilities
Betrachten wir nun zwei einzigartige Elemente t1und t2. Es gibt MMöglichkeiten für t1und nur M-1Möglichkeiten für t2(da t2kann nicht gleich sein t1). Wenn wir alle Vorkehrungen ausschöpfen, bleiben uns die folgenden Muster:
I = _t1_ _t1_ _t2_ _t2_
M * 1 * M-1 * 1 => M * (M - 1) possibilities (1)st
= _t1_ _t2_ _t1_ _t2_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (2)nd
= _t1_ _t2_ _t2_ _t1_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (3)rd
Betrachten wir nun drei einzigartige Elemente, t1, t2, t3. Lassen Sie uns t1zuerst und dann platzieren t2. Wie immer haben wir:
I = _t1_ _t2_ ___ ___
M * ? * ? * ?
Wir können noch nicht sagen, wie viele Möglichkeiten t2es noch geben kann, und wir werden gleich sehen, warum.
Wir platzieren uns jetzt t1auf dem dritten Platz. Beachten Sie, t1dass wir dorthin gehen müssen, da wir, wenn wir an der letzten Stelle hingehen würden, nur das (3)rdobige Arrangement neu erstellen würden . Doppelzählung ist schlecht! Dadurch bleibt das dritte eindeutige Element t3an der endgültigen Position.
I = _t1_ _t2_ _t1_ _t3_
M * ? * 1 * ?
Warum mussten wir uns eine Minute Zeit nehmen, um die Anzahl der t2s genauer zu betrachten ? Die Transpositionen t1und t2 können keine disjunkten Permutationen sein ( dh sie müssen eine (und nur eine, da sie auch nicht gleich sein können) von ihrem noder teilen m). Der Grund dafür ist, dass wir die Reihenfolge der Permutationen vertauschen könnten, wenn sie disjunkt wären. Dies bedeutet, dass wir die (1)stAnordnung doppelt zählen würden .
Sagen Sie t1 = (n, m). t2muss von der Form (n, x)oder (y, m)für einige sein xund yum nicht disjunkt zu sein. Beachten Sie, dass xmöglicherweise nicht noder mund yviele nicht noder sind m. Somit ist die Anzahl der möglichen Permutationen, t2die sein könnten, tatsächlich 2 * (N - 2).
Kommen wir also zu unserem Layout zurück:
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * ?
Jetzt t3muss die Umkehrung der Zusammensetzung von sein t1 t2 t1. Machen wir es manuell:
(n, m)(n, x)(n, m) = (m, x)
Also t3muss sein (m, x). Hinweis : Dies ist nicht zu disjunkt t1und nicht entweder gleich t1oder t2so gibt es keine Doppelzählung für diesen Fall.
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * 1 => M * 2(N - 2) possibilities
Zum Schluss noch alles zusammen:
4) Alles zusammenfügen
Das war's. Arbeiten Sie rückwärts und ersetzen Sie das, was wir gefunden haben, durch die ursprüngliche Summe in Schritt 2. Ich habe die Antwort auf den folgenden N = 4Fall berechnet . Es stimmt sehr genau mit der empirischen Zahl überein, die in einer anderen Antwort gefunden wurde!
N = 4
M = 6 _________ _____________ _________
| Pr (K_i) | Pr (A | K_i) | Produkt |
_________ | _________ | _____________ | _________ |
| | | | |
| i = 0 | 0,316 | 120/1296 | 0,029 |
| _________ | _________ | _____________ | _________ |
| | | | |
| i = 2 | 0,211 | 6/36 | 0,035 |
| _________ | _________ | _____________ | _________ |
| | | | |
| i = 4 | 0,004 | 1/1 | 0,004 |
| _________ | _________ | _____________ | _________ |
| | |
| Summe: | 0,068 |
| _____________ | _________ |
Richtigkeit
Es wäre cool, wenn es ein Ergebnis in der Gruppentheorie gäbe, das hier angewendet werden könnte - und vielleicht gibt es das! Es würde sicherlich dazu beitragen, dass all diese mühsamen Zählungen vollständig verschwinden (und das Problem auf etwas viel eleganteres verkürzen). Ich hörte auf zu arbeiten N = 4. Denn N > 5was gegeben ist, gibt nur eine Annäherung (wie gut, ich bin nicht sicher). Es ist ziemlich klar, warum das so ist, wenn Sie darüber nachdenken: Zum Beispiel gibt es bei gegebenen N = 8Transpositionen eindeutig Möglichkeiten, die Identität mit vier einzigartigen Elementen zu schaffen, die oben nicht berücksichtigt wurden. Die Anzahl der Wege wird anscheinend schwieriger zu zählen, wenn die Permutation länger wird (soweit ich das beurteilen kann ...).
Jedenfalls konnte ich so etwas im Rahmen eines Interviews definitiv nicht machen. Wenn ich Glück hätte, würde ich bis zum Nenner kommen. Darüber hinaus scheint es ziemlich böse.
Nund einen festen Startwert ist die Wahrscheinlichkeit entweder0oder1weil sie überhaupt nicht zufällig ist.