Wo finde ich Code, um zufällige selbstvermeidende Spaziergänge auf zwei- und dreidimensionalen Gittern zu generieren, deren Seitenlängen Zweierpotenzen sind? Die Wanderung sollte durch jeden Punkt des Gitters verlaufen. Wie kann ich einen zufälligen Hamilton-Pfad auf einem großen oder Gittergraphen finden?
Die Verteilung muss nicht vollständig gleichmäßig sein, im Allgemeinen sollte das Gitter jedoch faltig aussehen. Das zur Erzeugung des Pfades verwendete Verfahren sollte eine geringe Wahrscheinlichkeit haben, extrem lange Strecken einer geraden Linie zu erzeugen.
random-walks
lattices
J. Antonio Perez
quelle
quelle
Antworten:
Ein Verfahren ist in Ein kombinatorischer Algorithmus zur effektiven Erzeugung langer, maximal kompakter Gitterketten beschrieben .
quelle
Hier sind zwei Javascript-Implementierungen eines Algorithmus zum Abtasten von Hamilton-Pfaden in zweidimensionalen Gittergraphen: http://clisby.net/projects/hamiltonian_path/ und http://clisby.net/projects/hamiltonian_path/hamiltonian_path_v1.html (Dies ist Mein Code. Die Implementierung unter dem ersten Link bietet mehr Funktionen, während Sie mit der zweiten die Reihenfolge der vom Pfad besuchten Websites herunterladen können.)
Die Javascript-Programme erzeugen Hamilton-Pfade auf einem n × n-Gitter unter Verwendung der Backbite-Bewegung, die in der Arbeit „Sekundärstrukturen in langen kompakten Polymeren“ von Richard Oberdorf, Allison Ferguson, Jesper L. Jacobsen und Jané Kondev, Phys. Rev. E 74, 051801 (2006). Papier über das APS erhältlich (Abonnement erforderlich) oder als Vordruck auf arXiv unter https://arxiv.org/abs/cond-mat/0508094
Der Code enthält einen einstellbaren Parameter, der bestimmt, wie nahe Ihre Probe an der gleichmäßigen Verteilung liegt, und Sie können die Methode (Markov-Kette Monte Carlo mit Backbite-Bewegungen) mit ein wenig Arbeit an 3D-Gittergraphen anpassen.
quelle