Di mana saya dapat menemukan beberapa kode untuk menghasilkan jalan acak yang menghindar dari diri sendiri pada kisi 2 dan 3 dimensi yang panjang sisinya adalah kekuatan dua? Jalan kaki harus melewati setiap titik pada kisi. Lebih khusus, bagaimana saya bisa menemukan jalur hamiltonian acak di jalan besar atau grafik kotak?
Distribusi tidak harus sepenuhnya seragam, namun secara umum kisi-kisi akan terlihat kusut. Metode yang digunakan untuk menghasilkan jalur harus memiliki probabilitas rendah untuk menghasilkan garis lurus yang sangat panjang.
random-walks
lattices
J. Antonio Perez
sumber
sumber
Jawaban:
Suatu prosedur dijelaskan dalam Algoritma kombinatorial untuk menghasilkan rantai kisi kompak yang panjang dan maksimal secara efektif .
sumber
Berikut adalah dua implementasi javascript algoritma untuk sampel jalur Hamiltonian pada grafik kotak 2 dimensi: http://clisby.net/projects/hamiltonian_path/ dan http://clisby.net/projects/hamiltonian_path/hamiltonian_path_v1.html (Ini adalah kode saya. Implementasi di tautan pertama memiliki lebih banyak fitur, sedangkan yang kedua memungkinkan Anda untuk mengunduh urutan situs yang dikunjungi oleh jalur.)
Program javascript menghasilkan jalur Hamiltonian pada grid n × n menggunakan langkah backbite yang dijelaskan dalam makalah "Struktur sekunder dalam polimer kompak panjang" oleh Richard Oberdorf, Allison Ferguson, Jesper L. Jacobsen dan Jané Kondev, Phys. Pd E 74, 051801 (2006). Kertas tersedia melalui APS (diperlukan berlangganan) atau sebagai pra-cetak di arXiv di https://arxiv.org/abs/cond-mat/0508094
Kode ini mencakup parameter yang dapat disesuaikan yang menentukan seberapa dekat dengan distribusi seragam sampel Anda, dan Anda dapat menyesuaikan metode (rantai Markov Monte Carlo dengan gerakan backbite) ke grafik kotak 3d dengan sedikit kerja.
sumber