Zufälliger, sich selbst vermeidender Gitterzyklus innerhalb eines gegebenen Begrenzungsrahmens


25

Im Zusammenhang mit dem Slither-Link- Puzzle habe ich mich gefragt: Angenommen, ich habe ein Gitter aus quadratischen Zellen, und ich möchte einen einfachen Zyklus von Gitterkanten finden, der unter allen möglichen einfachen Zyklen gleichmäßig zufällig ist.n×n

Ein Weg, dies zu tun, wäre, eine Markov-Kette zu verwenden, deren Zustände Mengen von Quadraten sind, deren Grenzen einfache Zyklen sind und deren Übergänge darin bestehen, ein zufälliges Quadrat zum Umdrehen auszuwählen und das Umdrehen beizubehalten, wenn die modifizierte Menge von Quadraten noch einen einfachen Zyklus als hat seine Grenze. Man kann auf diese Weise von einem einfachen Zyklus zu einem anderen gelangen (unter Verwendung von Standardergebnissen über das Vorhandensein von Schalen), so dass dies schließlich zu einer gleichmäßigen Verteilung konvergiert, aber wie schnell?

Alternativ gibt es eine bessere Markov-Kette oder eine direkte Methode zur Auswahl einfacher Zyklen?

ETA: In diesem Blog-Beitrag finden Sie einen Code zur Berechnung der Anzahl der von mir gesuchten Zyklen und Hinweise auf OEIS für einige dieser Zahlen. Wie wir wissen, ist das Zählen fast dasselbe wie das zufällige Erzeugen, und ich schließe aus dem Fehlen eines offensichtlichen Musters bei der Faktorisierung dieser Zahlen und dem Fehlen einer Formel im OEIS-Eintrag, dass es wahrscheinlich keine bekannte einfache direkte Methode gibt . Damit bleibt jedoch die Frage offen, wie schnell diese Kette konvergiert und ob es eine bessere Kette gibt, die weit offen ist.


1
Die Grenze der Mengen, die von der OEIS-Sequenz gezählt werden, sind nicht notwendigerweise einfache Zyklen, zum Beispiel für 3 × 3, einer der 218 hat alle Quadrate mit Ausnahme der Mitte, und weitere vier werden durch weiteres Entfernen einer Ecke gegeben.
Colin McQuillan

1
Für 2xn-Gitter sind die Zahlen wie in oeis.org/A059020 angegeben . Für 3xn bin ich mir ziemlich sicher, dass sie 6,40,213,1049,5034,23984,114069,542295,2577870,12253948,58249011,276885683,1316170990,6256394122,29739651711,141366874247, ... (nicht in OEIS) sind. Ich habe die Transfermatrix so eingerichtet, dass sie von Hand berechnet wird, aber ich habe sie mit einer maschinengenerierten Matrix verglichen. Der einzige Unterschied bestand darin, dass die Hand korrekt und die Maschine falsch war. (Dies sollte sich im 3x3-Fall zeigen - die Maschinenmatrix hätte einen Oktomino mit einem Loch in der Mitte zugelassen.)
David Eppstein

1
Sie sollten diese Sequenz an Neil Sloane senden, damit er sie im OEIS ablegen kann.
Peter Shor

1
@ David: Danke. Wahrscheinlich ist es Zeit für mich, die Übertragungsmatrixmethode gründlicher zu lernen.
Yoshio Okamoto

2
@ David: Du hast gerade zwei Stunden meines Lebens mit diesem Link zum Rätsel verschwendet. Thx!
Domotorp

Antworten:


1

Es scheint, dass Sie, da Sie nur die Zählungen für die Anzahl der Zyklen in einem Diagramm verwenden, um einen Zyklus zufällig auszuwählen, wenn Sie eine zufällige Annäherung für diese Anzahl hätten, dennoch einen Zyklus ungefähr gleichmäßig auswählen könnten.

Es ist zu beachten, dass die Anzahl der Zyklen in einem Graphen , der die Kante ( u , v ) enthält , gleich der Anzahl der Zyklen in G - ( u , v ) plus der Anzahl der einfachen Pfade von u nach v in G - ( u , v) ist ) . Mit einer Polynomzeit-Approximation für die Anzahl der u - v- Pfade kann die Polynomzeit-Approximation erreicht werden, indem schrittweise jeweils eine Flanke bis zu G aufgebaut wird, die sich annähert, während Sie gehen. G(u,v)G(u,v)uvG(u,v)uvG

Gn×n(u,v)uvG(u,v)

CvsveNveCuNuvsG[V(C{vs,ve})]uve(ve,u)

Auf diese Weise wird eine polynomielle Anzahl von Kanten ausgewählt, von denen jede eine kleine Anzahl von Berechnungen eines Polynomzeitnäherungsalgorithmus erfordert. Somit kann ein Zyklus gleichmäßig gewählt werden.

Ich habe derzeit eine Stapelaustausch-Frage , in der Referenzen für Algorithmen zur Näherung der Anzahl schneller Pfade angefordert werden. Ich habe an einigen Stellen gelesen, dass diese Algorithmen existieren, sie aber noch nicht gefunden haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.