Diplomarbeit Zufälliges Puzzeln Abschätzungen für Mischzeiten einer Markovkette von Stefan Auerbach geschrieben an der Technischen Universität Berlin Institut für Mathematik bei Prof. Dr. Michael Scheutzow 11. Juni 2010 Eidesstattliche Erklärung Die selbständige und eigenhändige Ausfertigung versichert an Eides statt Berlin, den 11. Juni 2010 Unterschrift 3 Inhaltsverzeichnis 1 Einleitung 7 2 Das Puzzle 9 2.1 Lösbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Das Puzzle als Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 Markovketten und elektrische Netzwerke 23 3.1 Markovketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Das Puzzle als Markovkette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.2 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Elektrische Netzwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.1 Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Irrfahrten auf Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 Stoppzeiten 31 4.1 Hitting Time, Target Time, Commute Time . . . . . . . . . . . . . . . . . . . . . 31 4.2 Cover Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5 Mixing Time 39 5.1 Untere Schranken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.1.1 Bottleneck Ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.1.2 Durchmesser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.1.3 Abzählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.1.4 Projektion und Statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.1.5 Einer Karte folgen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1.6 Eigenwerte, Relaxationszeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.1.7 Produktketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2 53 Obere Schranken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Hitting Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.2.2 Relaxationszeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5 Inhaltsverzeichnis 5.2.3 Kanonische Pfade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.2.4 Vergleich von Irrfahrten auf Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . 56 6 Offene Fragen 59 6.1 Coupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2 Minimaler Eintrag der Übergangsmatrix . . . . . . . . . . . . . . . . . . . . . . . 62 6.3 Das Cutoff-Phänomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4 Obere Schranke für die Mixing Time . . . . . . . . . . . . . . . . . . . . . . . . . 63 7 Zusammenfassung 65 A Programme 69 A.1 Visualisierung des Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.1.1 torus3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 A.1.2 Unit1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 A.2 Durchmesser, n=3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A.3 Durchmesser, n=2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6 1 Einleitung Markovketten begegnen uns überall, ob beim Kartenmischen, Verfolgen von Aktienkursen oder dem Coupon-Collector-Problem. In dieser Arbeit untersuchen wir eine spezielle diskrete Markovkette erster Ordnung hinsichtlich verschiedener Mischzeiten. Diese Zeiten haben unterschiedliche Bedeutungen, so interessiert man sich beispielsweise dafür, wie lange ein Kartenmischverfahren benötigt, bis die Karten gut gemischt sind. Diese Frage ist essentiell: Führt man in einem Kartendeck von 52 Karten den sogenannten Riffle-Shuffle durch, so benötigt man schon 5-7 gute Mischvorgänge, um ein gut gemischtes Deck zu erhalten [BD92]. Weniger Mischvorgänge oder ein schlechteres Mischverfahren würden es eventuell möglich machen, Positionen von Karten im Deck einzugrenzen, was zum Beispiel beim Blackjack von Vorteil wäre. Oder man möchte wissen, wieviele zufällige Sammelbilder man im Mittel benötigt, um ein Sammelalbum komplett zu füllen oder ein bestimmtes Bild zu erhalten. Wir betrachten ein quadratisches Schiebepuzzle, in welchem wir zufällige Verschiebungen vornehmen, und werden daraus eine Markovkette konstruieren. Das Puzzle ist ähnlich dem bekannten Fifteen-Puzzle oder einem zweidimensionalen Zauberwürfel (Rubik’s Cube). Alternativ können wir uns auch ein Kartenmischverfahren vorstellen. In Kapitel 2 werden wir das Puzzle zuerst auf Lösbarkeit untersuchen und der Frage nachgehen, wieviele Züge man im schlechtesten Fall wohl maximal und minimal benötigt um das Puzzle zu lösen. Im folgenden Kapitel 3 werden wir Markovketten einführen und aus dem Puzzle eine solche konstruieren. Für diese Markovkette werden diverse Eigenschaften untersucht und nachgewiesen. Des Weiteren werden elektrische Netzwerke, Graphen und Gruppen eingeführt, Zusammenhänge erläutert und Voraussetzungen für die folgenden Kapitel geschaffen. Aufbauend darauf werden wir in Kapitel 4 die Stoppzeiten Commute Time, Hitting Time und Cover Time für Markovketten erläutern und für diese mit dem Wissen aus den vorherigen Kapiteln Abschätzungen finden. Schließlich werden wir uns dem Kernthema, der Mixing Time, zuwenden. Wir definieren, wann wir eine Markovkette als gemischt betrachten wollen und werden in Kapitel 5 unterschiedliche Methoden und Techniken benutzen um Abschätzungen für die Mixing Time zu finden. Die Arbeit schließt mit einer kurzen Diskussion von offenen Fragen und Problemen, auf die wir während der Erstellung gestoßen sind. Außerdem befindet sich im Anhang ein OpenGL-Programm, um das zufällige Puzzle zu simulieren. 7 2 Das Puzzle 2.1 Lösbarkeit Wir betrachten das folgende Puzzle auf einem 2-dimensionalen Torus: Für n ∈ N, n ≥ 2 sei ein quadratisches Spielfeld bestehend aus n × n Feldern gegeben. Die Felder sind der Reihenfolge nach nummeriert, von links nach rechts, von oben nach unten. Wir können nun die Zeilen und Spalten des Spielfelds verschieben, wobei das Feld, welches aus dem Spielfeld herausfallen würde, auf den freien Platz rutscht. Abbildung 2.1: Die Permutation R2 auf einem 4 × 4-Torus. Es stellt sich zunächst die Frage, ob man durch geschicktes Verschieben der Zeilen und Spalten jede mögliche Konfiguration der n2 Felder auf dem Spielfeld erreichen kann oder ob die Erreichbarkeit von der Ausgangskonfiguration abhängt. Dazu identifizieren wir jede Konfigu ration mit einer Permutation der Zahlen 1, 2, . . . , n2 und zwar genau der, die sich ergibt, wenn man die Felder von links nach rechts, von oben nach unten liest. Diese Abbildung ist offensichtlich bijektiv. Nun können wir unsere Schiebeoperationen formal definieren. Definition 2.1.1. Für n ∈ N, n ≥ 2, sei Sn2 die Gruppe der Permutationen von 1, 2, . . . , n2 . 9 2 Das Puzzle Für i = 1, . . . , n sind die Permutationen Li , Ri , Ui , Di ∈ Sn2 definiert wie folgt: j+1 Ri (j) := n(i − 1) + 1 j falls j ∈ {n(i − 1) + 1, . . . , ni − 1} falls j = ni sonst Li := L−1 i j+n Di (j) := i j falls j mod n = i, j 6= n(n − 1) + i falls j = n(n − 1) + i sonst Ui := Ui−1 , wobei mod der Modulo-Operator ist. Anschaulich ist • Ri : Verschiebung der i-ten Zeile nach rechts, • Li : Verschiebung der i-ten Zeile nach links, • Di : Verschiebung der i-ten Spalte nach unten und • Ui : Verschiebung der i-ten Spalte nach oben. Es ist sofort klar: Wenn man es schafft, zwei beliebige benachbarte Felder miteinander zu vertauschen ohne die Position der verbleibenden Felder zu ändern, kann man sofort jede beliebige Konfiguration erzeugen. Mit dem Tauschen benachbarter Felder kann man dann nämlich 2 beliebige Felder miteinander tauschen und sich so eine beliebige Transposition erzeugen. Da jede Permutation eine endliche Komposition von Transpositionen ist, wären wir fertig. Wir werden sehen, dass dieses Problem für gerade und ungerade n ≥ 2 unterschiedliche Lösungen hat. Satz 2.1.2. Ist n ≥ 2 eine gerade Zahl, so ist jede Konfiguration erreichbar. Beweis. Wir zeigen, dass man 2 beliebige benachbarte Felder vertauschen kann, wobei benachbart bedeutet, dass die Felder auf dem Torus direkt nebeneinander liegen. Auf Grund der Symmetrieeigenschaften des Torus können wir einfach, ausgehend von der identischen Permutation, die Felder 1 und 2 tauschen und die Lösung dann auf beliebige benachbarte Felder anwenden. Dazu betrachten wir die Permutation σ := D1 ◦ R1 ◦ U1 ◦ L1 ◦ D1 . Anschaulich 10 2.1 Lösbarkeit passiert folgendes: Die Felder 1 und 2 werden vertauscht und die restlichen Felder der ersten Spalte rutschen einen Platz nach unten, wobei das Feld n(n − 1) + 1 (also das letzte Feld der ersten Spalte) auf den Platz n + 1 (das zweite Feld der ersten Spalte) rutscht. Führen wir diese Permutation nun insgesamt n−1 mal aus, so erhalten wir genau unsere gesuchte Vertauschung: da n gerade ist, sind nun die Felder 1 und 2 genau vertauscht und der Rest der ersten Spalte befindet sich wieder in der Ausgangskonfiguration. Die Permutation σ n−1 entspricht also genau der Vertauschung der Felder 1 und 2. Abbildung 2.2: Die Permutation D1 ◦ R1 ◦ U1 ◦ L1 ◦ D1 auf einem n × n-Torus. Will man nun allgemein für 1 ≤ i, j ≤ 1 das Feld in Spalte i und Zeile j mit seinem rechten Nachbarn vertauschen, so wählt man σ := Di ◦ Rj ◦ Ui ◦ Lj ◦ Di . Dann ergibt σ n−1 die gewünschte Vertauschung. Will man zwei übereinander liegende Felder vertauschen, so dreht man das Puzzle um 90 Grad und führt die üblichen Operationen aus. In dem Beweis wird auch deutlich, warum diese Vorgehensweise für ungerade n nicht zielführend sein kann. Es wäre nämlich σ n−1 = I, wobei I für die Identität steht. Tatsächlich ist es für ungerade n niemals möglich eine einfache Vertauschung auszuführen. Um dies zu beweisen, benutzen wir das Signum einer Permutation. Satz 2.1.3. Ist n ≥ 2 ungerade, so gilt für jede Schiebeoperation K ∈ {Li , Ri , Ui , Di |i = 1, . . . , n}: sgn(K) = 1 (2.1) Beweis. Für i = 1, .., n ist sgn(Li ) = 1, falls die Anzahl der Fehlstände von Li gerade ist. Die Fehlstände lassen sich aber exakt angeben: 11 2 Das Puzzle • (n(i − 1) + 1, n(i − 1) + 2) • (n(i − 1) + 1, n(i − 1) + 3) • ... • (n(i − 1) + 1, n(i − 1) + n) = (n(i − 1) + 1, ni), was genau n − 1 Fehlständen entspricht. Es ist n − 1 gerade und somit folgt sgn(Li ) = 1. Auf Grund der Multiplikativität des Signums folgt für Ri : sgn(Ri ) = sgn(Ri ) · 1 = sgn(Ri ) sgn(Li ) = sgn(Ri Li ) = sgn(I) = 1 (2.2) Auch für Ui geben wir die Fehlstände an: • (i, i + 1), (i, i + 2), . . . , (i, i + n − 1) • (i + n, i + n + 1), (i + n, i + n + 2), . . . , (i + n, i + 2n − 1) • ... • (i+(n−2)n, i+(n−2)n+1), (i+(n−2)n, i+(n−2)n+2), . . . , (i+(n−2)n, i+(n−1)n−1), was je n − 1 Fehlstände sind (n − 1 mal), also insgesamt eine gerade Anzahl von Fehlständen. Hinzu kommen noch die Fehlstände des letzten Elements der i-ten Spalte: • (i, i + (n − 1)n), (i + 1, i + (n − 1)n), (i + 1, i + (n − 1)n), . . . , (i + (n − 1)n − 1, i + (n − 1)n), was i + (n − 1)n − 1 − i + 1 = n(n − 1) Fehlständen entspricht. Insgesamt ergibt sich (n − 1)2 + n(n − 1), also eine gerade Zahl, da n − 1 gerade ist. Für das Signum folgt sgn(Ui ) = 1 und wie in (2.2) folgt sgn(Di ) = 1. Bemerkung 2.1.4. Ist n ≥ 2 gerade, so folgt analog zu 2.1.3 für K ∈ {Li , Ri , Ui , Di |i = 1, . . . , n}: sgn(K) = −1 (2.3) Bemerkung 2.1.5. Man kann die Aussagen über das Signum natürlich auch viel kürzer beweisen. Jede Schiebeoperation K lässt sich als Komposition von n−1 Transpositionen darstellen, damit gilt sgn(K) = (−1)n−1 . Wir haben trotzdem den Weg über die Fehlstände gewählt, um ein Gespür dafür zu bekommen, welche Auswirkungen eine Schiebeoperation auf eine Permutation eigentlich hat. Nun können wir folgern, dass es für ungerade n unmöglich ist eine Transposition darzustellen. 12 2.1 Lösbarkeit Satz 2.1.6. Sei n ≥ 2 ungerade und T eine beliebige Transposition. Dann existiert für kein m ∈ N eine Komposition Km ◦ Km−1 ◦ . . . ◦ K1 für die gilt: T = Km ◦ Km−1 ◦ . . . ◦ K1 , Kj ∈ {Li , Ri , Ui , Di |i = 1, . . . , n} , j = 1, . . . , m. Beweis. Angenommen es gäbe zu einem m ∈ N solch eine Komposition, dann können wir diese Annahme unter Benutzung von 2.1.3 und der Tatsache, dass das Signum einer Transposition immer −1 ist, auf einen Widerspruch führen, denn es würde gelten: −1 = sgn(T ) = sgn(Km ◦ Km−1 ◦ . . . ◦ K1 ) = 1m = 1. (2.4) Es ist nun klar, dass wir mit den zulässigen Schiebeoperationen das Signum der Ausgangskonfiguration nicht ändern können, falls n ungerade ist. Schließlich stellt sich nun die Frage, ob man denn wenigstens jede Permutation des gleichen Signums erzeugen kann. Dass dies in der Tat der Fall ist, werden wir im Folgenden sehen. Satz 2.1.7. Sei n ≥ 2 ungerade und A eine Ausgangspermutation. Dann existiert für jede Permutation B mit sgn(B) = sgn(A) ein m ∈ N und eine Komposition Km ◦ Km−1 ◦ . . . ◦ K1 , Kj ∈ {Li , Ri , Ui , Di |i = 1, . . . , n} , j = 1, . . . , m mit B = Km ◦ Km−1 ◦ . . . ◦ K1 A. Beweis. Für den Beweis führen wir zunächst die folgenden Kompositionen ein: • C1 (k, l) := Rk ◦ Dl ◦ Lk ◦ Ul , A1 (k, l) := (C1 (k, l))−1 • C2 (k, l) := Dl ◦ Lk ◦ Ul ◦ Rk , A2 (k, l) := (C2 (k, l))−1 • C3 (k, l) := Lk ◦ Ul ◦ Rk ◦ Dl , A3 (k, l) := (C3 (k, l))−1 • C4 (k, l) := Ul ◦ Rk ◦ Dl ◦ Lk , A4 (k, l) := (C4 (k, l))−1 Anschaulich beschreiben diese Operationen eine Drehung dreier über Eck benachbarter Elemente, wobei sich das Eckelement zu Anfang in Zeile k und Spalte l befindet. Die Drehungen C sind im Uhrzeigersinn (clockwise) und die Drehungen A entgegen dem Uhrzeigersinn (anticlockwise). Des Weiteren benötigen wir noch die folgenden Kompositionen: • B1 (k, l) := C2 (k, l) ◦ C1 (k, l), B2 (k, l) := (B1 (k, l))−1 Die Operation B1 (k, l) verschiebt 3 in einer Zeile benachbarte Felder, nämlich das Feld in Zeile k und Spalte l, sowie dessen linken und rechten Nachbarn. Das mittlere Feld verschiebt sich ein Feld nach rechts und der linke Nachbar nimmt dessen Platz ein. Das rechte Feld rutscht auf den ursprünglichen Platz des linken Feldes. Operation B2 (k, l) kehrt diesen Vorgang genau um. 13 2 Das Puzzle Abbildung 2.3: Die Permutationen C1 (k, l) und A4 (k, l). Die soeben eingeführten Operationen können wir nun auf die Ausgangspermutation A anwenden, um das gewünschte Ergebnis B zu erhalten. Dazu gehen wir zeilenweise vor und zwar von links nach rechts. Wir nehmen das erste Feld aus B, also Zeile 1 und Spalte 1, und suchen dieses in der Permutation A. Nun können wir es leicht auf seine Position drehen, indem wir die Operationen Ci , Ai , i = 1, 2, 3, 4 benutzen. So gehen wir jetzt mit fast allen Feldern vor: Wir schieben ein Feld zuerst in die richtige Spalte und danach in die richtige Zeile. Dazu können wir uns zum Spaltenwechsel auf die Operationen C1 und A2 sowie für den Zeilenwechsel auf C4 beschränken. Befindet sich ein Feld bereits in der richtigen Spalte/Zeile, so entfällt der jeweilige Schritt. Auf diese Weise zerstören wir kein bereits von uns richtig positionieres Feld, es sei denn das zu schiebende Feld befindet sich gerade in der letzten Zeile. Will man hier ein Element in seine korrekte Spalte schieben, so kann es passieren, dass man durch die Drehoperationen die Positionen der ersten Zeile wieder zerstört. Dazu haben wir uns die Operationen Bi , i = 1, 2, 3, 4 eingeführt, welche die Positionen der Felder nur innerhalb einer Zeile verändern. Für den Wechsel der Zeile kann man dann wieder C4 benutzen, falls nötig. Nun kommt man an den Punkt, an dem man die 3 letzten Felder der letzten Zeile positionieren muss. Es ist hier nun egal welches man an seine richtige Position mittels B1 oder B2 schiebt, die 2 übriggebliebenen Felder befinden sich nun zwangsläufig an der richtigen Stelle. Angenommen die beiden Felder wären genau vertauscht und sei B 0 eben diese Permutation, die sich von B um genau eine Transposition unterscheidet. Dann gilt: − sgn(B) = sgn(B 0 ), 14 (2.5) 2.2 Das Puzzle als Graph Abbildung 2.4: Links die Permutationen C1 (k, l) und C2 (k, l) und rechts die resultierende Permutation B1 (k, l). was aber auf einen Widerspruch führt, denn es gilt ja B 0 = Km ◦ Km−1 ◦ . . . ◦ K1 A, Kj ∈ {Li , Ri , Ui , Di |i = 1, . . . , n} , j = 1, . . . , m für ein m ∈ N nach Definition der Ci , Ai , Bi , i = 1, 2, 3, 4. Wegen 2.1.3 folgt nun nämlich sgn(B 0 ) = 1m sgn(A) = sgn(A), (2.6) also der Widerspruch zur Annahme sgn(A) = sgn(B). Alle Felder befinden sich nun an ihrer richtigen Position und setzt man nun für Ci , Ai , Bi , i = 1, 2, 3, 4 die Definitionen ein, erhält man die Aussage. 2.2 Das Puzzle als Graph Wir können unser Puzzle auch als einen ungerichteten Graphen auffassen. Ein Graph G = (V, E) besteht aus einer Knotenmenge V und einer Kantenmenge E, wobei die Elemente von E ungeordnete Paare von Elementen aus V sind, also E ⊂ V × V . Für gegebenes n ≥ 2 bilden die Permutationen aus Sn2 die Knotenmenge. Eine Kante von einem Knoten x ∈ V nach y ∈ V existiert genau dann, wenn es eine Schiebeoperation σ gibt, für die x = σy gilt. Da σ −1 ebenfalls eine Schiebeoperation ist, gilt y = σ −1 x und wir können statt zwei gerichteter Kanten eine ungerichtete Kante benutzen. In diesem Falle schreibt man x ∼ y beziehungsweise y ∼ x und sagt x und y sind benachbart. Der Grad deg(x) eines Knotens x bezeichnet die Anzahl der Nachbarn von x. Ein Graph heißt d-regulär, wenn alle Knoten den Grad d besitzen. In unserem 15 2 Das Puzzle Abbildung 2.5: Beispiel: Tauschen der 7 an ihre Position in B. Spaltenwechsel durch A2 (2, 3) gefolgt von A2 (2, 2). Dann Zeilenwechsel durch C4 (2, 1). Als nächstes würde man die 13 mittels B1 oder B2 in die richtige Spalte schieben, um dann mit C4 die richtige Zeile zu erreichen. Fall gilt immer d = 4n, da wir auf jede Permutation die 4n verschiedenen Schiebeoperationen anwenden können. Eine Ausnahme bildet der Fall n = 2, dort gilt d = 4. Der Abstand d(x, y) zweier Knoten x, y ∈ V ist die Länge des kürzesten Weges von x nach y. Da unsere Kanten vorerst ungewichtet sind, bezeichnen wir mit Länge des Weges die Anzahl der Kanten. Speziell ist d(x, x) = 0, ∀x ∈ V und falls kein Weg von x nach y existiert, so setzt man d(x, y) = ∞. Wie wir bereits gesehen haben, kann dieser Fall auftreten und um dem aus dem Weg zu gehen, beschränken wir die Knotenmenge für ungerade n auf die geraden Permutationen. Das heißt für n ≥ 2 ist S 2 , n V := {x ∈ S n2 falls n gerade, : sgn(x) = 1} , (2.7) falls n ungerade. Zuletzt definieren wir den Durchmesser L eines Graphen G = (V, E) als den größten Abstand zweier Knoten: L := maxx,y∈V d(x, y). Da uns der Durchmesser später noch nützlich sein wird, 16 2.2 Das Puzzle als Graph werden wir zunächst Schranken für diesen berechnen. Es geht also um die Frage, wieviele Verschiebungen von Spalten und Zeilen wir maximal benötigen, um eine beliebige Permutation, beziehungsweise im Fall “n ungerade“ eine Permutation des gleichen Signums, zu erreichen. Wir wollen hierbei den kürzesten Weg betrachten, also diejenige Verknüpfung von Verschiebungen, die die wenigsten elementaren Schiebeoperationen benötigt. Die konstruktiven Beweise von 2.1.2 und 2.1.7 werden hierbei sehr nützlich sein, um eine obere Schranke anzugeben und sogar noch zu verbessern. In [AF94] findet sich ebenfalls eine einfache obere Schranke für d-reguläre Graphen, die wir der Vollständigkeit halber angeben. Satz 2.2.1. In einem d-regulären Graphen G = (V, E) gilt für den Durchmesser L≤3 |V | . d (2.8) Beweis. [AF94, Lemma 10]. Mit der Tatsache, dass |Sn2 | = n2 ! ist, liefert dieses Theorem folgende Abschätzung: 18, 2 L ≤ 3 n8n! , 3 n2 ! , 4n falls n = 2, falls n ≥ 3 ungerade (2.9) falls n ≥ 4 gerade Dieses wenig zufriedenstellende Ergebnis können wir unter Zuhilfenahme der vorherigen Betrachtungen erheblich verbessern. Satz 2.2.2. Sei n ≥ 2 gerade, dann ist L ≤ 10n4 − 15n3 − 5n2 + 15n − 5. (2.10) Für den Fall n = 2 folgt speziell L ≤ 7. Beweis. Seien A, B ∈ Sn2 zwei Permutationen, wobei A die Ausgangspermutation und B die zu erreichende Permutation sei. Wir suchen die Länge des kürzesten Weges von A nach B, also d(A, B) = min {m : ∃K1 , . . . , Km ∈ {Li , Ri , Ui , Di |i = 1, . . . , n} , B = Km ◦ . . . ◦ K1 ◦ A} (2.11) Wir wissen aus 2.1.2, dass wir für eine beliebige Vertauschung zweier benachbarter Felder maximal 5(n − 1) = 5n − 5 Schiebeoperationen benötigen. Für eine Vertauschung zweier beliebiger Felder können wir nun einfach benachbarte Felder nacheinander vertauschen. Auf Grund der 17 2 Das Puzzle Toruseigenschaft benötigen wir für eine beliebige Vertauschung maximal 2n − 1 benachbarte Vertauschungen (siehe Abb.). Da wir insgesamt n2 Felder an ihre Position tauschen müssen, erhalten wir noch einen Faktor n2 − 1, da das letzte Feld zwangsläufig an seiner richtigen Position ist. Letztendlich ergibt sich für die Anzahl der benötigten Schiebeoperationen d(A, B) ≤ (n2 − 1)(2n − 1)(5n − 5) = 10n4 − 15n3 − 5n2 + 15n − 5. (2.12) Wegen L = maxA,B∈Sn2 d(A, B) folgt die Behauptung, da die rechte Seite unabhängig von A, B ist. Im Fall n = 2 benötigen wir für eine benachbarte Vertauschung nur eine Schiebeoperation. Damit können wir die Felder der ersten Zeile mit maximal je 3 benachbarten Vertauschungen richtig positionieren. Die Felder der zweiten Zeile benötigen dann noch maximal eine Vertauschung, womit sich L ≤ (2 · 2 − 1) + (2 · 2 − 1) + 1 = 7 ergibt. Abbildung 2.6: Eine beliebige Transposition als Komposition von benachbarten Vertauschungen. Man sieht leicht ein, dass bei dieser Vorgehensweise das Optimum noch nicht erreicht ist. Beispielsweise benötigt man für die Vertauschung der letzten beiden Felder im ungünstigsten Falle nur 5n − 5 Operationen, da diese ja sowieso benachbart sind und nicht, wie in der Berechnung, (5n −5)(2n −1). Des Weiteren kann man die Anzahl der benötigten Operationen für eine benachbarte Vertauschung von 5n−5 auf 4n−3 reduzieren, indem man statt der (n−1)-fachen Ausführung der Permutation σ aus 2.1.2 eben jene nur einmal ausführt (was zur Vertauschung führt) und den Rest der Zeile beziehungsweise Spalte mit den Operationen aus 2.1.7 korrigiert. Es ergäbe sich für eine beliebige Vertauschung eine Anzahl von 5 + 8( n−2 2 ) = 4n − 3 Operationen. Die genannten Möglichkeiten werden hier nicht weiter ausgeführt, da sie im Vergleich zur folgendenen Berechnung nur eine minimale Verbesserung ergeben. Unter Benutzung der 18 2.2 Das Puzzle als Graph Konstruktion aus 2.1.7, die sich ohne Weiteres auf den allgemeinen Fall n ≥ 3 übertragen lässt, können wir die gefundene Schranke um einen Faktor n verbessern. Satz 2.2.3. Sei n ≥ 3 ungerade. Mit der Einschränkung (2.7) gilt für den Durchmesser L ≤ 12n3 − 12n2 − 24n + 24. (2.13) Für den Fall n ≥ 4 gerade“ kann man auf die Einschränkung verzichten und es gilt ” L ≤ 12n3 − 12n2 − 20n + 21. (2.14) Für n = 2 ist die Schranke aus 2.2.2 besser. Beweis. Sei n ≥ 3 ungerade und daher seien A, B ∈ Sn2 zwei Permutationen mit sgn(B) = sgn(A) = 1. Um von A nach B zu gelangen, zählen wir die Operationen wieder ab, nur dass wir diesmal die Konstruktion aus 2.1.7 benutzen. Wir müssen n2 − 2 Felder an die richtige Position schieben, die letzten 2 Felder sind dann automatisch richtig positioniert. Um ein Feld in die richtige Spalte zu schieben, müssen wir im ungünstigen Fall die Operationen B1 , B2 benutzen, welche je 8 elementare Schiebeoperationen benötigen, und zwar maximal (n − 1) mal. Zu beachten ist hierbei, dass wir die Toruseigenschaft nicht benutzen können, also nicht beliebig nach links und rechts tauschen können, da wir sonst eventuell bereits richtig positionierte Felder derselben Zeile verschieben würden. Aus demselben Grund benötigen wir nun auch maximal (n − 1) mal die Operation C2 , die je 4 Schiebeoperationen benötigt, um das Feld in die richtige Zeile zu schieben. Wir erkennen auch hier wieder ein geringes Optimierungspotenzial hinsichtlich der Berechnung, welches aber sehr fallspezifisch ist und uns maximal eine Verbesserung um eine geringe Konstante liefern würde. Pro Feld benötigen wir nun also höchstens 8(n − 1) + 4(n − 1) Schiebeoperationen und es ergibt sich d(A, B) ≤ (n2 − 2)(8(n − 1) + 4(n − 1)) = 12n3 − 12n2 − 24n + 24. (2.15) Ist nun n ≥ 4 gerade und A, B zwei beliebige Permutationen aus Sn2 , so funktioniert die Berechnung genauso, nur dass wir eventuell die letzten beiden Felder noch vertauschen müssen. Eine benachbarte Vertauschung kostet uns in der verbesserten Variante 4n − 3 Schiebeoperationen und so folgt d(A, B) ≤ 12n3 − 12n2 − 24n + 24 + 4n − 3 = 12n3 − 12n2 − 20n + 21. (2.16) Wie in 2.2.2 folgen die Aussagen für L. Nachdem wir nun betrachtet haben, wie man mit einfachen Methoden den Durchmesser des Graphen nach oben abschätzen kann und eine obere Schranke der Größenordnung O(n3 ) 19 2 Das Puzzle erhalten haben, werden wir nun durch 2 Methoden eine untere Schranke angeben und diese dann zumindest asymptotisch um einen konstanten Faktor verbessern. Des Weiteren haben wir noch etwas erkannt: Auf Grund der Tatsache, dass unser Vorgehen allgemein für n ≥ 2 gilt, kann selbiges für jeden Fall einzeln weiter optimiert werden. So ergibt eine vollständige Fallunterscheidung am Computer im Fall n = 2 den Durchmesser L = 4 respektive L = 8 im Fall n = 3. Das entsprechende Programm ist im Anhang aufgeführt. Wir führen nun zunächst eine Metrik auf den Permutationen ein. Für zwei Permutationen A, B ∈ Sn2 sei ρ(A, B) definiert als 2 ρ(A, B) := n X ρ1 (A(k), B(k)), (2.17) k=1 wobei ρ1 (A(k), B(k)) der Manhattan-Abstand der Felder auf dem Torus ist, genauer ist für zwei Felder i, j ∈ 1, . . . , n2 , i ≤ j ρ1 (i, j) := ρx (i, j) + ρy (i, j) (2.18) und ρx (i, j) := min(|(j − i) mod n|, n − |(j − i) mod n|), (2.19) ρy (i, j) := min(|((j − 1) div n) − ((i − 1) div n)|, n − |((j − 1) div n) − ((i − 1) div n)|). (2.20) Hierbei ist mod der Modulo-Operator und ÷ steht für die ganzzahlige Division. Ist i > j, so definiere ρ1 (i, j) := ρ1 (j, i). Wir sehen weiterhin, dass zwei Felder i, j in jeder Dimension maximal den Abstand n2 besitzen können, das heißt ρx (i, j) ≤ jnk 2 und ρy (i, j) ≤ jnk 2 . (2.21) Damit folgt ρ1 (i, j) ≤ 2 jnk und somit 2 j n k n3 , ρ(A, B) ≤ 2n2 = n2 (n − 1), 2 (2.22) n gerade (2.23) n ungerade . bnc Diese Schranke wird angenommen, zum Beispiel durch die Permutationen A = I, B = R1 2 ◦ bnc bnc bnc . . . ◦ Rn 2 ◦ D1 2 ◦ . . . ◦ Dn 2 , wie man sich leicht an der folgenden Abbildung verdeutlichen kann. 20 2.2 Das Puzzle als Graph Abbildung 2.7: Zwei Permutationen des 4 × 4-Puzzles. Jedes Feld hat ManhattanAbstand n. Satz 2.2.4. Für den Durchmesser gilt n2 , L≥ n(n − 1), n gerade (2.24) n ungerade . Beweis. Wir geben zwei Permutationen an und zeigen, dass der kürzeste Weg zwischen diesen bnc bnc mindestens die angegebene Länge hat. Dazu sei n ≥ 2 und A = I, B = R1 2 ◦ . . . ◦ Rn 2 ◦ bnc bnc D1 2 ◦ . . . ◦ Dn 2 . Wir wissen bereits, dass für diese Wahl von A und B gilt, dass n3 , ρ(A, B) = n2 (n − 1), n gerade (2.25) n ungerade . Für einen beliebigen Weg von A nach B, also nicht unbedingt den aus der Definition, betrachten wir die Änderung unseres neuen Abstandes. Führen wir eine beliebige Schiebeoperation K1 aus, so bewegen sich immer genau n Felder um je ein Feld in eine Richtung. Unsere verallgemeinerte Manhattan-Metrik kann sich also auch nur um maximal n ändern. Es gilt demnach ρ(K1 ◦ A, A) ≤ n. (2.26) Der Weg habe nun Länge L0 . Folgt man nun dem Weg bis zur Permutation B und benutzt die Dreiecksungleichung, so ergibt sich ρ(A, B) ≤ nL0 . (2.27) Einsetzen für ρ(A, B) und teilen durch n liefert die Aussage, dass jeder Weg von A nach B mindestens die angegebene Länge hat. Damit gilt das auch für den Durchmesser L des 21 2 Das Puzzle Graphen. Wie schon erwähnt, können wir diese Schranke zumindest asymptotisch noch leicht verbessern. Satz 2.2.5. Für n ≥ 3 gilt für den Durchmesser lim inf n→∞ L ≥ 1. 2n2 (2.28) Beweis. Wir befinden uns in irgendeinem Knoten des Graphen. In jedem Schritt können wir von jedem Knoten aus maximal d neue Knoten besuchen, da der Graph d-regulär ist. Um alle Knoten besucht zu haben muss man maximal L Schritte machen, daher gilt d0 + d1 + . . . + dL = L X dk = k=0 dL+1 − 1 ≥ |V |. d−1 (2.29) Für x > 2 ist ln(x − 1) > ln(x) − 1, also ln(x − 1) − ln(x) > −1. Es folgt für n ≥ 4 gerade und der Stirling’schen Formel für ln(n2 !) (siehe zum Beispiel [Kle06]): n2 !(4n − 1) + 1 n2 !(4n − 1) (4n)L+1 − 1 ≥ n2 ! ⇒ (4n)L ≥ ≥ 4n − 1 4n 4n (2.30) 2 ln( n !(4n−1) ) 4n ⇒L≥ ln(4n) n2 ln(n2 ) − n2 + ln(4n − 1) − ln(4n) ⇒L≥ ln(4n) 1 ln(n) − 2 −1 + . ⇒ L ≥ 2n2 ln(4n) ln(4n) (2.31) (2.32) (2.33) Für n → ∞ strebt der erste Bruch auf der rechten Seite monoton wachsend gegen 1 und der zweite gegen 0. Damit gilt für die Asymptotik: lim inf n→∞ L ≥ 1. 2n2 (2.34) Im Fall n ≥ 3 ungerade folgt L≥ n2 ln(n2 ) − n2 − ln(2) + ln(4n − 1) − ln(4n) ln(4n) ≥ 2n − 12 − ln(4n) 2 ln(n) ln(2) 2n2 + −1 , ln(4n) was für die Asymptotik aber keinen Unterschied macht. 22 (2.35) (2.36) 3 Markovketten und elektrische Netzwerke Ausgehend von dem Abschnitt über Graphen werden wir jetzt eine kurze Einführung zu Markovketten und elektrischen Netzwerken geben. Des Weiteren werden wir die Verbindungen zwischen diesen Begriffen herstellen und diese für unsere Fragestellungen später benutzen. 3.1 Markovketten Definition 3.1.1. Eine Markovkette mit Zustandsraum Z und Übergangsmatrix P ist ein stochastischer Prozess X = (Xt )t=0,1,2,... auf einem Wahrscheinlichkeitsraum (Ω, F, P), für den die Markoveigenschaft P[Xt+1 = y|Xt = x, Xt−1 = xt−1 , . . . , X0 = x0 ] = P[Xt+1 = y|Xt = x] = P (x, y) (3.1) für alle x0 , . . . , xt−1 ∈ Z, t ∈ N0 mit P[Xt = x, Xt−1 = xt−1 , . . . , X0 = x0 ] > 0 erfüllt ist. Das bedeutet, die bedingte Wahrscheinlichkeit von Zustand x nach y zu schreiten ist unabhängig von allen vorherigen Zuständen. Auf Grund dieser Eigenschaft kann man die Übergänge allein mit der |Z| × |Z|-Matrix P beschreiben. P ist stochastisch, das heißt alle Einträge sind nichtnegativ und für alle x ∈ Z gilt X P (x, y) = 1. (3.2) y∈Z Für t ≥ 0 sei µt die Verteilung von Xt : µt (x) = P[Xt = x] ∀x ∈ Z. (3.3) 23 3 Markovketten und elektrische Netzwerke Bedingt man auf die Vorgänger, so gilt für Xt+1 : µt+1 (y) = X P[Xt+1 = y, Xt = x] = x∈Z = X X P[Xt+1 = y|Xt = x]P[Xt = x] (3.4) x∈Z P (x, y)µt (x) ∀y ∈ Z. (3.5) x∈Z Fasst man µt als Zeilenvektor auf, so gilt µt+1 = µt P und Induktion liefert µt = µ0 P t für t ≥ 0. Ist die Startverteilung µ = µ0 gegeben, so indizieren wir die Operatoren für Wahrscheinlichkeit Pµ und Erwartung Eµ mit der jeweiligen Verteilung. Ist die Verteilung auf einen Zustand x ∈ Z konzentriert, also Dirac-verteilt, so schreiben wir einfach Px respektive Ex . Weiterhin folgt somit Px [Xt = y] = P t (x, y), (3.6) nämlich die Wahrscheinlichkeit in t Schritten aus Zustand x nach y zu gelangen. Die Einträge von P t heißen t-Schritt-Übergangswahrscheinlichkeiten. Eine Markovkette mit Übergangsmatrix P und Zustandsraum Z heißt irreduzibel, falls für je zwei Zustände x, y ∈ Z eine positive ganze Zahl t existiert, so dass P t (x, y) > 0 gilt. Anschaulich bedeutet diese Eigenschaft, dass man jeden Zustand von jedem Zustand aus mit positiver Wahrscheinlichkeit in endlich vielen Schritten erreichen kann. Bezeichnen wir nun für einen Zustand x mit T (x) := t ≥ 1 : P t (x, x) > 0 die Menge aller Zeiten, zu der eine Markovkette zum Zustand x zurückkehren kann. Der größte gemeinsame Teiler von T (x) heißt Periode des Zustandes x. Mit [LPW08, Lemma 1.6] folgt für irreduzible Markovketten, dass alle Zustände die selbe Periode haben. Daher werden wir irreduziblen Markovketten die Periode zuordnen, die alle ihre Zustände haben. Solch eine Markovkette nennen wir aperiodisch, falls die Periode 1 ist, sonst periodisch. Für unsere Zwecke ist es oft besser mit aperiodischen Markovketten zu arbeiten. Man kann eine periodische Markovkette so modifizieren, dass sie aperiodisch wird, indem man zum Beispiel die Übergangsmatrix P durch Q := P +I 2 ersetzt, wobei I die |Z|×|Z| -Einheitsmatrix ist. Dann gilt nämlich für alle x ∈ Z, dass Q(x, x) > 0 und somit 1 ∈ T (x). Allgemein nennen wir eine Markovkette mit Übergangsmatrix P lazy (“faul”), falls für alle x ∈ Z die Wahrscheinlichkeit im Zustand x zu verweilen größer als Null ist, also P (x, x) > 0. Eine Verteilung π auf Z, die die Gleichung π = πP erfüllt, heißt stationäre Verteilung. Hat die Markovkette in einem Schritt Verteilung π, so hat sie auch im nächsten Schritt die 24 3.1 Markovketten Verteilung π. Eine Markovkette mit Übergangsmatrix P und stationärer Verteilung π heißt reversibel, falls für alle x, y ∈ Z gilt, dass π(x)P (x, y) = π(y)P (y, x). Erfüllt irgendeine Verteilung π diese Eigenschaft, so ist diese stationär für P nach [LPW08, Proposition 1.19]. Die Markovkette heißt transitiv, falls für jedes Paar (x, y) ∈ Z × Z eine Bijektion φ = φ(x,y) : Z → Z existiert, so dass φ(x) = y und P (z, w) = P (φ(z), φ(w)) für alle z, w ∈ Z gilt. Anschaulich sieht die Markovkette überall gleich aus. Bemerkung 3.1.2. Soweit nicht anders gesagt, sei die σ-Algebra F immer die Potenzmenge von Ω, also F = P(Ω). Satz 3.1.3. Für jede irreduzible Markovkette mit Übergangsmatrix P existiert eine eindeutige stationäre Verteilung π. Beweis. [LPW08, Corollary 1.17]. Satz 3.1.4. Ist P die Übergangsmatrix einer transitiven Markovkette mit endlichem Zustandsraum Z, dann ist die Gleichverteilung auf Z stationär für P. Beweis. [LPW08, Proposition 2.16]. Definition 3.1.5. Der Totalvariationsabstand zwischen zwei Wahrscheinlichkeitsverteilungen µ und ν auf einem Zustandsraum Z ist definiert als ||µ − ν||T V := max |µ(A) − ν(A)|. (3.7) A⊂Z Bemerkung 3.1.6. Da das Maximum über alle Teilmengen eventuell umständlich zu berechnen ist, geben wir zwei weitere Identitäten an. Es gilt ||µ − ν||T V = 1X |µ(x) − ν(x)| = 2 x∈Z X |µ(x) − ν(x)| (3.8) x∈Z,µ(x)≥ν(x) nach [LPW08, Proposition 4.2, Remark 4.3]. Satz 3.1.7 (Konvergenztheorem). Eine Markovkette mit Übergangsmatrix P sei irreduzibel und aperiodisch. Die stationäre Verteilung auf dem Zustandsraum Z sei π. Bezeichne P t (x, ·) die Verteilung der Markovkette nach t Schritten bei Start in x. Dann existieren Konstanten α ∈ (0, 1) und C > 0, so dass max ||P t (x, ·) − π||T V ≤ Cαt . x∈Z (3.9) Beweis. [LPW08, Theorem 4.9]. 25 3 Markovketten und elektrische Netzwerke 3.2 Das Puzzle als Markovkette 3.2.1 Definition Wir erinnern uns noch einmal, wie wir unser Puzzle in Kapitel 2 als Graph darstellten. Diese Definition werden wir jetzt benutzen, um eine Markovkette zu erzeugen. Sei eine natürliche Zahl n ≥ 2 gegeben. Wir benötigen einen Zustandsraum Z und wählen treffenderweise Z = V , die Menge aller Permutationen von 1, 2, . . . , n2 respektive aller geraden Permutationen, falls n ungerade ist. Des Weiteren definieren wir die Übergangsmatrix wie folgt: P(x,y) := 1, x∼y 0, sonst, d (3.10) wobei d der Grad aller Knoten war. Die Markovkette sucht sich also gleichverteilt eine erlaubte Schiebeoperation aus und wendet diese auf die aktuelle Permutation an. Dies entspricht einer einfachen Irrfahrt auf dem ursprünglichen Graphen G = (V, E). Des Weiteren definieren wir uns eine lazy Version der Markovkette, indem wir die Übergangsmatrix wie schon bekannt modifizieren: PL := P +I 2 , wobei I wieder die |Z| × |Z|-Einheitsmatrix ist. Soweit nicht anders geschrieben, werden wir ab jetzt immer diese Markovkette in der lazy Version betrachten. 3.2.2 Eigenschaften Irreduzibilität Die Markovkette ist irreduzibel in beiden Versionen, denn nach Kapitel 2 existiert für zwei Zustände x, y ∈ Z eine Folge von m zulässigen Schiebeoperationen für ein m ≥ 1. Da in jedem Zustand jede Schiebeoperation mit Wahrscheinlichkeit 1 d ausgewählt wird, gilt P m (x, y) ≥ ( d1 )m > 0. In der lazy Variante wird jede Schiebeoperation mit Wahrscheinlichkeit und somit gilt PLm (x, y) ≥ 1 m ( 2d ) 1 2d gewählt > 0. Wir sehen: Irreduzibilität ist genau der Grund, warum wir den Zustandsraum einschränken mussten. Periodizität Da wir schon wissen, dass die lazy Version der Markovkette aperiodisch ist, betrachten wir nur die normale Version. Sei n gerade. Wir sahen in Kapitel 2, dass sich das Signum des Zustandes mit jeder Operation ändert. Die Zeiten, in der die Markovkette zu einem Zustand x zurückkehrt, müssen also Vielfache von 2 sein. Damit steht fest, dass für den größten gemeinsamen Teiler gcd von T (x) gilt: gcd(T (x)) ≥ 2. Die Markovkette kann also nicht aperiodisch sein. Dies ist der Grund, warum wir die lazy Version betrachten. Für ungerade n ist die Markovkette in der Tat aperiodisch. Es gilt nämlich n ∈ T (x), indem man einfach n-mal die gleiche Operation 26 3.3 Elektrische Netzwerke anwendet. Andererseits ist auch n + 2 und damit jede ungerade Zahl, die größer oder gleich n ist, ein Element von T (x), denn man kann nach den n gleichen Operationen eine beliebige Operation und ihre Inverse anwenden und landet wieder bei x. Damit ist gcd(T (x)) = 1 für alle x ∈ Z. Transitivität Irrfahrten auf Gruppen sind nach [LPW08, Abschnitt 2.6.2] immer transitiv. So auch in unserem Fall, wähle einfach φ(x,y) (g) := gx−1 y. Stationäre Verteilung Nach 3.1.3 existiert eine eindeutige stationäre Verteilung π und nach 3.1.4 ist diese die Gleichverteilung auf Z. Reversibilität Reversibilität folgt sofort aus den Tatsachen, dass die stationäre Verteilung die Gleichverteilung ist und P (x, y) = P (y, x) gilt, da x ∼ y ⇔ y ∼ x. Zusammenfassung Wir halten fest: Die Markovkette mit Zustandsraum Z und Übergangsmatrix PL ist irreduzibel, aperiodisch, transitiv und reversibel. Sie besitzt die Gleichverteilung auf Z als ihre eindeutige stationäre Verteilung. Nach dem Konvergenztheorem konvergiert die Verteilung der Markovkette gegen die stationäre Verteilung in Totalvariation. 3.3 Elektrische Netzwerke Wir werden nun elektrische Netzwerke einführen und zeigen, dass man selbige für eine andere Betrachtungsweise für reversible Markovketten heranziehen kann. Diese Herangehensweise ist nützlich, da man so auch physikalische Gesetze anwenden kann. Wir greifen uns hier die für uns in Frage kommenden Abschnitte aus [LPW08, Kapitel 9] heraus. 3.3.1 Definitionen Ein Netzwerk ist ein endlicher ungerichteter zusammenhängender Graph G = (V, E) mit Knotenmenge V und Kantenmenge E. Zusammenhängend bedeutet in diesem Fall, dass zwischen je 2 Knoten x, y ∈ V ein Weg mit Kanten aus E existiert. Jeder Kante e ∈ E ist ein nichtnegativer Wert c(e) zugeordnet, der sogenannte elektrische Leitwert (auch Konduktanz). Für 27 3 Markovketten und elektrische Netzwerke eine Kante {x, y} ∈ E schreiben wir c(x, y) statt c({x, y}). Da der Graph ungerichtet ist, gilt offensichtlich c(x, y) = c(y, x). Das Reziproke des elektrischen Leitwerts ist der elektrische Widerstand r(e) = 1 c(e) . Solch ein Netzwerk (G, {c(e)}) wird also charakterisiert durch den Graphen G und die Kantengewichte {c(e), e ∈ E}. Betrachtet man jetzt die zu dem Netzwerk assoziierte Markovkette mit Zustandsraum Z = V P und Übergangsmatrix P (x, y) := c(x,y) y:y∼x c(x, y), so erhält man eine gec(x) , wobei c(x) := wichtete Irrfahrt auf G mit den Kantengewichten {c(e), e ∈ E}. Definiert man jetzt cG := P c(x) x∈V c(x) und π(x) := cG , so ist die Markovkette reversibel bezüglich der Verteilung π: π(x)P (x, y) = c(y, x) c(y) c(y, x) c(x) c(x, y) c(x, y) = = = = π(y)P (y, x). cG c(x) cG cG cG c(y) (3.11) Die Verteilung π ist stationär für P , siehe [LPW08, Proposition 1.19]. Außerdem folgt cG = P P x∈V y∼x c(x, y). Ist der Graph kreisfrei, das heißt es existieren keine Kanten von einem P Knoten zu sich selbst, dann gilt wegen c(x, y) = c(y, x), dass cG = 2 e∈E c(e). Somit ist unsere Markovkette in der normalen Version (nicht lazy) in der Tat eine einfache gewichtete Irrfahrt auf einem Netzwerk, indem man die Kantengewichte auf 1 setzt. Allgemeiner ist sogar jede reversible Markovkette eine gewichtete Irrfahrt auf einem Netzwerk, siehe dazu [LPW08, Kapitel 9.1]. Ein Netzwerk heißt transitiv, falls für je zwei Knoten x, y ∈ V eine Permutation ψ = ψx,y : V → V mit ψx,y (x) = y und c(ψx,y (u), ψx,y (v)) = c(u, v) für alle u, v ∈ V existiert. Tatsächlich ist jede transitive Markovkette ein transitives Netzwerk, indem man einfach ψ = φ wählt und c(x, y) = P (x, y) setzt. Genauso gut kann man ein transitives Netzwerk auf eine transitive Markovkette zurückführen, indem man die einfache Irrfahrt auf dem Netzwerk betrachtet und φ = ψ wählt. Dann gilt nämlich c(φx,y (u), φx,y (v)) c(ψx,y (u), ψx,y (v)) = c(φx,y (u)) c(ψx,y (u)) c(u, v) =P w:ψx,y (w)∼ψx,y (u) c(ψx,y (u), ψx,y (w)) P (φx,y (u), φx,y (v)) = c(u, v) c(u, v) = = P (u, v) c(u) w:w∼u c(u, w) =P (3.12) (3.13) (3.14) und damit Transitivität. Eine Funktion h : Z → R heißt harmonisch für P am Knoten x, wenn h(x) = X P (x, y)h(y). (3.15) y∈Z Da in unserem Fall P (x, y) = 0 gilt, falls x und y keine Nachbarn sind, ist h(x) nun ein gewichtetes Mittel der Werte von h auf den Nachbarknoten beziehungsweise im Falle der einfachen 28 3.3 Elektrische Netzwerke Irrfahrt einfach der Durchschnitt. Fassen wir nun P (x, y) als normierten Leitwert auf, führt uns das direkt auf die elektrische Spannung. In einem Netzwerk (G, {c(e)}) identifizieren wir zwei Knoten a und z, die Quelle und die Senke. Eine Funktion W , die auf V \ {a, z} harmonisch ist, nennen wir elektrische Spannung. Die Spannung ist also ein gewichtetes Mittel der Spannungen der Nachbarknoten, ein hoher Leitwert bedeutet einen niedrigen Widerstand, also einen größeren anteiligen Einfluss der Spannung des jeweiligen Nachbarknotens. [LPW08, Proposition 9.1] garantiert uns, dass die Spannung aller Knoten bereits durch die Spannung an Quelle und Senke eindeutig gegeben ist. Eine wichtige Größe fehlt uns noch, der elektrische Stromfluss. Wir gehen hier von Gleichstrom aus und da dieser in eine Richtung fließt, werden wir diesen auf gerichteten Kanten definieren. Eine gerichtete Kante ist ein geordnetes Paar → Ein Fluss θ ist eine antisymmetrische Funktion auf diezweier Knoten (x, y), notiert mit − xy. → = −θ(− → Für einen Fluss θ definiert man die sen gerichteten Kanten, das heißt also θ(− xy) yx). Divergenz div1 von θ bei x durch div 1 θ(x) := X → θ(− xy). (3.16) y:y∼x Der Operator wird hier mit 1 indiziert, um ihn von der ganzzahligen Division zu unterschei- den. Ist der Fluss nun der elektrische Strom, so gibt die Divergenz an, ob und wieviel Strom von einem Knoten weg (Quelle) oder zu ihm hin (Senke) fließt. Ein Fluss von a nach z ist nun ein Fluss, für den das 1. Kirchhoffsche Gesetz gilt: div1 θ(x) = 0 für x ∈ V \ {a, z} und div1 θ(a) ≥ 0. Anschaulich ist also in jedem Knoten außer Quelle und Senke der eingehende Strom gleich dem ausgehenden Strom und von der Quelle fließt auf jeden Fall nicht weniger Strom weg, als eingeht. Weiterhin definieren wir die Stärke eines Flusses von a nach z durch ||θ|| := div1 θ(a). Für die Konsistenz seien Widerstand beziehungsweise Leitwert ebenfalls auf → = c(− → = c(x, y) und r(− → = r(− → = r(x, y). Für eigerichteten Kanten definiert, also c(− xy) yx) xy) yx) ne gegebene Spannung W auf einem Netzwerk sei jetzt der elektrische Stromfluss I definiert durch → := I(− xy) W (x) − W (y) → r(− xy) (3.17) und dann bezeichnet ||I|| die elektrische Stromstärke. Diese Definition findet ihre Berechtigung im Ohmschen Gesetz. Es besagt, dass (bei konstanter Temperatur) Spannungsdifferenz und Stromfluss direkt proportional zueinander sind. Der effektive Widerstand zwischen den Knoten a und z ist letztlich definiert durch R(a ↔ z) := W (a) − W (z) ||I|| (3.18) 29 3 Markovketten und elektrische Netzwerke und analog der effektive Leitwert durch C(a ↔ z) := 1 R(a↔z) . Ersetzt man das gesamte Netz- werk durch zwei Knoten und eine Kante und legt die gleiche Spannung an, so erhält man den gleichen Widerstand, was die Notation erklärt. Wir wollen nun noch wichtige Eigenschaften des effektiven Widerstandes in einem Satz festhalten. Satz 3.3.1. Der effektive Widerstand erfüllt die Dreiecksungleichung. Sind a, b, z Knoten in einem Netzwerk, so gilt R(a ↔ z) ≤ R(a ↔ b) + R(b ↔ z). (3.19) Des Weiteren führt das Hinzufügen von Kanten zum Netzwerk nie zu einer Erhöhung des effektiven Widerstandes. Der Widerstand wird höchstens kleiner. Für zwei benachbarte Knoten p, q ist der effektive Widerstand gleich dem Widerstand. Beweis. [LPW08, Corollary 10.8, Corollary 9.13]. 3.4 Irrfahrten auf Gruppen Wir wollen nun noch kurz einen Spezialfall einführen und fassen dazu ein paar Aspekte aus [LPW08, 2.6 Random Walks on Groups, 8.1 The Symmetric Group ] zusammen. Bildet der Zustandsraum einer Markovkette bezüglich einer Verknüpfung ◦ eine Gruppe, so spricht man von Irrfahrten auf Gruppen. Es ist bekannt, dass sowohl die Menge der Permutationen (auch Symmetrische Gruppe), als auch die Teilmenge der geraden Permutationen (Alternierende Gruppe) bezüglich Hintereinanderausführung eine Gruppe bilden. Eine Wahrscheinlichkeitsverteilung µ auf einer Gruppe G (auch Inkrementverteilung) liefert eine Übergangsmatrix durch P (x, y) := µ(y ◦ x−1 ) für x, y ∈ G. Erzeugt der Träger von µ die gesamte Gruppe, so ist die Irrfahrt irreduzibel. Gilt außerdem µ(Id) > 0, so ist sie aperiodisch. Weiterhin ist die Gleichverteilung auf G stationär. Eine Verteilung µ auf G heißt symmetrisch, falls für alle g ∈ G gilt, dass µ(g) = µ(g −1 ). In diesem Fall ist die Irrfahrt reversibel. Außerdem ist jede Irrfahrt auf einer Gruppe transitiv. 30 4 Stoppzeiten In diesem Kapitel kümmern wir uns um spezielle Stoppzeiten unserer Markovkette und werden Schranken für die Erwartungswerte finden. Einige Ergebnisse werden uns als Grundlage für das Kapitel über die Mischzeit dienen. Die betrachtete Markovkette in diesem und dem nächsten Kapitel sei die bereits bekannte Irrfahrt X = (Xt )t=0,1,2,... auf der symmetrischen Gruppe Z = Sn2 beziehungsweise der zugehörigen alternierenden Gruppe, falls n ungerade ist. Wir werden n ≥ 3 annehmen und den Spezialfall n = 2 nur in ausgewählten Abschnitten betrachten. Jede Schiebeoperation wird mit Wahrscheinlichkeit mit Wahrscheinlichkeit 1 2. 1 8n angewendet, die identische Permutation Die so definierte Markovkette ist irreduzibel, aperiodisch, reversibel und transitiv. Die Gleichverteilung auf Z ist die eindeutige stationäre Verteilung gegen welche die Markovkette für jede Startverteilung von X0 in Totalvariation konvergiert. 4.1 Hitting Time, Target Time, Commute Time Definition 4.1.1. Für eine Markovkette X = (X0 , X1 , . . .) mit Zustandsraum Z und Übergangsmatrix P ist die Hitting Time (Eintreffzeit) für einen Zustand x ∈ Z definiert als τx := min {t ≥ 0 : Xt = x} . (4.1) Des Weiteren macht es im Fall X0 = x Sinn, sich die First Return Time (erste Rückkehrzeit) extra zu definieren: τx+ := min {t ≥ 1 : Xt = x} . (4.2) Die Zeit, die eine Markovkette im schlechtesten Fall benötigt, um von einem Zustand in einen anderen zu gelangen, wird ebenfalls eine Rolle spielen und daher definieren wir die WorstCase Hitting Time einer irreduziblen Markovkette: thit := max Ex (τy ). x,y∈Z (4.3) 31 4 Stoppzeiten Wir definieren außerdem für eine irreduzible Markovkette mit stationärer Verteilung π die target time: t := X Ea (τx )π(x). (4.4) x∈Z Dies können wir tun, da dieser Wert nicht von a ∈ Z abhängt [LPW08, Lemma 10.1]. Weiterhin brauchen wir die Zeit, die eine in einem Zustand a gestartete Markovkette benötigt, um in einen Zustand b zu gelangen und wieder zurück nach a. Dies ist die sogenannte Commute Time (Pendelzeit): τa,b := min {t ≥ τb : Xt = a} (4.5) mit X0 = a. Wir werden uns nun ein paar Beziehungen zwischen diesen Stoppzeiten ansehen. Satz 4.1.2. Für eine irreduzible Markovkette mit Übergangsmatrix P , Zustandsraum Z und stationärer Verteilung π gilt π(x) > 0 für alle x ∈ Z und Ex (τx+ ) = 1 . π(x) (4.6) Beweis. [LPW08, Proposition 1.14]. Satz 4.1.3. Für eine irreduzible Markovkette mit Zustandsraum Z und stationärer Verteilung π gilt thit ≤ 2 max Eπ (τy ). (4.7) y∈Z Ist die Markovkette transitiv, dann gilt für alle y ∈ Z t = Eπ (τy ) (4.8) thit ≤ 2t (4.9) und dann folgt Beweis. [LPW08, Lemma 10.2, Corollary 10.3]. Bemerkung 4.1.4. Ist im vorherigen Satz π die Gleichverteilung, gilt t = Eπ (τy ) = X x∈Z 32 Ex (τy )π(x) ≤ |Z| max Ex (τy ) x∈Z 1 = thit . |Z| (4.10) 4.1 Hitting Time, Target Time, Commute Time Satz 4.1.5 (Commute Time Identity). Sei (G, {c(e)}) ein Netzwerk mit Graph G = (V, E) und X = (Xt )t=0,1,2,... eine Irrfahrt auf diesem Netzwerk. Für beliebige a, b ∈ V sei τa,b deren Commute Time und dann gilt Ea (τa,b ) = Ea (τb ) + Eb (τa ) = cG R(a ↔ b). (4.11) Ist die Irrfahrt außerdem transitiv und irreduzibel, so gilt Ea (τb ) = Eb (τa ). (4.12) Beweis. [LPW08, Proposition 10.6, Proposition 10.9]. Betrachten wir nun wieder unsere Markovkette. Wir definieren die Leitwerte wie folgt c(x, y) := P (x, y) = 1 2, 1 4n , 1 8n , 0, x=y x 6= y, x ∼ y, n = 2 (4.13) x 6= y, x ∼ y, n ≥ 3 sonst . Es folgt daher c(x) = P (x, ·) = 1 für alle x ∈ V = Z und damit cG = |V | = |Z|. Die Markovkette entspricht nun einer Irrfahrt auf dem so definierten Netzwerk. Da die Markovkette transitiv und irreduzibel ist, folgt mit der Commute Time Identity, dass für zwei Knoten x, y ∈ V 2Ex (τy ) = cG R(x ↔ y). (4.14) Für die Worst-Case Hitting Time der Markovkette ist dann thit = max Ex (τy ) = max x,y x,y cG R(x ↔ y). 2 (4.15) Wir müssen nun R(x ↔ y) abschätzen. Dazu beschränken wir uns zunächst auf den kürzesten Weg (also mit den wenigsten Kanten) von x nach y. Die Anzahl der Kanten des Weges ist beschränkt durch den Durchmesser L. Außerdem enthält solch ein Weg keine Kreise. Der Widerstand auf allen Kanten des Weges ist gleich, sei dieser r. Wegen 3.3.1 können wir nun folgende Abschätzung treffen: 4nL, R(x ↔ y) ≤ Lr = 8nL, x 6= y, x ∼ y, n = 2 (4.16) x 6= y, x ∼ y, n ≥ 3, 33 4 Stoppzeiten da der Widerstand der Kehrwert des Leitwertes war. Insgesamt ist thit 4! n=2 2 4n · 4, cG Lr 2 ≤ n4 ! (8n)(12n3 − 12n2 − 24n + 24), n ≥ 3 ungerade ≤ 2 n2 ! (8n)(12n3 − 12n2 − 20n + 21), n ≥ 4 gerade 2 n=2 384, = n2 !(24n4 − 24n3 − 48n2 + 48n), n ≥ 3 ungerade n2 !(48n4 − 48n3 − 80n2 + 84n), n ≥ 4 gerade. (4.17) (4.18) Mit der gefundenen Formel für thit kann man auch eine einfache untere Schranke finden, indem man den effektiven Widerstand nach unten abschätzt. Eine nützliche Methode dies zu tun liefert eine Technik nach Nash-Williams. Seien dazu a, z zwei Knoten in einem Netzwerk und Π eine Menge von Kanten dieses Netzwerkes und zwar so, dass jeder Weg von a nach z mindestens eine Kante aus Π benutzt. Solch ein Π heißt auch edge-cutset (Kantenschnittmenge). Satz 4.1.6 (Nash-Williams-Ungleichung). Sind {Πk } disjunkte Kantenschnittmengen bezüglich zweier Knoten a, z, dann gilt −1 R(a ↔ z) ≥ X X k c(e) . (4.19) e∈Πk Beweis. [LPW08, Proposition 9.15]. Seien nun a, z Knoten im Graph mit Abstand L, also maximalem Abstand. Es ist L ≥ 2. Sei Π1 die Menge aller Kanten ausgehend von a ohne die Kante die zu a selbst führt und Π2 die Menge der Kanten ausgehend von z ohne die Kante zu z. Diese Mengen sind dann offensichtlich disjunkt und jeder Weg von a nach z enthält mindestens eine Kante in jeder dieser Mengen. P P Dann gilt mit der Nash-Williams-Ungleichung wegen e∈Π1 c(e) = e∈Π2 c(e) = 21 : R(a ↔ z) ≥ 4. (4.20) Damit folgt für die Hitting Time thit 34 2n2 !, cG 4 = max R(x ↔ y) ≥ cG = 2|Z| = x,y 2 n2 !, 2 n ≥ 2 gerade n ≥ 3 ungerade. (4.21) 4.2 Cover Time 4.2 Cover Time Die Cover Time (Überdeckungszeit) einer Markovkette X ist die Zeit, die die Markovkette benötigt, um alle Zustände des Zustandsraumes Z mindestens einmal besucht zu haben. Die Matthews-Methode liefert eine gute Technik um diese Cover Time mittels der Hitting Time abzuschätzen. Formal ist die Cover Time eine Stoppzeit τcov := min {t : ∀y ∈ Z ∃s ≤ t : Xs = y} . (4.22) Da diese Zeit auch vom gewählten Startzustand abhängen kann, definieren wir uns die deterministische Cover Time als den Erwartungswert der Cover Time gestartet im schlechtesten Startzustand tcov := max Ex τcov . x∈Z (4.23) Der Zusammenhang zwischen Cover Time und Hitting Time ist klar. Je länger die Markovkette braucht, um zwischen einzelnen Zuständen zu wandern, desto länger benötigt sie, um alle Zustände besucht zu haben. Sind alle Zustände besucht, so hat die Markovkette auf jeden Fall auch einen festen Zustand y ∈ Z besucht, daher gilt immer τcov ≥ τy . Seien x, y die Zustände, für die die Hitting Time ihr Maximum annimmt, dann lässt sich sofort eine untere Schranke für die Cover Time angeben: tcov = max Ew τcov ≥ Ex τcov ≥ Ex τy = thit . w∈Z (4.24) Diese Schranke ist sehr einfach und benutzt zum Beispiel nicht die Größe des Zustandsraumes. Die Matthews-Methode verbessert den Zusammenhang diesbezüglich erheblich. Man nutzt dabei aus, dass die Reihenfolge, in der alle Zustände besucht werden, sehr zufällig sein kann (und auch ist). Man wählt gleichverteilt eine Permutation σ der Zustände aus Z und prüft nun in jedem Zeitpunkt, ob die ersten k Zustände aus σ schon besucht wurden. Sei Tk der Zeitpunkt, zu dem die ersten k Zustände aus σ besucht wurden. Dann ist T|Z| die Cover Time. Man betrachtet jetzt für alle 1 ≤ k ≤ |Z| die Erwartungswerte der Differenzen Tk − Tk−1 . Die Linearität des Erwartungswerts liefert dann eine Abschätzung der Cover Time nach oben in Abhängigkeit von der Hitting Time. Eine ähnliche und unwesentlich kompliziertere Vorgehensweise liefert eine untere Schranke. Es folgen zwei überraschend einfache Beziehungen für die Cover Time. Satz 4.2.1. Sei X eine irreduzible Markovkette auf dem Zustandsraum Z mit |Z| Zuständen, 35 4 Stoppzeiten dann ist tcov 1 1 1 . ≤ thit 1 + + + . . . + 2 3 |Z| (4.25) Beweis. [LPW08, Theorem 11.2]. Satz 4.2.2. Sei A ⊂ Z und tA min := mina,b∈A,a6=b Ea τb . Dann gilt tcov ≥ max tA min A⊂Z 1 1 1 . 1 + + + ... + 2 3 |A| − 1 (4.26) Beweis. [LPW08, Proposition 11.4]. Bemerkung 4.2.3. In unserem Fall ist |Z| ≥ 24 für alle n ≥ 2 und daher 1 1 1 ≤ ln |Z| + 1. ln |Z| ≤ 1 + + + . . . + 2 3 |Z| (4.27) Es folgt für die Cover Time tcov t (ln n2 ! + 1), n ≥ 2 gerade hit ≤ thit (ln |Z| + 1) = t (ln n2 ! − ln 2 + 1), n ≥ 3 ungerade. hit (4.28) Bemerkung 4.2.4. Für große n ist mit der Stirling’schen Formel ln(n2 !) ≈ 2n2 ln n − n2 . (4.29) Für eine gute untere Schranke müssen wir nun ein A ⊂ Z so wählen, dass tA min möglichst groß, jedoch |A| dabei nicht zu klein wird. Wir wissen, dass Ea (τb ) = cG 2 R(a ↔ b) gilt. Wählen wir nun A = Z und wird dabei der effektive Widerstand nicht zu klein, so bekommen wir eine gute untere Schranke. Sei also A = Z, dann ist klar, dass das Minimum für Ea (τb ) für zwei benachbarte Knoten a, b angenommen wird. In diesem Fall sei Π die Menge aller Kanten ausgehend von a außer die Kante zum Knoten a selbst. Jeder Weg von a nach b benutzt nun mindestens eine Kante aus Π. Die Nash-Williams-Ungleichung liefert daher R(a ↔ b) ≥ 2. (4.30) Dadurch, dass jede Wahl von A eine untere Schranke liefert, erhalten wir eine Abschätzung 36 4.2 Cover Time für die Cover Time: tcov 1 1 cG 1 1 + + + ... + ≥ cG ln(|Z| − 1) ≥2 2 2 3 |Z| − 1 n2 ! ln(n2 ! − 1), n ≥ 2 gerade = n2 ! ln( n2 ! − 1), n ≥ 3 ungerade. 2 (4.31) (4.32) 2 Der Unterschied zwischen unterer und oberer Schranke befindet sich also gerade einmal im Bereich O(n4 ). 37 5 Mixing Time Ziel dieses Kapitels ist es, obere und untere Schranken für die Mixing Time der Markovkette zu finden. Da der Fall n = 2 eine Art Sonderfall ist, werden wir in diesem Kapitel, so weit nicht anders ausgezeichnet, n ≥ 3 annehmen. So haben wir immer 4n Schiebeoperationen. Wir können die Markovkette als eine Art Mischverfahren eines Kartendecks interpretieren. Doch wann wollen wir die Markovkette als gut gemischt betrachten? Es ist naheliegend, dass dies der Fall ist, wenn der Abstand der aktuellen Verteilung klein zur stationären Verteilung der Markovkette ist. Als Abstandsmaß wird uns die Totalvariation dienen. Gelegentlich werden auch andere Stoppzeiten, wie etwa jene aus dem vorherigen Kapitel, unter dem Oberbegriff Mixing Times geführt. Dieses Kapitel widmet sich jedoch einzig und allein der Mixing Time, der echten Mischzeit. Dazu folgen zuerst notwendige Definitionen. Standardmäßig sei die betrachtete Markovkette wieder die lazy Variante des zufälligen Puzzles. Definition 5.0.5. Für eine Markovkette mit Zustandsraum Z, Übergangsmatrix P und stationärer Verteilung π sei d(t) := max ||P t (x, ·) − π||T V , x∈Z (5.1) also der maximale Totalvariationsabstand der in x gestarteten Markovkette zur stationären Verteilung nach t Schritten. So kann man auch den maximalen Abstand zweier Markovketten mit Übergangsmatrix P nach t Schritten definieren: d(t) := max ||P t (x, ·) − P t (y, ·)||T V . x,y∈Z (5.2) Bemerkung 5.0.6. Es gilt d(t) ≤ d(t) ≤ 2d(t). Beweis. [LPW08, Lemma 4.11]. In der folgenden Definition werden wir nun festlegen, wann wir eine Markovkette als gemischt ansehen. Definition 5.0.7. Für ein ≥ 0 sei die Mixing Time (Mischzeit) tmix () := min {t : d(t) ≤ } . (5.3) 39 5 Mixing Time Wir wollen die Markovkette gemischt nennen, wenn der Totalvariationsabstand nicht größer als 1 4 ist, also definieren wir tmix 1 . := tmix 4 (5.4) 5.1 Untere Schranken 5.1.1 Bottleneck Ratio Nutzen aus der Geometrie eines Zustandsraumes einer Markovkette können wir mit den sogenannten Bottlenecks (Engpässe, wörtlich: Flaschenhälse) ziehen. Der Zustandsraum kann durch einen Engpass verbunden sein, wenn zum Beispiel nur wenige Kanten von einem Teil in den anderen führen oder die Wahrscheinlichkeiten auf den verbindenden Kanten sehr gering sind. Befindet sich die Markovkette in einem Teil des Zustandsraumes, so ist es weniger wahrscheinlich, dass sie den anderen Teil erreicht und somit dauert auch das Mischen länger. Diese Eigenschaft liefert uns eine untere Schranke für die Mixing Time. Für eine irreduzible und aperiodische Markovkette mit Übergangsmatrix P , Zustandsraum Z und stationärer Verteilung π definiert man das Kantenmaß Q wie folgt Q(x, y) := π(x)P (x, y), X Q(A, B) := Q(x, y) (5.5) (5.6) x∈A,y∈B für x, y ∈ Z beziehungsweise A, B ⊂ Z. Q(A, B) liefert die Wahrscheinlichkeit in einem Schritt von A nach B zu gelangen, wenn man mit der stationären Verteilung startet. Für eine Teilmenge S ⊂ Z sei S c = Z\S ihr Komplement und die Bottleneck Ratio (Engpassverhältnis, auch Cheeger-Konstante) von S sei Φ(S) := Q(S, S c ) . π(S) (5.7) Die Bottleneck Ratio der Markovkette ist Φ∗ := min S:π(S)≤ 21 Φ(S). (5.8) Satz 5.1.1. Ist Φ∗ die Bottleneck Ratio einer irreduziblen, aperiodischen Markovkette, dann gilt für die Mixing Time tmix ≥ 40 1 4Φ∗ (5.9) 5.1 Untere Schranken Beweis. [LPW08, Theorem 7.3]. Nach Definition ist Φ∗ ≤ Φ(S) für alle S ⊂ Z mit π(S) ≤ 21 . Damit folgt tmix ≥ 1 4Φ(S) für all diese S. Dies werden wir nun auf unsere Markovkette anwenden. Wir definieren uns die Menge S wie folgt n j n ko S := σ ∈ Z : σ(1) ≤ n . 2 (5.10) Da nur die 1 eingeschränkt ist und alle anderen Elemente frei wählbar sind, folgt n n (n2 − 1)!, 2 |S| = n n (n2 −1)! , 2 da es für die 1 je n n 2 2 n gerade (5.11) n ungerade , Möglichkeiten gibt. Im Fall n ungerade bleibt uns für die Wahl der letzten 2 Felder je nur eine Möglichkeit, da die Permutation gerade sein muss. Veranschaulichen wir uns das auf dem n × n-Torus, ist S die Menge aller Permutationen, in welchen sich die 1 in einer Hälfte des Ringes befindet. Auf unserem Puzzlefeld würde sich die 1 demnach immer in der oberen Hälfte befinden. Da n auch ungerade sein kann, lassen wir eventuell die mittlere Zeile weg, um die Bedingung π(S) ≤ 1 2 zu erfüllen (daher das Abrunden). Abbildung 5.1: Die möglichen Positionen der 1 in einer Permutation der Menge S sind grau unterlegt, hier im Fall n = 5 und n = 6. Wir wollen nun Φ(S) ausrechnen. Wir wissen bereits, dass π die Gleichverteilung auf Z ist. 41 5 Mixing Time Es gilt Q(S, S c ) Φ(S) = = π(S) P x∈S P = = x∈S 1 |Z| P = P y∈S c |S| |Z| (5.12) P y∈S c π(x)P (x, y) |S| |Z| P x∈S x∈S Q(x, y) P y∈S c 1 |S| |Z| P y∈S c |S| (5.13) P (x, y) P (x, y) (5.14) . (5.15) Schauen wir uns den Zähler genauer an. Es wird über alle Kanten summiert, die ein Ende in S und ein Ende in S c haben. Die Menge bezeichnen wir als Rand ∂S von S. Für diese Kanten gilt P (x, y) = 1 8n (lazy!). Kanten von einem Knoten zu sich selbst werden nicht betrachtet, da für diese die Forderung nicht erfüllt ist. Wir suchen also alle Permutationen aus S, die durch Anwenden einer zulässigen Schiebeoperation zu einer Permutation aus S c werden. Für die Position der 1 gibt es 2n Möglichkeiten. Für die restlichen Felder verbleiben dann jeweils (n2 − 1)! Anordnungen. Abbildung 5.2: Die möglichen Positionen der 1 in einer Permutation der Menge S sind grau unterlegt, Positionen der 1 in einer Permutation im Rand ∂S von S sind dunkelgrau. Hier der Fall n = 10. Pro Permutation gibt es nur eine Operation, die die Permutation aus S nach S c verschiebt. Für den Rand ∂S gilt daher |∂S| = 2n(n2 − 1)! im Fall n gerade und |∂S| = 42 2n(n2 −1)! 2 im Fall 5.1 Untere Schranken n ungerade. Die Rechnung für Φ(S) vereinfacht sich zu Φ(S) = 2n(n2 − 1)! ∂S 1 . = = 8n|S| 8nn n2 (n2 − 1)! 4n n2 (5.16) Für die Mixing Time ergibt sich schließlich tmix 4n n2 1 ≥ = 4Φ(S) 4 n2 , n gerade 2 = n(n−1) , n ungerade . 2 (5.17) (5.18) 5.1.2 Durchmesser Eine einfache untere Schranke lässt sich mit Hilfe des Durchmessers angeben. Wir benutzen hier [LPW08, 7.1.2. Diameter bound], nur etwas ausführlicher. Für eine irreduzible aperiodische Markovkette mit Zustandsraum Z und Übergangsmatrix P sei ein Graph mit Knotenmenge Z gegeben, der alle Kanten {x, y} mit x, y ∈ Z enthält, für die P (x, y) + P (y, x) > 0 gilt. Der Durchmesser L der Markovkette sei der Durchmesser eben dieses Graphen. Für zwei Knoten x0 und y0 mit Abstand L sind dann nämlich P b L−1 c 2 (x0 , ·) und P b L−1 c 2 (y0 , ·) nur positiv auf disjunkten Teilmengen von Z. Angenommen ein z ∈ Z läge in beiden Mengen. Dann gäbe es L−1 einen Weg der Länge b L−1 2 c oder weniger von x0 nach z und einen Weg der Länge b 2 c oder weniger von y0 nach z. Insgesamt würde dann ein Weg der Länge 2b L−1 2 c ≤ L − 1 oder weniger von x0 nach y0 existieren, was aber ein Widerspruch ist, da die beiden Knoten Abstand L haben. Für t ≤ L−1 gilt damit 1 ≤ d(t) ≤ 1 und deshalb 2 d(t) = 1. (5.19) 1 d(t) ≥ . 2 (5.20) Mit d(t) ≤ 2d(t) ist dann Ist nun < 12 , so gilt nach Definition von tmix (), dass L−1 tmix () > . 2 (5.21) Mit der Fallunterscheidung, ob L gerade oder ungerade ist und der Tatsache, dass tmix () eine ganze Zahl ist, folgt tmix () ≥ L . 2 (5.22) 43 5 Mixing Time Unsere Markovkette war irreduzibel und aperiodisch. Fügen wir zu unserem ursprünglichen Graphen die Kanten {x, x} für alle x ∈ Z hinzu, so erfüllt dieser die Voraussetzungen, der Durchmesser ändert sich jedoch nicht. Es folgt daher unter Benutzung der beiden besseren Abschätzungen für den Durchmesser (2.2.4) tmix ≥ n2 , n gerade n(n−1) , n ungerade . 2 2 (5.23) beziehungsweise nach 2.2.5 lim inf n→∞ tmix ≥ 1. n2 (5.24) 5.1.3 Abzählen Diese Methode findet sich in [LPW08, 7.1.1. Counting Bound]. Der der Markovkette zu Grunde liegende Graph hatte Grad d, beziehungsweise in der lazy Version d + 1. Sei Ztx die Menge aller Zustände, die bei Start in x in t Schritten erreicht werden können. Da wir in jedem Schritt von jedem Zustand aus maximal d+1 neue Zustände erreichen können, gilt demnach |Ztx | ≤ (d+1)t . Wählen wir nun t so, dass (d + 1)t < (1 − )|Z| ist, dann kann die Markovkette nach t Schritten wegen ||P (x, ·) − π||T V ≥ P t (x, Ztx ) − π(Ztx ) ≥ 1 − (d + 1)t > |Z| (5.25) noch nicht gemischt sein. Umgekehrt bedeutet das für die Mischzeit (d + 1)t ≥ (1 − )|Z| ⇒ tmix () ≥ Im Fall n = 2 (d = 2n, |Z| = 24) ergibt sich tmix () ≥ ln((1 − )|Z|) . ln(d + 1) ln(24(1−)) ln(5) beziehungsweise tmix ≥ (5.26) ln(18) ln(5) . Für n ≥ 4 gerade liefert Einsetzen unter Benutzung der Abschätzung von Stirling: tmix () ≥ ln(1 − ) + ln(n2 !) ln(1 − ) + n2 ln(n2 ) − n2 ≥ . ln(4n + 1) ln(4n + 1) (5.27) Asymptotisch ist dann lim inf n→∞ 44 tmix ≥ 1. 2n2 (5.28) 5.1 Untere Schranken Für n ≥ 3 ungerade ergibt sich tmix () ≥ ln(1 − ) + n2 ln(n2 ) − n2 − ln(2) ln(1 − ) + ln(n2 !) − ln(2) ≥ ln(4n + 1) ln(4n + 1) (5.29) mit der gleichen Asymptotik. Dieses Verfahren lässt sich leicht modifizieren, indem wir uns die Markovkette genauer anschauen. Wir betrachten diesmal nur den Grad d, das heißt wir können in jedem Schritt nur maximal d neue Zustände erreichen. Sei ζtx diesmal die Menge aller Zustände, die man bei Start in x in t oder weniger Schritten erreichen kann. Alle Zustände, die man in weniger als t Schritten erreichen kann, kann man wegen der Laziness auch in genau t Schritten treffen. Pt k Es gilt nun also |ζtx | ≤ k=0 d und damit mit dem gleichen Argument wie oben und der geometrischen Summe t X k=0 dk ≥ (1 − )|Z| ⇔ dt+1 − 1 ≥ (1 − )|Z| d−1 (5.30) ⇒ tmix () ≥ ln((1 − )|Z|(d − 1) + 1) −1 ln(d) (5.31) ⇒ tmix () ≥ ) ln( (1−)|Z|(d−1)+1 d , ln(d) (5.32) was uns auch auf die gleiche Asymptotik führt (wie in 2.2.5). Beide Methoden benutzen nur die Laziness an sich, das heißt P (x, x) > 0 für alle x ∈ Z, nicht jedoch, wie hoch dieser Wert tatsächlich ist. 5.1.4 Projektion und Statistik Die folgende Methode benutzt die Idee der Projektion von Markovketten [LPW08, 2.3.1 Projection of chains] und deren Anwendung auf die Totalvariation [LPW08, 7.3 Distinguishing Statistics]. Satz 5.1.2. Sei X eine Markovkette mit Zustandsraum Z und Übergangsmatrix P. Sei ∼Z eine Äquivalenzrelation auf Z mit den Äquivalenzklassen Z # = {[x] : x ∈ Z}. Ferner gelte für P, dass P (x, [y]) = P (x0 , [y]) (5.33) für alle x ∼Z x0 . Dann ist [Xt ] eine Markovkette mit Zustandsraum Z # und Übergangsmatrix P # definiert durch P # ([x], [y]) := P (x, [y]). Wir betrachten unsere übliche Markovkette mit Zustandsraum Z und Übergangsmatrix P . 45 5 Mixing Time Wir definieren uns eine Äquivalenzrelation ∼Z wie folgt x ∼Z y ⇔ x(1) mod n = y(1) mod n, (5.34) das heißt zwei Permutationen sind äquivalent, wenn die 1 in der gleichen Spalte steht. Dementsprechend gibt es n Äquivalenzklassen. Das Ergebnis ist eine Markovkette X# auf den möglichen Positionen der 1, also auf dem Zustandsraum {1, 2, . . . , n} angeordnet auf dem Torus Zn1 in einer Dimension, dem sogenannten n-cycle (siehe zum Beispiel [LPW08, Example 1.4]). Ausgehend von den Wahrscheinlichkeiten der ursprünglichen Markovkette erhalten wir für die neue Markovkette andere Übergangswahrscheinlichkeiten. Die Wahrscheinlichkeit, dass sich die 1 in eine der zwei Richtungen bewegt ist demnach je 1 8n , also die Wahrscheinlichkeit der ur- sprünglichen Markovkette, dass genau die Zeile, welche die 1 enthält, in der richtigen Richtung ausgewählt wird. Die Wahrscheinlichkeit, dass sich die 1 überhaupt nicht bewegt, ergibt sich daher als 1 − 2 8n =1− 1 4n . Bilden wir die Zustände der ursprünglichen Markovkette auf die jeweiligen Äquivalenzklassen respektive Positionen der 1 ab, so nennt man dies Projektion. Allgemeiner ist in diesem Zusammenhang eine Projektion eine Abbildung f : Z → Λ auf eine endliche Menge Λ. Satz 5.1.3. Seien µ und ν Wahrscheinlichkeitsverteilungen auf Z und f : Z → Λ eine Projektion. Dann gilt ||µ − ν||T V ≥ ||µf −1 − νf −1 ||T V . (5.35) Beweis. Wie [LPW08, Lemma 7.9]. Für B ⊂ Λ ist f −1 (B) ⊂ Z. Daher gilt nach Definition der Totalvariation ||µf −1 − νf −1 ||T V = max |µf −1 (B) − νf −1 (B)| B⊂Λ (5.36) = max |µ(f −1 (B)) − ν(f −1 (B))| (5.37) ≤ max |µ(A) − ν(A)| (5.38) = ||µ − ν||T V (5.39) B⊂Λ A⊂Z Die stationäre Verteilung der ursprünglichen Markovkette auf Z war die Gleichverteilung π. Ist f nun die Abbildung auf die Positionen der 1, so ist πf −1 die stationäre Verteilung der neuen Markovkette. Da es für jede Position der 1 gleichviele Permutationen gibt, ist πf −1 die 46 5.1 Untere Schranken Gleichverteilung auf Λ = {1, 2, . . . , n}. Für Konsistenz wählen wir f genauer als f : x → (x( 1) − 1) mod n + 1, um die Spalten mit 1, 2, . . . , n durchzunummerieren (nur (5.40) mod n hätte die Nummerierung 1, 2, . . . , n − 1, 0 zur Folge). Für die einfache lazy Irrfahrt auf dem n-cycle gilt nach [LPW08, 7.4.1 Random walk on the cycle], dass tmix ≥ cn2 für eine Konstante c > 0. Wir schätzen unsere Irrfahrt auf dem n-cycle durch diesen ab, da sich unsere Irrfahrt seltener bewegt. Damit gilt auch für unsere Irrfahrt tmix ≥ cn2 . Wegen 5.1.3 muss nun auch die Mixing Time unserer ursprünglichen Markovkette mindestens cn2 sein. Wir haben hier eine sehr grobe Abschätzung getroffen. Anstatt sich mit Wahrscheinlichkeit 1 8n in jede Richtung zu bewegen, bewegt sich die einfache lazy symmetrische Irrfahrt mit Wahr- scheinlichkeit 1 4 in jede Richtung. Wir vermuten, dass der verlorene Faktor 1 2n entscheidend in die Mixing Time eingeht, daher werden wir die Irrfahrt auf dem n-cycle noch einmal genauer untersuchen. Seien dazu Yi , i = 1, 2, . . . unabhängige identisch verteilte Zufallsvariablen mit Verteilung P[Y1 = 1] = P[Y1 = −1] = 1 8n 2 und P[Y1 = 0] = 1 − 8n . Diese Zufallsvariablen simu- lieren die Bewegung der 1. Dazu betrachten wir die Position Wt der 1 nach t Schritten, also P Wt := tk=1 Yk mod n, die Irrfahrt mit Inkrementen Yi auf Zn mit Start in 0. Wir bezeichnen mit Vt den absoluten Abstand von Wt zur Startposition, also Vt = min(|Wt |, |n − Wt |). Des P Weiteren betrachten wir die normale Irrfahrt St mit Inkrementen Yi auf Z, also St := tk=1 Yk . Sei weiter τ := inf t ≥ 1 : |Vt | = b n2 c . Dann gilt für t ≤ τ , dass Vt = St . Es folgt P[max |Vk | ≥ k≤t n n ] = P[max |Sk | ≥ ]. k≤t 4 4 (5.41) Wir wollen nun die rechte Seite nach oben abschätzen. Dazu benötigen wir eine Ungleichung von Kolmogorov. Satz 5.1.4 (Kolmogorov’sche Ungleichung). Sei t ∈ N und Y1 , X2 , . . . , Yt unabhängige ZuP fallsvariablen mit E[Yi ] = 0 und V[Yi ] < ∞ für i = 1, . . . , n. Weiter sei Sk = ki=1 Yi für k = 1, . . . , n. Dann gilt für jedes x > 0: P[ max |Sk | ≥ x] ≤ k=1,...,t 1 V[St ]. x2 (5.42) Beweis. [Kle06, Satz 5.28]. Da unsere Yi unabhängig identisch verteilt sind, gilt V[St ] = tV[Y1 ]. Es gilt außerdem 1 1 1 1 E[Y1 ] = 1 8n + (−1) 8n = 0 und damit V[Y1 ] = E[Y12 ] = 12 8n + (−1)2 8n = 1 4n . Ingesamt folgt 47 5 Mixing Time nun P[max |Vk | ≥ k≤t Ist nun t ≤ n3 16 , n 16 1 4t ] ≤ 2t = 3. 4 n 4n n (5.43) n 1 ]≤ . 4 4 (5.44) so ist P[max |Vk | ≥ 3 k≤ n32 Sei An die Menge aller Elemente aus Zn , deren Abstand zur 0 größer oder gleich der Gleichverteilung π ist dann π(An ) ≥ d( 1 2 n 4 ist. Unter und damit n3 1 1 1 )≥ − = . 16 2 4 4 (5.45) Mit 5.1.3 folgt tmix ≥ n3 . 16 (5.46) 5.1.5 Einer Karte folgen Was geschieht nun, wenn wir in dem vorherigen Verfahren nicht den n-cycle betrachten, sondern eine lazy gewichtete Irrfahrt auf dem zweidimensionalen Torus Z2n ? Kann man dadurch die Schranke verbessern? Man stelle sich die Markovkette als ein Mischverfahren für ein Kartendeck von n2 Karten vor. Wir starten in einem sortierten Deck, folgen nun der ersten Karte und warten bis diese Karte einen Manhattan-Abstand von mindestes b n2 c zur Position 1 hat. Da die Karte nur selten bewegt wird, benötigt man eher viele Schritte bis solch eine Permutation erreicht ist. Präziser sei n j n ko . An := σ : ρ1 (1, σ(1)) ≥ 2 (5.47) Unter der Gleichverteilung π gilt π(An ) ≥ 21 , vergleiche [Sah09, 5.4 Lower bound via following a single element]. Nun garantiert uns [LPW08, Lemma 2.5] wieder, dass ρ1 (1, Xt (1)) eine Markovkette auf Z2n ist. Wir wollen nun die Wahrscheinlichkeit P[ρ1 (1, Xt (1)) ≥ x] für ein x > 0 abschätzen. Sei dazu St eine Irrfahrt auf Z2 mit Start in (0, 0), die sich mit Wahrscheinlichkeit 1 8n in jede der 4 Richtungen bewegt und mit Wahrscheinlichkeit 1 − 4 8n =1− 1 2n im aktuellen Zustand verbleibt. Dann gilt P[ρ1 (1, Xt (1)) ≥ x] ≤ P[||St ||1 ≥ x], (5.48) wobei ||.||1 die 1-Norm (Manhattan-Norm) auf dem Z2 bezeichnet. Zerlegt man die Norm jetzt 48 5.1 Untere Schranken Abbildung 5.3: Die Positionen der 1 einer Permutation aus An sind grau unterlegt. in ihre x- und y-Werte, also ||St ||1 = |Stx | + |Sty |, wobei Stx die Bewegung in x-Richtung und Sty die Bewegung von St in y-Richtung ist, dann gilt mit der Chebyshev-Ungleichung [Kle06, Satz 5.11] P[||St ||1 ≥ x] ≤ V||St ||1 V(|Stx | + |Sty |) = , x2 x2 (5.49) wobei V für die Varianz und COV für die Kovarianz steht. Nun sind Stx und Sty identisch verteilt (nicht unabhängig!), daher folgt V(|Stx |) + V(|Sty |) + 2COV (|Stx |, |Sty |) V(|Stx | + |Sty |) = x2 x2 4V(|Stx |) ≤ x2 4E(|Stx |2 ) − 4(E|Stx |)2 = x2 x 2 4E(|St | ) ≤ x2 4E[(Stx )2 ] = x2 4V[Stx ] = , x2 da E[Stx ] = 0 ist. Weiter gilt wie vorher V[Stx ] = P[ρ1 (1, Xt (1)) ≥ lnm 2 t 4n . (5.51) (5.52) (5.53) (5.54) (5.55) Insgesamt folgt ] ≤ P[||St ||1 ≥ 16V[Stx ] n2 4t = 3. n ≤ (5.50) lnm 2 ] (5.56) (5.57) (5.58) 49 5 Mixing Time Mit t ≤ n3 16 ist nun die rechte Seite nicht größer als 14 . Wegen d(t) ≥ π(An ) − P t (Id, An ) folgt nun ebenfalls tmix ≥ n3 16 , (5.59) also die gleiche Schranke, obwohl wir eine Dimension mehr betrachtet haben. Man hätte vielleicht erwartet, wenigstens einen Faktor besser zu sein - allerdings haben wir auch die Kovarianz sehr grob abgeschätzt. 5.1.6 Eigenwerte, Relaxationszeit Wir betrachten noch einmal die lazy Irrfahrt auf dem n-cycle, die sich mit Wahrscheinlichkeit 1 8n in jede der zwei Richtungen bewegt und mit Wahrscheinlichkeit 1 − 1 4n nichts tut. Die Übergangsmatrix sei Q. Wir erinnern uns, dass dies eine Projektion unserer eigentlichen Markovkette war und wir die Mixing Time der Markovkette nach unten gegen die Mixing Time der Irrfahrt abschätzen konnten. Die Projektion war ebenfalls reversibel, aperiodisch und irreduzibel. Des Weiteren betrachten wir die symmetrische Irrfahrt auf dem n-cycle, die sich je mit Wahrscheinlichkeit 1 2 in jede Richtung bewegt. Diese Übergangsmatrix sei R. Nach [LPW08, 12.3.1 The Cycle] sind die Eigenwerte λj der Übergangsmatrix R gegeben durch j λj = cos(2π ) n (5.60) für j = 0, . . . , n − 1. Für die Übergangsmatrix Q gilt nun Q= R 1 + (1 − )I 4n 4n (5.61) mit der Einheitsmatrix I. Sei λ ein Eigenwert von R mit Eigenvektor v, das heißt Rv = λv, dann ist (genau dann) wegen Qv = ( λ+4n−1 4n R 1 λ + 4n − 1 + (1 − )I)v = v 4n 4n 4n (5.62) ein Eigenwert von Q. Die Eigenwerte von Q ergeben sich damit durch κj = cos(2π nj ) + 4n − 1 4n (5.63) für j = 0, . . . , n − 1. Sei weiter κ∗ := max {|κj | : j = 0, . . . , n − 1 und κj 6= 1}, dann definiert γ∗ := 1 − κ∗ 50 (5.64) 5.1 Untere Schranken die absolute Spektrallücke. Die Relaxationszeit trel einer reversiblen Markovkette mit absoluter Spektrallücke γ∗ ist dann definiert als trel := 1 . γ∗ 1 cos(2π n )+4n−1 4n Genaues Hinsehen ergibt, dass κ∗ = (5.65) und somit γ∗ = 1 ) 1−cos(2π n . 4n Es folgt für die Relaxationszeit trel = 4n . 1 − cos(2π n1 ) (5.66) Der folgende Satz liefert einen Zusammenhang zwischen Relaxationszeit und Mischzeit: Satz 5.1.5. Für eine irreduzible, aperiodische, reversible Markovkette gilt tmix () ≥ (trel − 1) ln( 1 ). 2 (5.67) Beweis. [LPW08, Theorem 12.4]. Damit ist nun unter Benutzung der Potenzreihenentwicklung des Kosinus 1 4n 1 − 1) ln( 2 ) 1 − cos(2π n ) 4n 1 ≥ ( 4π2 − 1) ln( ) 2 2 tmix () ≥ ( (5.68) (5.69) 2n 2n3 1 = ( 2 − 1) ln( ) π 2 (5.70) beziehungsweise für die Mixing Time tmix ≥ ln(2) 2n3 n3 − ln(2) ≈ − 0.69. π2 7.12 (5.71) Mit 5.1.3 folgt die gleiche Aussage für unsere Markovkette. 5.1.7 Produktketten Wir werden nun die Eigenwerte der Übergangsmatrix einer Irrfahrt auf dem Torus bestimmen, um dann mit der vorherigen Methode eine weitere Abschätzung für die Mixing Time zu erhalten. Im Grunde genommen werden wir zwei Irrfahrten auf den n-ten Einheitswurzeln koppeln. Dazu könnten wir einfach [LPW08, 12.4 Product Chains] benutzen, wir wollen aber einige Schritte explizit ausrechnen und werden daher einen etwas intuitiveren Ansatz verwenden, der im Endeffekt jedoch auf eine Produktkette hinausläuft. Sei dazu ω = e 2πi n 51 5 Mixing Time und Wn := (ω j , ω k ), j, k = 1, . . . , n die Menge aller Paare von n-ten Einheitswurzeln. Diese Paare identifizieren wir mit den Punkten auf dem Torus. Wegen ω n = 1 ist außerdem ω j ω k = ω (k+j) mod n . Die Irrfahrt soll sich jetzt mit Wahrscheinlichkeit 1 4 in jede Richtung bewegen. Speziell entspricht eine Bewegung einfach der Multiplikation einer Koordinate mit ω beziehungsweise ω −1 . Daher definieren wir die Übergangsmatrix R wie folgt 1 = R((ω j , ω k ), (ωω j , ω k )) = R((ω j , ω k ), (ω −1 ω j , ω k )) 4 = R((ω j , ω k ), (ω j , ωω k )) = R((ω j , ω k ), (ω j , ω −1 ω k )) (5.72) (5.73) für j, k = 1, . . . , n und 0 sonst. Ist f nun eine Eigenfunktion von R zum Eigenwert λ, so muss gelten λf ((ω j , ω k )) = Rf ((ω j , ω k )) = f ((ω j−1 , ω k )) (5.74) + f ((ω j+1 , ω k )) + 4 f ((ω j , ω k−1 )) + f ((ω j , ω k+1 )) . (5.75) Für l, m = 1, . . . , n sei φl,m definiert als φl,m ((ω j , ω k )) := ω jl+km . (5.76) Dann sind φl,m Eigenfunktionen von R, denn es gilt Rφl,m ((ω j , ω k )) = φl,m ((ω j−1 , ω k )) + φl,m ((ω j+1 , ω k )) + φl,m ((ω j , ω k−1 )) + φl,m ((ω j , ω k+1 )) 4 (5.77) ω l(j−1)+mk + ω l(j+1)+mk + ω lj+m(k−1) + ω lj+m(k+1) 4 −l l −m ω +ω +ω + ωm = ω jl+km 4 1 2πl 2πm = ω jl+km (cos( ) + cos( )). 2 n n = (5.78) (5.79) (5.80) 2πm Gleichzeitig können wir hier Eigenwerte von R ablesen, nämlich λl,m = 12 (cos( 2πl n ) + cos( n )) für l, m = 1, . . . , n. Unsere eigentliche Irrfahrt bewegt sich aber nicht mit Wahrscheinlichkeit in jede Richtung, sondern nur mit Wahrscheinlichkeit 1 8n . 1 4 Wir definieren uns die Übergangsmatrix Q durch Q := 52 R 1 + (1 − )I. 2n 2n (5.81) 5.2 Obere Schranken Das ist nun die Übergangsmatrix einer Projektion unserer Markovkette. Für deren Eigenwerte gilt jetzt κl,m = λl,m + 2n − 1 . 2n (5.82) Sei wieder κ∗ der betragsmäßig größte Eigenwert außer 1. Dann gilt für κ ≤ κ∗ 1 1 1 = ≥ γ∗ 1 − κ∗ 1−κ trel = (5.83) und insbesondere für κ0,1 folgt trel ≥ 1 = 1 − κ0,1 1− 1 (5.84) λ0,1 +2n−1 2n 1 = 1− 1 (cos( 2π0 )+cos( 2π1 ))+2n−1 2 n n 2n 2n = 1 1 − 2 (1 + cos( 2π n )) ≥ (5.85) 2n 1 − 12 (1 + 1 − 4π 2 ) 2n2 (5.86) = 2n3 . π2 (5.87) Wir erhalten die gleiche Schranke wie vorher, die wegen 5.1.3 auch für unsere Markovkette gilt: tmix ≥ ln(2) 2n3 n3 − ln(2) ≈ − 0.69. 2 π 7.12 (5.88) 5.2 Obere Schranken 5.2.1 Hitting Time Eine einfache obere Schranke für die Mixing Time kann man mit Hilfe der Hitting Time angeben. Satz 5.2.1. Für eine reversible Markovkette auf dem Zustandsraum Z mit Übergangsmatrix P und stationärer Verteilung π gilt tmix ≤ 2 max Eπ (τx ) + 1 ≤ 2thit + 1. x∈Z (5.89) Beweis. [LPW08, Theorem 10.14, Remark 10.16]. 53 5 Mixing Time Es folgt mit der Abschätzung für die Hitting Time aus dem vorherigen Kapitel, dass tmix ≤ 769, n=2 n2 !(48n4 − 48n3 − 96n2 + 96n) + 1, n2 !(96n4 − 96n3 − 160n2 + 168n) + 1, n ≥ 3 ungerade (5.90) n ≥ 4 gerade. 5.2.2 Relaxationszeit Satz 5.2.2. Für eine reversible irreduzible Markovkette auf dem Zustandsraum Z mit Übergangsmatrix P und stationärer Verteilung π gilt mit πmin := minx∈Z π(x): tmix () ≤ ln( 1 )trel . πmin (5.91) Beweis. [LPW08, Theorem 12.3] Wir benötigen hierzu also eine obere Schranke für die Relaxationszeit beziehungsweise für den betragsmäßig größten Eigenwert. Eine untere Schranke für die Bottleneck Ratio Φ∗ würde uns auch weiterhelfen, wie der folgende Satz zeigt. Satz 5.2.3. Für eine reversible Markovkette mit Übergangsmatrix P sei λ2 der zweitgrößte Eigenwert und γ = 1 − λ2 . Dann gilt Φ2∗ ≤ γ ≤ 2Φ∗ . 2 (5.92) Beweis. [LPW08, Theorem 13.14]. 5.2.3 Kanonische Pfade Für eine reversible Markovkette mit Übergangsmatrix P und Zustandsraum Z sei E die Menge aller Kanten mit positiver Übergangswahrscheinlichkeit, genauer E := {(x, y) : P (x, y) > 0} . (5.93) Ein E-Pfad von x nach y ist eine Folge Γ = (e1 , e2 , . . . , eM ) von Elementen aus E, so dass e1 = (x, x1 ), e2 = (x1 , x2 ), . . . , em = (xm−1 , y) für Zustände x1 , x2 , . . . , xm−1 ∈ Z. Die Länge eines solchen Pfades sei einfach die Anzahl seiner Elemente |Γ|. Weiter sei Q(x, y) = π(x)P (x, y). Wir wollen nun zwei reversible Markovketten auf dem Zustandsraum Z vergleichen. Seien dazu P und P̃ deren Übergangsmatrizen mit stationären Verteilungen π und π̃. Existiert nun für alle (x, y) ∈ Ẽ ein E-Pfad von x nach y, das heißt wir können jeden Übergang der Markovkette mit Übergangsmatrix P̃ darstellen als Pfad in E, so suchen wir uns für alle 54 5.2 Obere Schranken (x, y) einen solchen Pfad aus und nennen ihn Γx,y . Man definiert nun die Congestion Ratio (Staurate) B durch 1 B := max Q(a, b) (a,b)∈E X Q̃(x, y)|Γx,y | . (5.94) x,y∈Z,Γx,y 3(a,b) Ist nun λ2 der zweitgrößte Eigenwert der Übergangsmatrix einer reversiblen Markovkette, so heißt γ := 1 − λ2 Spektrallücke. Ist die Markovkette lazy, so stimmt sie mit der absoluten Spektrallücke überein, da in diesem Fall alle Eigenwerte nicht-negativ sind. Satz 5.2.4 (Comparison Theorem). Ist B die Congestion Ratio für eine Wahl von E-Pfaden für zwei reversible Markovketten mit Übergangsmatrizen P, P̃ , stationären Verteilungen π, π̃ und Spektrallücken γ, γ̃, dann gilt γ̃ ≤ π(x) max ˜ x∈Z π(x) ! Bγ. (5.95) Beweis. [LPW08, Theorem 13.23]. Vergleicht man nun eine reversible, irreduzible Markovkette mit einer anderen Markovkette, die sofort nach einem Schritt in die stationäre Verteilung π der ersten Markovkette übergeht, dann lässt sich diese Beziehung wie folgt vereinfachen. Satz 5.2.5 (Kanonische Pfade). Für eine reversible irreduzible Markovkette mit Übergangsmatrix P und stationärer Verteilung π sei Γx,y ein E-Pfad für alle x, y ∈ Z. Dann gilt mit 1 B := max Q(a, b) (a,b)∈E X π(x)π(y)|Γx,y | , (5.96) x,y∈Z,Γx,y 3(a,b) dass γ≥ 1 . B (5.97) Beweis. [LPW08, Corollary 13.24]. Dies wollen wir nun auf unsere Markovkette anwenden. Wenn es uns gelingt, B nach oben abzuschätzen, erhalten wir eine obere Schranke für die Relaxationszeit, da unsere Markovkette lazy ist. Zuerst müssen wir die E-Pfade wählen. Dazu wählen wir zu je zwei Zuständen x, y ∈ Z einen kürzesten Weg. Die maximale Länge eines solchen Weges ist L. Können wir nun die E-Pfade so wählen, dass alle Kanten aus E in diesen gleich oft vorkommen, dann können wir die Anzahl der Summanden in der Formel für B nach oben beschränken. 55 5 Mixing Time Bemerkung 5.2.6. Wir nehmen an, dass wir die E-Pfade so wählen können, dass alle Kanten (a, b) ∈ E der Menge aller E-Pfade gleich oft vorkommen. Es ist klar, dass Kanten der Form (a, a) in kürzesten Wegen nicht vorkommen, es sei denn es ist der Weg von a nach a gesucht. Daher verwenden wir für unterschiedliche x, y nur Kanten zwischen verschiedenen Zuständen. Von jedem der |Z| Zustände gehen 4n solche Kanten ab. Insgesamt gibt es also 4n|Z| gerichtete Kanten. Addieren wir nun die Länge aller E-Pfade, so ist der Wert kleiner oder gleich L|Z|2 . Verteilen wir nun die verschiedenen Kanten auf diese Pfade, so erhalten wir für die Anzahl der Summanden, dass diese kleiner oder gleich L|Z|2 4n|Z| = L|Z| 4n ist. Es ist klar, dass das Maximum in der Formel für B für eine Kante angenommen wird, die nicht von der Form (a, a) ist. Die stationäre Verteilung π war die Gleichverteilung, sei πmin = 1 |Z| . Unter der obigen Annahme gilt dann für B: B≤ Es folgt γ ≥ 32n2 L2 L|Z| 2 1 L2 . πmin L = 8nπmin 4n 32n2 beziehungsweise trel ≤ L2 . 32n2 (5.98) Es folgt mit 5.2.2, dass tmix ≤ ln(4|Z|) L2 . 32n2 (5.99) Asymptotisch ist dann lim sup n→∞ 1 16 tmix tmix = lim sup 6 ≤ 1. 3 2 ln(n)(12n ) n→∞ 9n ln(n) (5.100) Bemerkung 5.2.7. Vor allem der Durchmesser L sorgt hier dafür, dass die Schranke größer wird. Vermutet man L eher im Bereich O(n2 ), so ist lim supn→∞ tmix cn4 ln(n) ≤ 1 für ein c > 0 und der obigen Annahme über die Anzahl der Summanden (Bemerkung 5.2.6). 5.2.4 Vergleich von Irrfahrten auf Gruppen Vergleicht man zwei Markovketten auf ein und derselben Gruppe, so kann man spezielle Gruppeneigenschaften nutzen, um die Wahl der E-Pfade zu reduzieren. In diesem Fall reicht es aus, die Elemente des Trägers der einen Irrfahrt als Hintereinanderausführung von Elementen des Trägers der anderen Irrfahrt darzustellen. Symmetrie hilft uns dann eine gut verteilte Menge von E-Pfaden zu finden, so dass die Anzahl der Summanden in der Formel für B nicht zu groß wird. Die zusätzliche Annahme, die wir im vorherigen Abschnitt treffen mussten, ist nun nicht mehr nötig. Sind µ und µ̃ zwei Inkrementverteilungen zweier irreduzibler, reversibler Markovketten auf einer endlichen Gruppe G. Seien weiter S und S̃ die Trägermengen dieser Verteilungen und für jedes a ∈ S̃ wählt man eine Darstellung a = s1 . . . sk mit si ∈ S für 1 ≤ i ≤ k. Dies ist das 56 5.2 Obere Schranken Pendant zu den E-Pfaden. Wir bezeichnen mit N (s, a) die Anzahl mit der ein s ∈ S in a ∈ S̃ P vorkommt. Die Anzahl aller Elemente in solch einer Darstellung sei |a| = s∈S N (s, a). Satz 5.2.8. In diesem Fall wird die Congestion Ratio B zu B := max s∈S 1 X µ̃(a)N (s, a)|a|. µ(s) (5.101) a∈S̃ Sind weiter γ und γ̃ die Spektrallücken, so ist γ̃ ≤ Bγ. (5.102) Beweis. [LPW08, 13.5.2. Comparison of random walks on groups, Corollary 13.27]. Wir werden nun unsere Markovkette mit einer bekannten Markovkette vergleichen. In [LPW08] wurde die Markovkette untersucht, die in jedem Schritt eine beliebige Transposition ausführt. Wir müssen nun also beliebige Transpositionen in unserer Markovkette darstellen. Wie wir bereits wissen, ist dies nur möglich, wenn n eine gerade Zahl ist. Sei daher n ≥ 4 gerade. Dann ist die zugrunde liegende Gruppe die Gruppe der Permutationen Sn2 und mit [LPW08, Theorem 12.4, Corollary 8.10] folgt für die Markovkette der zufälligen Transpositionen t̃rel = O(n2 ln n2 ) = O(n2 ln n). Bezeichnen wir also mit µ die Inkrementverteilung unserer Markovkette und mit S ihre Trägermenge, also die Schiebeoperationen, dann ist µ(s) = 1 für s ∈ S 8n (5.103) und µ(I) = 21 , wobei I für die identische Permutation steht. Für die Markovkette der beliebigen Transpositionen ist mit Trägermenge S̃ und Inkrementverteilung µ̃ dann µ̃(s̃) = und µ̃(I) = 1 . n2 2 n4 (5.104) Da wir die Relaxationszeit dieser Markovkette nur bis auf eine Konstante kennen, werden wir bei der Benutzung dieses Verfahrens keinen Wert auf gute Konstanten legen. Uns interessiert hier nur die Größenordnung. Um nun eine Transposition darzustellen, korrigieren wir zuerst mittels der Operationen Ci , Ai , i = 1 . . . 4 die Zeile und dann mit B1 , B2 die Spalte. Eventuell müssen wir noch eine benachbarte Transposition darstellen. Dann führen wir alle Operationen noch einmal rückwärts aus. Wir veranschaulichen die Vorgehensweise an Hand einer Abbildung. Eine Operation A, B, C benötigt je O(1) Schiebeoperationen. Ausführen müssen wir davon O(n) Stück. Falls wir noch eine benachbarte Transposition ausführen müssen, kostet diese ebenfalls O(n) Schiebeoperationen. Damit ist für eine beliebige Transposition a dann |a| ≤ 57 5 Mixing Time Abbildung 5.4: Schnellere Vertauschung zweier beliebiger Felder. Mit Ci und Bi wird das dunkelgraue Feld an die richtige Position getauscht (Schritte 1-6). Es folgt eine benachbarte Transposition (Schritt 7), um das hellgraue Feld in die richtige Ausgangsposition zu bringen. Dann werden in der Reihenfolge die Inversen der Schritte 5-1 angewendet, denn Schritt 6 wurde schon mit der Transposition korrigiert. O(n) und somit auch N (s, a) ≤ O(n). Es folgt für die Congestion Ratio B: 2 4 n O(n)O(n) = O(n3 ) n4 (5.105) trel ≤ O(n5 ln n). (5.106) B ≤ 8n und damit Mit der Stirling’schen Formel ist dann für die Mixing Time tmix 7 n→∞ cn (ln n)2 lim inf ≤1 (5.107) für ein c ≥ 0 (und n ≥ 4 gerade!). Wir sehen: die Mixing Time ist polynomial in der Eingabegröße n. Man spricht in einem solchen Fall von einer schnell mischenden (rapidly mixing) Markovkette. 58 6 Offene Fragen Da der Zustandsraum und somit auch die Menge der Kanten zwischen den Zuständen mit großen n sehr stark wächst, ist es schwierig, die kürzesten Wege und somit den Durchmesser genau zu bestimmen. Auch über die Anzahl verschiedener Wege gleicher Länge zwischen zwei Knoten lässt sich wenig sagen. Mehr Wissen über die allgemeine Struktur des Graphen würde es uns erlauben effizientere Techniken, wie zum Beispiel das Coupling, zur Bestimmung einer oberen Schranke für die Mixing Time zu benutzen. 6.1 Coupling Ein Coupling (Kopplung) zweier Wahrscheinlichkeitsverteilungen µ, ν ist ein Paar (X, Y ) zweier Zufallsvariablen X, Y , so dass µ die Randverteilung von X und ν die Randverteilung von Y ist. Es gilt also P[X = x] = µ(x) und P[Y = y] = ν(y). Warum Coupling so eine wirksame Methode ist, um Mischzeiten nach oben abzuschätzen, zeigt der folgende Satz. Satz 6.1.1. Sei Z ein Zustandsraum und µ, ν Wahrscheinlichkeitsverteilungen auf diesem. Dann gilt ||µ − ν||T V = min {P[X 6= Y ] : (X, Y ) ist ein Coupling von µ und ν} . (6.1) Beweis. In [LPW08, Proposition 4.7] ist zunächst nur vom Infimum statt dem Minimum die Rede. Der Beweis konstruiert dann aber ein Coupling, dass das Minimum tatsächlich annimmt. Ein Coupling zweier Markovketten mit Übergangsmatrix P ist dann ein stochastischer Prozess (Xt , Yt )t=0,1,2,... , so dass (Xt ) und (Yt ) für sich genommen Markovketten mit der Übergangsmatrix P sind. Die Startverteilungen von X0 und Y0 können verschieden sein. Angenommen, es gilt für ein Coupling Xs = Ys für ein s ≥ 0. Fordert man dann Xt = Yt für alle t ≥ s, so bleiben die Eigenschaften eines Couplings erhalten. Für eine Übergangsmatrix P einer irreduziblen Markovkette mit Zustandsraum Z und stationärer Verteilung π gilt jetzt die folgende Hauptaussage. 59 6 Offene Fragen Satz 6.1.2. Sei (Xt , Yt )t=0,1,2,... ein Coupling für welches gilt: Xs = Ys ⇒ Xt = Yt ∀t ≥ s. (6.2) Sei weiter X0 = x und Y0 = y und τcouple der erste Zeitpunkt, zu dem sich die Markovketten (Xt ) und (Yt ) treffen, also τcouple := min {t : Xt = Yt } . (6.3) ||P t (x, ·) − P t (y, ·)||T V ≤ Px,y [τcouple > t], (6.4) Dann gilt wobei Px,y die Wahrscheinlichkeit unter den Bedingungen X0 = x und Y0 = y bezeichnet. Gibt man nun für jedes Paar von Zuständen x, y ∈ Z solch ein Coupling an und ist τcouple definiert wie zuvor, dann folgt d(t) ≤ max Px,y [τcouple > t]. x,y∈Z (6.5) Beweis. [LPW08, Theorem 5.2, Corollary 5.3]. David Aldous vermutet, dass die Konstruktion eines Couplings für die Irrfahrt auf den Zuständen des Rubik’s Cube sehr kompliziert ist [Ald83, Example 5.9]. Da unsere Markovkette gewisse Ähnlichkeiten mit diesem Beispiel aufweist und viele Versuche ein nützliches Coupling zu konstruieren ohne Erfolg waren, wollen wir hier zumindest die Schwierigkeiten bei der Konstruktion in unserem Fall andeuten. Uns ist es zwar gelungen, einen Weg zwischen zwei Zuständen anzugeben, jedoch vermuten wir den Durchmesser des zugrunde liegenden Graphen eher im Bereich O(n2 ). Um ein wirklich effektives Coupling zu konstruieren, bräuchten wir mehr Informationen über die kürzesten Wege zwischen zwei Zuständen. Man konstruiert ein Coupling normalerweise so, dass man bestimmte Gemeinsamkeiten zweier Markovketten, sofern einmal erreicht, nicht mehr zerstört. Zwei Irrfahrten auf dem Torus Zdn werden beispielsweise so gekoppelt, dass die Irrfahrten in einer Koordinate immer übereinstimmen, sobald sie sich in dieser Koordinate einmal getroffen haben. Irgendwann stimmen dann alle Koordinaten überein und die Irrfahrten befinden sich im gleichen Zustand. Wir können nun folgendes für unsere Markovkette probieren: Wir konstruieren das Coupling so, wenn sich einmal zwei Felder in beiden Markovketten an der gleichen Position befinden, dann trennen sich diese Felder nicht mehr voneinander. Das Problem, das hierbei auftritt, ist klar: Es kann passieren, dass sich der Algorithmus festfährt - sind nämlich nur noch weniger als 60 6.1 Coupling n Felder an verschiedenen Positionen, so kann man keine Verbesserung mehr erreichen, ohne schon übereinstimmende Positionen wieder zu zerstören. Abbildung 6.1: Die Felder, die sich an verschiedenen Positionen befinden, können nicht mehr gekoppelt werden ohne andere schon gekoppelte Felder voneinander zu entfernen, denn jede Zeile und Spalte enthält mindestens ein gekoppeltes Feld. Man muss also erreichen, dass die Anzahl nicht gekoppelter Felder immer größer oder gleich n ist (oder eben 0) und die letzten n nicht gekoppelten Felder alle in einem Schritt koppeln. Selbst, wenn man das erreichen sollte, stellt sich immernoch die Frage, ob man dann so ein Coupling konstruieren kann, dass die Randverteilungen immernoch der Übergangsmatrix P entsprechen. Eine weitere Möglichkeit wäre, das Coupling über die Länge des kürzesten Weges zwischen den aktuellen Zuständen zu konstruieren. Könnten wir zum Beispiel sagen, dass sich die Länge des kürzesten Weges von Xt zu Yt im Erwartungswert nur verkleinern kann, so wäre klar, dass sich die Markovketten irgendwann koppeln müssen. Dazu fehlt uns jedoch eine genauere Anschauung des zugrunde liegenden Graphen, denn wir wissen nicht, wie genau sich eine beliebige Schiebeoperation auf den Abstand auswirkt (für beliebige Zustände). Anders sieht das für zwei Zustände aus, die sehr nah beieinander liegen. Betrachten wir zum Beispiel zwei Zustände, die sich nur um eine Schiebeoperation unterscheiden, so können wir das sogenannte Path Coupling (Pfadkopplung) betrachten. Definiert man sich eine Längenfunktion l auf den Kanten des zugrunde liegenden Graphen, für die gilt l(x, y) ≥ 1 für alle x, y ∈ Z mit P (x, y) > 0, dann ist ein Weg von a ∈ Z nach b ∈ Z eine Folge von Zuständen ξ = (a0 , a1 , . . . , ar ) mit a0 = a und ar = b, wobei (ai−1 , ai ) eine P Kante ist für alle 1 ≤ i ≤ r. Die Länge des Weges ξ ist dann ri=1 l(ai−1 , ai ). Die Pfadmetrik für alle a, b ∈ Z ist dann definiert durch β(a, b) := min {Länge von ξ : ξ ist ein Weg von a nach b} . (6.6) 61 6 Offene Fragen Satz 6.1.3. Sei Ex,y der Erwartungswert unter der Bedingung, dass für zwei Markovketten (Xt ), (Yt ) gilt, dass X0 = x und Y0 = y. Für eine Markovkette mit Zustandsraum Z und Übergangsmatrix P sei auf dem zugrunde liegenden Graphen eine Längenfunktion l definiert, so dass l(x, y) ≥ 1 für jede Kante (x, y) gilt. Sei β die zugehörige Pfadmetrik. Angenommen, es gäbe für jede Kante (x, y) ein Coupling (X1 , Y1 ) der Verteilungen P (x, ·) und P (y, ·) mit Ex,y (β(X1 , Y1 )) ≤ l(x, y)e−α (6.7) − ln() + ln(maxx,y∈Z β(x, y)) . tmix () ≤ α (6.8) für ein α > 0. Dann folgt Beweis. Dreiecksungleichung, [LPW08, Theorem 14.6, Corollary 14.7]. Wählen wir nun für unsere Markovkette als Längenfunktion l ≡ 1, also die Anzahl der Kanten, so ist die zugehörige Pfadmetrik β einfach die Anzahl der Kanten in einem kürzesten Weg. Die Schwierigkeit besteht nun darin, für zwei benachbarte Startzustände x, y ∈ Z ein Coupling zu finden, so dass die Länge des kürzesten Weges im Mittel kleiner wird. Leider erweist sich das als unmöglich, denn β(X1 , Y1 ) wird fast immer 2 sein und nur in wenigen Fällen 0 oder 1. Damit können wir kein passendes α > 0 finden um den Satz anzuwenden. 6.2 Minimaler Eintrag der Übergangsmatrix In [Beh99] findet sich eine nützliche Schranke zur Konvergenzgeschwindigkeit von Markovketten. Satz 6.2.1. Für eine irreduzible, aperiodische Markovkette mit Zustandsraum Z und der Übergangsmatrix P sei k0 so, dass alle Einträge von P k0 echt positiv sind. Sei δ das Minimum der Einträge von P k0 und setze τ := 1 − |Z|δ. Dann ist 0 ≤ τ < 1 und für k0 > 1 gilt für alle x, y ∈ Z und k ≥ k0 k |P k (x, y) − π(y)| ≤ τ k0 −1 . (6.9) Beweis. [Beh99, Proposition 10.5]. Wie können wir das nun verwenden? Summiert man die linke Seite über alle y ∈ Z und teilt durch 2, so erhalten wir die Totalvariation. Weiterhin können wir k0 = L wählen, also als den Durchmesser des Graphen. Allein mit diesen Informationen, lässt sich aus dem Satz kein brauchbares Ergebnis ableiten. Das Problem bleibt der minimale Eintrag von P k0 . Wir wissen, 1 k0 dieser Eintrag ist größer oder gleich ( 8n ) (im Fall n ≥ 3). Wir vermuten aber, dass es viel 62 6.3 Das Cutoff-Phänomen mehr als nur einen kürzesten Weg zwischen zwei Zuständen mit Abstand L gibt. Könnten wir also den minimalen Eintrag besser abschätzen und/oder den Durchmesser L exakter angeben, so würden wir hier auch eine polynomiale Schranke erwarten. 6.3 Das Cutoff-Phänomen Für viele Folgen von Markovketten kann man einen interessanten Effekt beobachten: Mit steigender Laufzeit scheint der Abstand zur stationären Verteilung auf einmal einen Sprung zu machen. Betrachtet man den Totalvariationsabstand in Abhängigkeit von der Zeit skaliert mit der Mixing Time, so nähert sich der Graph einer Treppenfunktion an. Man sagt, eine Folge (n) von Markovketten ((Xt )n ) mit Mixing Times tmix () hat einen Cutoff, falls für alle > 0 (n) lim tmix () n→∞ t(n) (1 mix =1 (6.10) − ) gilt. Unsere Schranken sind zu ungenau, um für unsere Markovketten eine Aussage treffen zu können. 6.4 Obere Schranke für die Mixing Time Wir vermuten, dass die gefundene untere Schranke für die Mixing Time recht nah an der wirklichen Mixing Time ist. Gründe dafür sind die groben Abschätzungen und Hindernisse, auf die wir beim Berechnen der oberen Schranken stießen. Man erwartet die Mixing Time in der selben Größenordnung wie die Mixing Time der Projektion auf ein einzelnes Feld (Sektion Projektion und Statistik, Produktketten), denn sobald ein Feld nah an der Gleichverteilung ist, sind es die anderen Felder auch, da sich im Mittel alle Felder gleich oft bewegen. Ein Hindernis bleibt jedoch: Die Felder bewegen sich nicht unabhängig. Nur, weil die Felder für sich genommen gut gemischt sind, muss das nicht heißen, dass auch alle Permutationen fast gleichwahrscheinlich sind. Eine bessere obere Schranke ließe sich durch Verbesserung des Durchmessers oder Beweis der Annahme über die Summanden in der Congestion Ratio finden. 63 6 Offene Fragen Abbildung 6.2: Beispiel im Fall n = 200. Jede Farbe steht für eine Zahl. Im Bild links oben ist die linke obere Ecke weiß und steht für die 1. Die rechte untere Ecke ist komplett schwarz für 2002 . Die Abbildung zeigt das Puzzle nach 0 (Bild oben links), n2 = 40.000 (oben rechts), n2 ln n ≈ 200.000 (unten links) und n3 /3 = 2.000.000 (unten rechts) Mischvorgängen. 64 7 Zusammenfassung Wir wollen jetzt noch einmal die gefundenen Ergebnisse zusammenfassen. Im Zuge der Arbeit haben wir einige Eigenschaften des Puzzles nachgewiesen und obere und untere Schranken für den Durchmesser des Graphen und verschiedene Mischzeiten erhalten. Bemerkung 7.0.1. Steht im Folgenden als Bemerkung zur Schranke f (n) für eine Stoppzeit τ “asymptotisch”, so bedeutet das lim inf n→∞ weise lim supn→∞ τ f (n) τ f (n) ≥ 1 im Fall der unteren Schranke beziehungs- ≤ 1 für die obere Schranke. In Kapitel 2 zeigten wir die allgemeine Lösbarkeit des Puzzles für n ≥ 2 gerade und leiteten daraus eine Schranke für die Anzahl der maximal benötigten Schiebeoperationen ab. Ebenso bewiesen wurde, dass im Fall n ≥ 3 ungerade nur Permutationen des gleichen Signums erreicht werden können. Auch hier folgerten wir eine Schranke für den Durchmesser. Für die Fälle n = 2, 3 wurde der Durchmesser außerdem direkt berechnet. Tabelle 7.1: Durchmesser des Graphen Fall n ≥ 2 gerade n ≥ 3 ungerade n ≥ 4 gerade Methode benachbarte Vertauschung über-Eck-Drehungen über-Eck-Drehungen obere Schranke 10n − 15n3 − 5n2 + 15n − 5 12n3 − 12n2 − 24n + 24 12n3 − 12n2 − 20n + 21 Bemerkung Fall n gerade n ungerade n≥2 Methode Manhattan-Metrik Manhattan-Metrik Exploration untere Schranke n2 n(n − 1) 2n2 Bemerkung Fall n=2 n=3 Methode Programm Programm Wert 4 8 4 asymptotisch Bemerkung 65 7 Zusammenfassung In Kapitel 3 definierten wir eine Markovkette auf dem Puzzle und wiesen deren Eigenschaften nach. Diese Irrfahrt ist lazy, irreduzibel, aperiodisch, transitiv, reversibel und konvergiert in Totalvariation gegen die Gleichverteilung als eindeutige stationäre Verteilung. Die Einführung über elektrische Netzwerke und die in Kapitel 4 untersuchte Commute Time lieferten dann Schranken für die Hitting Time. Tabelle 7.2: Hitting Time Fall n ≥ 3 ungerade n ≥ 4 gerade Methode Netzwerke/Commute Time Netzwerke/Commute Time obere Schranke n !(24n − 24n3 − 48n2 + 48n) n2 !(48n4 − 48n3 − 80n2 + 84n) Bemerkung Fall n ≥ 3 ungerade n ≥ 4 gerade Methode Netzwerke/Commute Time Netzwerke/Commute Time untere Schranke n2 ! 2n2 ! Bemerkung 2 4 Mit der Matthews-Methode konnten wir dann die Cover Time in Abhängigkeit von Hitting Times abschätzen. Tabelle 7.3: Cover Time 66 Fall n ≥ 2 gerade n ≥ 3 ungerade Methode Matthews-Methode Matthews-Methode obere Schranke thit (ln n2 ! + 1) thit (ln n2 ! − ln 2 + 1) Bemerkung Fall n ≥ 2 gerade n ≥ 3 ungerade Methode Matthews/Nash-Williams Matthews/Nash-Williams untere Schranke n2 ! ln(n2 ! − 1) n2 ! n2 ! 2 ln( 2 − 1) Bemerkung Schließlich haben wir uns mit verschiedenen Methoden dem Kernthema der Arbeit gewidmet, der Mixing Time. Tabelle 7.4: Mixing Time Fall Methode untere Schranke n ≥ 3 ungerade Bottleneck Ratio n ≥ 4 gerade Bottleneck Ratio n ≥ 3 ungerade Durchmesser n ≥ 4 gerade n≥3 n≥3 Durchmesser Durchmesser Abzählen n(n−1) 2 n2 2 n(n−1) 2 n2 2 2 n≥3 Projektion/Statistik n≥3 Einer Karte folgen n≥3 Eigenwerte/Relaxationszeit Bemerkung n 2n2 asymptotisch asymptotisch n3 16 n3 16 3 ln(2) 2n π 2 − ln(2) ≈ 3 ln(2) 2n π2 − ln(2) ≈ n3 7.12 n3 7.12 − 0.69 n≥3 Produktketten − 0.69 Fall n ≥ 3 ungerade n ≥ 4 ungerade n≥3 Methode Hitting Time Hitting Time Kanonische Pfade obere Schranke n2 !(48n4 − 48n3 − 96n2 + 96n) + 1 n2 !(96n4 − 96n3 − 160n2 + 168n) + 1 9n6 ln(n) n ≥ 4 gerade Vergleich von Markovketten cn7 (ln n)2 Bemerkung Annahme 5.2.6, asymptotisch asymptotisch Vor allem die oberen Schranken haben sich verbesserungsfähig gezeigt. Die Möglichkeiten und Probleme dabei wurden in Kapitel 6 diskutiert. 67 A Programme Sämtliche Programme wurden von mir unter Benutzung von Borland Delphi 7 geschrieben. Für die Implementierung von OpenGL habe ich Teile eines Templates von http://www.delphigl.com benutzt. A.1 Visualisierung des Puzzles Abbildung A.1: Screenshots des Programms. 69 A Programme Dieses Programm visualisiert das Puzzle. Man kann zwischen Torus- und Puzzleansicht wechseln und zufällig puzzeln lassen sowie selbst bestimmte Verschiebungen vornehmen. Geschwindigkeit und Dimension sind frei über einen Schieberegler wählbar. Das Programm ’torus3D.exe’ befindet sich im Ordner ’torus3D’. Mit der Option ’feste Position’ lässt sich einstellen, ob sich das Objekt mit der Mausbewegung drehen soll oder nicht. Folgende Tastaturbefehle steuern das Programm: • W, A, S, D: steuert die Markierung der gewählten Zeile/Spalte • Pfeiltasten: Verschieben die markierte Zeile/Spalte • Leertaste: führt zufällige Mischvorgänge aus, die Anzahl lässt sich über die Trackbar steuern • Enter: speichert einen Screenshot ins Programmverzeichnis • Bild auf/Bild ab: steuert die Zoomstufe. Damit das Programm auf die Tastatureingaben reagiert, muss der Fokus auf dem 3D-Fenster liegen, dazu das 3D-Fenster einfach einmal anklicken. Im Folgenden wird der Quelltext gelistet. Methoden aus dem Template sind mit geschweiften Klammern kommentiert. A.1.1 torus3D program torus3D; uses Windows, Messages, OpenGL, SysUtils, Dialogs, Controls, Graphics, Glaux, Variants, Forms, ExtCtrls, shellapi, StdCtrls, Unit1 in ’Unit1.pas’ {Form1}; {Konstanten und Variablen des Templates} const WND_TITLE = ’OpenGL Sample’; FPS_TIMER = 1; // Timer zur FPS berechnung FPS_INTERVAL = 1000; // Zeit zwischen FPS-Updates 70 A.1 Visualisierung des Puzzles var h_Wnd : HWND; h_DC : HDC; h_RC : HGLRC; Keys : Array[0..255] of Boolean; FPSCount : Integer = 0; ElapsedTime : Integer; Finished : Boolean; // // // // // // Handle aufs Fenster Device Context OpenGL Rendering Context Tasten-Status des Keyboards Frame-Zähler (für FPS berechnen) Programmlaufzeit //Problemspezifische Variablen //Dimension d:integer=10; //Puzzle als Matrix Feld: array of array of integer; //Zähler für die Mischvorgänge counter:integer; //Indizes für die markierten Zeilen/Spalten markedRow:integer=0; markedCol:integer=0; //Timer, damit ein Tastedruck nicht mehrfach pro Frame verarbeitet wird sleeper:integer=150; //Handle für die Maus zum rotieren Mouse:TMouse; //Zoomvariable zoom:real=-18; {$R *.RES} //leer, da keine Texturen verwendet werden procedure InitTextures; begin end; //Initialisiert das Puzzle procedure reCreatePuzzle(); var i,j:integer; begin //Arraylänge wird gesetzt setLength(Feld,d); for i:=0 to d-1 do begin setLength(Feld[i],d); end; //die Felder werden mit 1 bis n^2 belegt for i:=0 to d-1 do 71 A Programme begin for j:=0 to d-1 do begin Feld[i][j]:=j+1+i*d; end; end; //markierte Spalten/Zeilen und der Zähler werden zurückgesetzt markedRow:=0; markedCol:=0; counter:=0; end; //Initialisiert die Anwendung und fügt das Formular hinzu procedure Init(); begin reCreatePuzzle; Application.Title := ’torus3D’; Application.CreateForm(TForm1, Form1); Form1.Show; end; //Zeichnen der Szene procedure glDraw; const r=2; //innerer und äußerer Radius des Torus RR=4 ; //Position des Scheinwerfers für das Licht position : Array[0..3] of GlFloat = (1.0, 10.0, 0.0, 11.0); var i,j:integer; begin //falls der Anwender den Durchmesser ändert, reinitialisieren if d <> dim then begin d:=dim; reCreatePuzzle; end; //farbe zurücksetzen und Speicher leeren glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Open-GL Identitätsmatrix laden für Rotationen und Verschiebungen glLoadIdentity; //das Bild in z-Richtung verschieben, damit man was sehen kann glTranslate(0,0,zoom); //ist die Option feste Position aktiviert, dann feste Position.. if form1.fixedPositionbox.checked then begin glRotate(180,1,0,0); end 72 A.1 Visualisierung des Puzzles //sonst mit der Maus drehen else begin glrotate(2*90*(mouse.CursorPos.Y-384)/384,1,0,0); glrotate(2*90*(mouse.cursorpos.X-512)/512,0,1,0); end; //schaltet den Scheinwerfer an/aus if not form1.lightbox.checked then begin glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_COLOR_MATERIAL); glLightfv(GL_LIGHT0, GL_POSITION, @position[0]); end else begin glDisable(GL_LIGHTING); end; //falls der PuzzleModus aktiv ist und markierte Zeilen/Spalten an sind //markiere diese mit kleinen weißen Dreiecken if (form1.showSelectedBox.checked) and not (form1.torusModeBox.checked) then begin glColor3f(1,1,1); glBegin(GL_TRIANGLES); glVertex3f((markedCol+0.5-d/2)/d*3*RR, (-0-d/2)/d*3*RR, 0); glVertex3f((markedCol-0-d/2)/d*3*RR, (-2-d/2)/d*3*RR, 0); glVertex3f((markedCol+1-d/2)/d*3*RR, (-2-d/2)/d*3*RR, 0); glEnd; glBegin(GL_TRIANGLES); glVertex3f((-0-d/2)/d*3*RR, (markedRow+0.5-d/2)/d*3*RR, 0); glVertex3f((-2-d/2)/d*3*RR, (markedRow-0-d/2)/d*3*RR, 0); glVertex3f((-2-d/2)/d*3*RR, (markedRow+1-d/2)/d*3*RR, 0); glEnd; end; //zeichne den Torus bzw. das Puzzle, jedes Feld einzeln for i:=0 to d-1 do begin for j:=0 to d-1 do begin //markiere Spalten/Zeilen blau, falls Option aktiv if ((i=markedRow) or (j=markedCol)) and (form1.showSelectedBox.checked) and (form1.torusModeBox.checked) then begin glColor3f(0,0,Feld[i][j]/d/d); end else //sonst färbe Feld mit einer Farbe entsprechend der Zahl auf dem Feld //große Zahl=hell, kleine Zahl = dunkel begin glColor3f((0.5+Feld[i][j]/d/d)/1.5,(0.5+Feld[i][j]/d/d)/1.5,Feld[i][j]/d/d); 73 A Programme end; //die Felder sind Quadrate glBegin(GL_QUADS); //im TorusModus ordne die Quadrate auf der Oberfläche des Torus an if Form1.torusModeBox.checked then begin //die 4 Ecken des Quadrates glVertex3f( (RR+r*cos(i/d*2*pi))*cos(j/d*2*pi), (RR+r*cos(i/d*2*pi))*sin(j/d*2*pi), r*sin(i/d*2*pi) ); glVertex3f( (RR+r*cos((i+1)/d*2*pi))*cos(j/d*2*pi), (RR+r*cos((i+1)/d*2*pi))*sin(j/d*2*pi), r*sin((i+1)/d*2*pi) ); glVertex3f( (RR+r*cos((i+1)/d*2*pi))*cos((j+1)/d*2*pi), (RR+r*cos((i+1)/d*2*pi))*sin((j+1)/d*2*pi), r*sin((i+1)/d*2*pi) ); glVertex3f( (RR+r*cos(i/d*2*pi))*cos((j+1)/d*2*pi), (RR+r*cos(i/d*2*pi))*sin((j+1)/d*2*pi), r*sin(i/d*2*pi) ); end //im PuzzleModus liegen die Quadrate einfach nebeneinander else begin glVertex3f((j-d/2)/d*3*RR, (+i-d/2)/d*3*RR, 0); glVertex3f((j+1-d/2)/d*3*RR, (i-d/2)/d*3*RR, 0); glVertex3f((j+1-d/2)/d*3*RR, (i+1-d/2)/d*3*RR, 0); glVertex3f((j-d/2)/d*3*RR, (i+1-d/2)/d*3*RR, 0); end; glEnd; end; end; end; {Template:Prozedur zum Speichern eines Screenshots} procedure ScreenToFile(aFileName: string); var Bitmap: TBitmap; Canvas: TCanvas; begin Canvas := TCanvas.Create; try Canvas.Handle := GetWindowDC(0); try Bitmap := TBitmap.Create; try Bitmap.Width := Screen.DesktopWidth; Bitmap.Height:= Screen.DesktopHeight; Bitmap.PixelFormat := pfDevice; BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred( Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft, Screen.DesktopTop, Bitmap.Canvas.CopyMode); 74 A.1 Visualisierung des Puzzles Bitmap.SaveToFile(aFileName); finally Bitmap.Free; end; finally ReleaseDC(0, Canvas.Handle); end; finally Canvas.Free; end; end; {Template:Initialisierung von OpenGL} procedure glInit(); begin glEnable(GL_TEXTURE_2D); // Aktiviert Texture Mapping glShadeModel(GL_SMOOTH); // Aktiviert weiches Shading glClearColor(0.0, 0.0, 0.0, 0.5); // Bildschirm löschen (schwarz) glClearDepth(1.0); // Depth Buffer Setup glEnable(GL_DEPTH_TEST); // Aktiviert Depth Testing glDepthFunc(GL_LEQUAL); // Bestimmt den Typ des Depth Testing glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Qualitativ bessere Koordinateninterpolation InitTextures; Init(); end; {Template:Behandelt Größenveränderung des Fensters} procedure glResizeWnd(Width, Height : Integer); begin if (Height = 0) then Height := 1; glViewport(0, 0, Width, Height); // Setzt den Viewport für das OpenGL Fenster glMatrixMode(GL_PROJECTION); // Matrix Mode auf Projection setzen glLoadIdentity(); // Reset View // Perspektive den neuen Maßen anpassen. gluPerspective(45.0, Width/Height, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); // Zurück zur Modelview Matrix glLoadIdentity(); // Reset View end; //verarbeitet die Tastatureingaben procedure ProcessKeys; var rc,hv,k,temp,c,repeater:integer; begin if (keys[VK_ESCAPE]) then finished := true; if (keys[VK_Prior]) then zoom:=zoom+0.2; if (keys[VK_Next]) then zoom:=zoom-0.2; if (keys[ord(’W’)]) then begin 75 A Programme sleep(sleeper); markedRow:=(markedRow-1+d) mod d; end; if (keys[ord(’S’)]) then begin sleep(sleeper); markedRow:=(markedRow+1) mod d; end; if (keys[ord(’A’)]) then begin sleep(sleeper); markedCol:=(markedCol-1+d) mod d; end; if (keys[ord(’D’)]) then begin sleep(sleeper); markedCol:=(markedCol+1) mod d; end; if (keys[VK_LEFT]) then begin begin temp:=feld[markedrow][0]; for c:=1 to d-1 do begin feld[markedrow][c-1]:=feld[markedrow][c]; end; feld[markedrow][d-1]:=temp; end; sleep(sleeper); end; if (keys[VK_RIGHT]) then begin begin temp:=feld[markedrow][d-1]; for c:=d-1 downto 1 do begin feld[markedrow][c]:=feld[markedrow][c-1]; end; feld[markedrow][0]:=temp; end; sleep(sleeper); end; if (keys[VK_UP]) then begin begin temp:=feld[0][markedcol]; for c:=1 to d-1 do begin feld[c-1][markedcol]:=feld[c][markedcol]; end; feld[d-1][markedcol]:=temp; end; 76 A.1 Visualisierung des Puzzles sleep(sleeper); end; if (keys[VK_DOWN]) then begin begin temp:=feld[d-1][markedcol]; for c:=d-1 downto 1 do begin feld[c][markedcol]:=feld[c-1][markedcol]; end; feld[0][markedcol]:=temp; end; sleep(sleeper); end; if (keys[VK_RETURN]) then screentofile(inttostr(counter)+’.bmp’); if (keys[VK_SPACE]) then begin sleep(sleeper); for repeater:=1 to stepsPerFrame do begin counter:=counter+1; rc:=random(2); hv:=random(2); k:=random(d); if rc=0 then begin if hv=0 then begin temp:=feld[0][k]; for c:=1 to d-1 do begin feld[c-1][k]:=feld[c][k]; end; feld[d-1][k]:=temp; end else begin temp:=feld[d-1][k]; for c:=d-1 downto 1 do begin feld[c][k]:=feld[c-1][k]; end; feld[0][k]:=temp; end; end else begin if hv=0 then begin temp:=feld[k][0]; 77 A Programme for c:=1 to d-1 do begin feld[k][c-1]:=feld[k][c]; end; feld[k][d-1]:=temp; end else begin temp:=feld[k][d-1]; for c:=d-1 downto 1 do begin feld[k][c]:=feld[k][c-1]; end; feld[k][0]:=temp; end; end; end; end; end; {Template:Message-Behandlung des Programs festlegen} function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin case (Msg) of WM_CREATE: begin // Hier kann Zeugs rein das beim Programmstart ausgeführt werden soll end; WM_MOUSEMOVE: begin end; WM_CLOSE: begin PostQuitMessage(0); Result := 0 end; WM_KEYDOWN: // Taste als ’pressed’ markieren begin keys[wParam] := True; Result := 0; end; WM_KEYUP: // Taste als ’up’ markieren begin keys[wParam] := False; Result := 0; end; 78 A.1 Visualisierung des Puzzles WM_SIZE: // Größe anpassen begin glResizeWnd(LOWORD(lParam),HIWORD(lParam)); Result := 0; end; WM_TIMER : // Hier werden alle benutzten Timer behandelt begin if wParam = FPS_TIMER then begin // FPS berechnen... FPSCount :=Round(FPSCount * 1000/FPS_INTERVAL); //... und FPS+ Mischcounter ausgeben SetWindowText(h_Wnd, PChar(WND_TITLE + ’ [’ + IntToStr(FPSCount) + ’ FPS]’+’ Shuffle Count: ’+inttostr(counter))); FPSCount := 0; Result := 0; end; end; else // Standard-Behandlung aller anderen Messages Result := DefWindowProc(hWnd, Msg, wParam, lParam); end; end; {Template:Freigabe aller Fenster, Zeiger, Variablen} procedure glKillWnd(Fullscreen : Boolean); begin // Wenn Vollbild in Standardauflösung zurückkehren if Fullscreen then begin ChangeDisplaySettings(devmode(nil^), 0); ShowCursor(True); end; // Freigabe des Device und Rendering Contexts. if (not wglMakeCurrent(h_DC, 0)) then MessageBox(0, ’Release of DC and RC failed!’, ’Error’, MB_OK or MB_ICONERROR); // Löscht Rendering Context if (not wglDeleteContext(h_RC)) then begin MessageBox(0, ’Release of rendering context failed!’, ’Error’, MB_OK or MB_ICONERROR); h_RC := 0; end; // Gibt Device Context fre if ((h_DC > 0) and (ReleaseDC(h_Wnd, h_DC) = 0)) then begin MessageBox(0, ’Release of device context failed!’, ’Error’, MB_OK or MB_ICONERROR); h_DC := 0; end; // Schließt das Fenster if ((h_Wnd <> 0) and (not DestroyWindow(h_Wnd))) then begin 79 A Programme MessageBox(0, ’Unable to destroy window!’, ’Error’, MB_OK or MB_ICONERROR); h_Wnd := 0; end; // Entfernt window class Registrierung if (not UnRegisterClass(’OpenGL’, hInstance)) then begin MessageBox(0, ’Unable to unregister window class!’, ’Error’, MB_OK or MB_ICONERROR); hInstance := 0; end; end; {Template:Erstellt ein Fenster mit Passendem OpenGL Rendering Context} function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean; var wndClass : TWndClass; // Fenster Klasse dwStyle : DWORD; // Fenster Stil dwExStyle : DWORD; // Erweiterter Fenster Stil dmScreenSettings : DEVMODE; // Bildschirm Einstellungen (fullscreen, etc...) PixelFormat : GLuint; // OpenGL Einstellungen (Pixelformat) h_Instance : HINST; // aktuelle Instanz pfd : TPIXELFORMATDESCRIPTOR; // Einstellungen für das OpenGL Fenster begin h_Instance := GetModuleHandle(nil); // Instanz für’s Fenster holen ZeroMemory(@wndClass, SizeOf(wndClass)); // Daten in wndClass löschen with wndClass do // Setup der Fenster Klasse begin style := CS_HREDRAW or // Neuzeichenen wenn Fenster-Breite geändert CS_VREDRAW or // Neuzeichenen wenn Fenster-Höhe geändert CS_OWNDC; // Device Context exlusiv lpfnWndProc := @WndProc; // WndProc wird als Window Procedure gesetzt hInstance := h_Instance; hCursor := LoadCursor(0, IDC_ARROW); lpszClassName := ’OpenGL’; end; if (RegisterClass(wndClass) = 0) then // Fenster Klasse registrieren begin MessageBox(0, ’Failed to register the window class!’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit end; // Vollbild wenn Parameter Fullscreen = true if Fullscreen then begin ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings)); with dmScreenSettings do begin // Bildschirm Einstellungen werden festgelegt dmSize := SizeOf(dmScreenSettings); dmPelsWidth := Width; // Fenster Breite dmPelsHeight := Height; // Fenster Höhe dmBitsPerPel := PixelDepth; // Farbtiefe (32bit etc) 80 A.1 Visualisierung des Puzzles dmFields end; := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL; // Bilschirm Modus auf Vollbild setzen if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then begin MessageBox(0, ’Unable to switch to fullscreen!’, ’Error’, MB_OK or MB_ICONERROR); Fullscreen := False; end; end; // Wenn wir immer noch im Vollbildmodus if (Fullscreen) then begin dwStyle := WS_POPUP or WS_CLIPCHILDREN or WS_CLIPSIBLINGS; dwExStyle := WS_EX_APPWINDOW; ShowCursor(False); end else // Für Normale Fenster begin dwStyle := WS_OVERLAPPEDWINDOW or WS_CLIPCHILDREN or WS_CLIPSIBLINGS; dwExStyle := WS_EX_APPWINDOW or WS_EX_WINDOWEDGE; end; sind.... // // // // // Popup Fenster Stil Kein Zeichnen in Child Fenstern Kein Zeichnen in Sibling Fenstern Fenster im Vordergrund Mauszeiger verstecken // // // // // Überschneidung zulassen Kein Zeichnen in Child Fenstern Kein Zeichnen in Sibling Fenstern Fenster im Fordergrund Erhobener Rand // Das oben definierte Fenster wird erstellt h_Wnd := CreateWindowEx(dwExStyle, // Erweiterter Fenster Stil ’OpenGL’, // Name der Klasse WND_TITLE, // Fenster Titel (caption) dwStyle, // Fenster Stil 0, 0, // Fenster Position Width, Height, // Größe des Fensters 0, // Keine Paren-Windows 0, // Kein Menü h_Instance, // die Instanz nil); // Kein Parameter für WM_CREATE if h_Wnd = 0 then begin glKillWnd(Fullscreen); MessageBox(0, ’Unable to create window!’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit; end; // Den Device Kontext unseres Fensters besorgen h_DC := GetDC(h_Wnd); if (h_DC = 0) then begin glKillWnd(Fullscreen); 81 A Programme MessageBox(0, ’Unable to get a device context!’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit; end; // Das Pixelformat einstellen with pfd do begin nSize := SizeOf(TPIXELFORMATDESCRIPTOR); // Größe des Pixel Format Descriptor nVersion := 1; // Version des Daten Structs dwFlags := PFD_DRAW_TO_WINDOW // Buffer erlaubt zeichenen auf Fenster or PFD_SUPPORT_OPENGL // Buffer unterstützt OpenGL drawing or PFD_DOUBLEBUFFER; // Double Buffering benutzen iPixelType := PFD_TYPE_RGBA; // RGBA Farbformat cColorBits := PixelDepth; // OpenGL Farbtiefe cRedBits := 0; cRedShift := 0; cGreenBits := 0; cGreenShift := 0; cBlueBits := 0; cBlueShift := 0; cAlphaBits := 0; // Not supported cAlphaShift := 0; // Not supported cAccumBits := 0; // Kein Accumulation Buffer cAccumRedBits := 0; cAccumGreenBits := 0; cAccumBlueBits := 0; cAccumAlphaBits := 0; cDepthBits := 16; // Genauigkeit des Depht-Buffers cStencilBits := 0; // Stencil Buffer ausschalten cAuxBuffers := 0; // Not supported iLayerType := PFD_MAIN_PLANE; // Wird Ignoriert! bReserved := 0; // Anzahl der Overlay und Underlay Planes dwLayerMask := 0; // Wird Ignoriert! dwVisibleMask := 0; // Transparente Farbe der Underlay Plane dwDamageMask := 0; // Wird Ignoriert! end; // Gibt ein unterstützes Pixelformat zurück das dem geforderten so gut wie möglich enspricht PixelFormat := ChoosePixelFormat(h_DC, @pfd); if (PixelFormat = 0) then begin glKillWnd(Fullscreen); MessageBox(0, ’Unable to find a suitable pixel format’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit; end; // Das Pixelformat unseres Device Kontexts wird durch das neue ersetzt if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then begin glKillWnd(Fullscreen); MessageBox(0, ’Unable to set the pixel format’, ’Error’, MB_OK or MB_ICONERROR); 82 A.1 Visualisierung des Puzzles Result := False; Exit; end; // OpenGL Rendering Context wird erstellt h_RC := wglCreateContext(h_DC); if (h_RC = 0) then begin glKillWnd(Fullscreen); MessageBox(0, ’Unable to create an OpenGL rendering context’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit; end; // Der OpenGL Rendering Context wird aktiviert if (not wglMakeCurrent(h_DC, h_RC)) then begin glKillWnd(Fullscreen); MessageBox(0, ’Unable to activate OpenGL rendering context’, ’Error’, MB_OK or MB_ICONERROR); Result := False; Exit; end; // Initialisierung des Timers zur FPS-Berechnung SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil); // Das Fenster wird in Vordergrund gebracht ShowWindow(h_Wnd, SW_SHOW); SetForegroundWindow(h_Wnd); SetFocus(h_Wnd); // Das Fenster bekommt nochmal die Größe zugewiesen um OpenGl richtig zu initialisieren glResizeWnd(Width, Height); glInit(); Result := True; end; {Template:Main message loop for the application} function WinMain(hInstance : HINST; hPrevInstance : HINST; lpCmdLine : PChar; nCmdShow : Integer) : Integer; stdcall; var msg : TMsg; appStart : DWord; begin Finished := False; // Das Programm wird initialisiert (Fenster erstellen!) if not glCreateWnd(800, 600, FALSE, 32) then begin Result := 0; Exit; 83 A Programme end; appStart := GetTickCount(); // Die Zeit zum Programmstart nehmen // Main message loop: while not finished do begin if (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) then // Nach Windows-Messages suchen begin if (msg.message = WM_QUIT) then // Falls WM_QUIT dabei ist sind wir fertig finished := True else begin // Ansonsten wird die Message an das Programm weitergegeben TranslateMessage(msg); DispatchMessage(msg); end; end else begin Inc(FPSCount); // FPS Zähler erhöhen ElapsedTime := GetTickCount() - appStart; glDraw(); SwapBuffers(h_DC); ProcessKeys; // Programmlaufzeit berechnen // Szene zeichnen // Szene ausgeben // Tastatureingaben verarbeiten end; end; glKillWnd(FALSE); Result := msg.wParam; end; begin WinMain( hInstance, hPrevInst, CmdLine, CmdShow ); end. A.1.2 Unit1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type //Formular und Bedienelemente 84 A.1 Visualisierung des Puzzles TForm1 = class(TForm) torusModeBox: TCheckBox; lightBox: TCheckBox; spfTrackbar: TTrackBar; spflabel: TLabel; showselectedBox: TCheckBox; dimensionTrackbar: TTrackBar; dimensionLabel: TLabel; FixedPositionBox: TCheckBox; Label1: TLabel; Label2: TLabel; GroupBox1: TGroupBox; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; procedure spfTrackbarChange(Sender: TObject); procedure dimensionTrackbarChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var //Instanz des Formulars Form1: TForm1; //Anzahl Mischvorgänge pro Tastendruck stepsperframe:integer=1; //Dimension dim:integer=10; implementation {$R *.dfm} //Änderung der Anzahl der Mischvorgänge procedure TForm1.spfTrackbarChange(Sender: TObject); begin stepsperframe:=spftrackbar.position; spflabel.Caption:=’Mischvorgänge: ’+inttostr(spftrackbar.Position); end; //Änderung der Dimension procedure TForm1.dimensionTrackbarChange(Sender: TObject); begin dim:=dimensiontrackbar.position; dimensionLabel.caption:=’Dimension: ’+inttostr(dim); end; end. 85 A Programme A.2 Durchmesser, n=3 Ordner ’Durchmesser’. Im Fall n = 3 ergibt sich für den Durchmesser 8. unit Unit1; //Dieses Programm berechnet den Durchmesser des Graphen im Fall n=3. Es wird //eine Warteschlange benutzt (TQueue). Im Feld visited wird abgespeichert, ob //ein Zustand bereits besucht wurde. Ausgehend von einem Zustand (Identität) //werden alle Schiebeoperationen angewandt und die neuen Zustände der //Warteschlange hinzugefügt und als besucht markiert, falls es noch nicht //besucht wurde. Das erste Element der Warteschlange wird nun immer entfernt //und auf dieses werden wieder alle Schiebeoperationen angewandt, wobei die //neuen, unbesuchten Zustände einer neuen Warteschlange hinzugefügt werden. //Der Durchmesser wird in diesem Fall um 1 erhöht. Irgendwann werden keine neuen //Zustände mehr gefunden, der Durchmesser ist dann erreicht. Wir können als //Startknoten die Identität wählen, da der Graph transitiv ist. interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Math, StdCtrls; const n=3; m=3; //Spalten //Zeilen type //das Formular TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; //Typ für die Permutation TPerm=array[1..m] of array[1..n] of integer; //Typ für ein Element der Warteschlange mit Zeiger auf den Nachfolger TQueueElement=class private public perm:TPerm; next:TQueueElement; end; //Warteschlange 86 A.2 Durchmesser, n=3 TQueue = class private public first:TQueueElement; last:TQueueElement; function isEmpty():boolean; procedure add(p:TPerm); function removeFirst():TQueueElement; end; var Form1: TForm1; visited:array[1..362880] of boolean; implementation //Hash-Funktion. Hasht die Permutationen der Größe nach in ein Feld mit n^2! //Plätzen. function hash(f:TPerm):integer; var h:integer; s:set of 1..9; c,i:integer; begin s:=[1,2,3,4,5,6,7,8,9]; h:=1; i:=0; for c:=1 to f[1][1] do begin if c in s then inc(i); end; h:=h+(i-1)*40320; s:=s-[f[1][1]]; i:=0; for c:=1 to f[1][2] do begin if c in s then inc(i); end; h:=h+(i-1)*5040; s:=s-[f[1][2]]; i:=0; for c:=1 to f[1][3] do begin if c in s then inc(i); end; h:=h+(i-1)*720; s:=s-[f[1][3]]; 87 A Programme i:=0; for c:=1 to f[2][1] do begin if c in s then inc(i); end; h:=h+(i-1)*120; s:=s-[f[2][1]]; i:=0; for c:=1 to f[2][2] do begin if c in s then inc(i); end; h:=h+(i-1)*24; s:=s-[f[2][2]]; i:=0; for c:=1 to f[2][3] do begin if c in s then inc(i); end; h:=h+(i-1)*6; s:=s-[f[2][3]]; i:=0; for c:=1 to f[3][1] do begin if c in s then inc(i); end; h:=h+(i-1)*2; s:=s-[f[3][1]]; i:=0; for c:=1 to f[3][2] do begin if c in s then inc(i); end; h:=h+(i-1)*1; s:=s-[f[3][2]]; Result:=h; end; //prüft, ob Warteschlange leer ist function TQueue.isEmpty:boolean; begin Result:=(first=nil); end; //hängt ein neues Element in die Warteschlange ein procedure TQueue.add(p:TPerm); var e:TQueueElement; 88 A.2 Durchmesser, n=3 begin e:=TQueueElement.Create; e.perm:=p; if (first=nil) then first:=e; if (last<>nil) then last.next:=e; e.next:=nil; last:=e; end; //entfernt das erste Element der Warteschlange function TQueue.removeFirst():TQueueElement; var temp:TQueueElement; begin temp:=first; first:=first.next; Result:=temp; end; //Verschiebung einer Zeile in einer Permutation nach links function linksshift(p:TPerm; i:integer):TPerm; var new:TPerm; j:integer; begin new:=p; for j:=2 to n do begin new[i,j-1]:=p[i,j]; end; new[i,n]:=p[i,1]; Result:=new; end; //Verschiebung nach rechts function rechtsshift(p:TPerm; i:integer):TPerm; var new:TPerm; j:integer; begin new:=p; for j:=1 to n-1 do begin new[i,j+1]:=p[i,j]; end; new[i,1]:=p[i,n]; Result:=new; end; //Verschiebung nach oben function upshift(p:TPerm; j:integer):TPerm; var new:TPerm; i:integer; begin new:=p; for i:=2 to m do 89 A Programme begin new[i-1,j]:=p[i,j]; end; new[m,j]:=p[1,j]; Result:=new; end; //Verschiebung nach unten function downshift(p:TPerm; j:integer):TPerm; var new:TPerm; i:integer; begin new:=p; for i:=1 to m-1 do begin new[i+1,j]:=p[i,j]; end; new[1,j]:=p[m,j]; Result:=new; end; {$R *.dfm} {$MAXSTACKSIZE 214748364} //hier wird der eigentliche Algorithmus ausgeführt procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; perm:TPerm; queue,newqueue:TQueue; done:boolean; temp:TQueueElement; tempperm:TPerm; d: integer; begin done:=false; d:=0; //die Ausgangspermutation wird initialisiert for i:=1 to m do begin for j:=1 to n do begin perm[i,j]:=j+(i-1)*n; end; end; //die erste Warteschlange wird erzeugt und die Ausgangspermutation wird //hinzugefügt queue:=TQueue.Create; queue.add(perm); //die Ausgangspermutation wird als besucht markiert 90 A.2 Durchmesser, n=3 visited[hash(perm)]:=true; while (not done) do begin //die Warteschlange für die neu erzeugten, noch nicht besuchten Zustände //wird erzeugt newqueue:=TQueue.Create; //solange die aktuelle Warteschlange nicht leer ist while (not queue.isEmpty) do begin //entferne das erste Element temp:=queue.removeFirst; //und wende alle Schiebeoperationen auf dieses an for i:=1 to m do begin tempperm:=linksshift(temp.perm,i); //wurde das neue Element noch nicht besucht, füge es in die neue //Warteschlange ein und markiere es als besucht if (not visited[hash(tempperm)]) then begin newqueue.add(tempperm); visited[hash(tempperm)]:=true; end; tempperm:=rechtsshift(temp.perm,i); if not visited[hash(tempperm)] then begin newqueue.add(tempperm); visited[hash(tempperm)]:=true; end; end; for j:=1 to n do begin tempperm:=upshift(temp.perm,j); if not visited[hash(tempperm)] then begin newqueue.add(tempperm); visited[hash(tempperm)]:=true; end; tempperm:=downshift(temp.perm,j); if not visited[hash(tempperm)] then begin newqueue.add(tempperm); visited[hash(tempperm)]:=true; end; end; end; //wurden keine neuen Elemente erzeugt, ist man fertig if newqueue.isEmpty then begin done:=true; end 91 A Programme //sonst speichere die neue Warteschlange und beginne von vorne, erhöhe den //Durchmesser um 1 else begin queue:=newqueue; d:=d+1; end; end; //Ausgabe des entgültigen Durchmessers memo1.lines.add(’d=’+inttostr(d)); end; end. program Project1; uses Forms, Unit1 in ’Unit1.pas’ {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. A.3 Durchmesser, n=2 Ordner ’DurchmesserN=2’. Wir listen nur die Änderungen zum vorherigen Programm auf. Das Ergebnis ist Durchmesser = 4. //es ändern sich nur Konstanten- und Variablendeklarationen const n=2; //Spalten m=2; //Zeilen var Form1: TForm1; visited:array[1..24] of boolean; \\und die Hash-Funktion function hash(f:TPerm):integer; var h:integer; s:set of 1..4; c,i:integer; begin s:=[1,2,3,4]; h:=1; i:=0; 92 A.3 Durchmesser, n=2 for c:=1 to f[1][1] do begin if c in s then inc(i); end; h:=h+(i-1)*6; s:=s-[f[1][1]]; i:=0; for c:=1 to f[1][2] do begin if c in s then inc(i); end; h:=h+(i-1)*2; s:=s-[f[1][2]]; i:=0; for c:=1 to f[2][1] do begin if c in s then inc(i); end; h:=h+(i-1)*1; s:=s-[f[2][1]]; Result:=h; end; 93 Abbildungsverzeichnis 2.1 Die Permutation R2 auf einem 4 × 4-Torus. . . . . . . . . . . . . . . . . . . . . 9 2.2 Die Permutation D1 ◦ R1 ◦ U1 ◦ L1 ◦ D1 auf einem n × n-Torus. . . . . . . . . . 11 2.3 Die Permutationen C1 (k, l) und A4 (k, l). . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Links die Permutationen C1 (k, l) und C2 (k, l) und rechts die resultierende Permutation B1 (k, l). 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Beispiel: Tauschen der 7 an ihre Position in B. Spaltenwechsel durch A2 (2, 3) gefolgt von A2 (2, 2). Dann Zeilenwechsel durch C4 (2, 1). Als nächstes würde man die 13 mittels B1 oder B2 in die richtige Spalte schieben, um dann mit C4 die richtige Zeile zu erreichen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6 Eine beliebige Transposition als Komposition von benachbarten Vertauschungen. 18 2.7 Zwei Permutationen des 4 × 4-Puzzles. Jedes Feld hat Manhattan-Abstand n. . 5.1 Die möglichen Positionen der 1 in einer Permutation der Menge S sind grau unterlegt, hier im Fall n = 5 und n = 6. . . . . . . . . . . . . . . . . . . . . . . 5.2 21 41 Die möglichen Positionen der 1 in einer Permutation der Menge S sind grau unterlegt, Positionen der 1 in einer Permutation im Rand ∂S von S sind dunkelgrau. Hier der Fall n = 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.3 Die Positionen der 1 einer Permutation aus An sind grau unterlegt. . . . . . . . 49 5.4 Schnellere Vertauschung zweier beliebiger Felder. Mit Ci und Bi wird das dunkelgraue Feld an die richtige Position getauscht (Schritte 1-6). Es folgt eine benachbarte Transposition (Schritt 7), um das hellgraue Feld in die richtige Ausgangsposition zu bringen. Dann werden in der Reihenfolge die Inversen der Schritte 5-1 angewendet, denn Schritt 6 wurde schon mit der Transposition korrigiert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 58 Die Felder, die sich an verschiedenen Positionen befinden, können nicht mehr gekoppelt werden ohne andere schon gekoppelte Felder voneinander zu entfernen, denn jede Zeile und Spalte enthält mindestens ein gekoppeltes Feld. . . . . . . 61 95 Abbildungsverzeichnis 6.2 Beispiel im Fall n = 200. Jede Farbe steht für eine Zahl. Im Bild links oben ist die linke obere Ecke weiß und steht für die 1. Die rechte untere Ecke ist komplett schwarz für 2002 . Die Abbildung zeigt das Puzzle nach 0 (Bild oben links), n2 = 40.000 (oben rechts), n2 ln n ≈ 200.000 (unten links) und n3 /3 = 2.000.000 96 (unten rechts) Mischvorgängen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 A.1 Screenshots des Programms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Literaturverzeichnis [AF94] David Aldous and James Allen Fill. Reversible Markov Chains and Random Walks on Graphs - Chapter 6: Cover Times. 1994. [Ald83] David J. Aldous. Random Walks on Finite Groups and Rapidly Mixing Markov Chains. 1983. [BD92] Dave Bayer and Persi Diaconis. Trailing the Dovetail Shuffle to its Lair: Annals of Applied Probability, Volume 2, Number 2, 294-313. 1992. [Beh99] Ehrhard Behrends. Introduction to Markov Chains with Special Emphasis on Rapid Mixing. Vieweg, 1999. [Kan03] Ravi Kannan. Rapid Mixing in Markov Chains. 2003. [Kle06] Achim Klenke. Wahrscheinlichkeitstheorie. Springer, 2006. [Lov93] László Lovász. Random Walks on Graphs: A Survey. 1993. [LPW08] David A. Levin, Yuval Peres, and Elizabeth L. Wilmer. Markov Chains and Mixing Times. American Mathematical Society, 2008. [Sah09] Nadim Sah. Diplomarbeit: Mixing Times for Markov Chain Models in Genetics. Technische Universität Berlin, 2009. 97