Zufälliges Puzzeln

Werbung
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
Herunterladen