Onde posso encontrar algum código para gerar percursos aleatórios e evitáveis em treliças bidimensionais e tridimensionais cujos comprimentos laterais são potências de dois? A caminhada deve passar por todos os pontos da treliça. Mais especificamente, como posso encontrar um caminho hamiltoniano aleatório em uma grandeou gráfico da grade?
A distribuição não precisa ser completamente uniforme; no entanto, em geral, a rede deve parecer enrugada. O método usado para gerar o caminho deve ter baixa probabilidade de produzir trechos extremamente longos de linha reta.
random-walks
lattices
J. Antonio Perez
fonte
fonte
Respostas:
Um procedimento é descrito em Um algoritmo combinatório para geração eficaz de longas cadeias reticuladas maximamente compactas .
fonte
Aqui estão duas implementações javascript de um algoritmo para amostrar caminhos hamiltonianos em gráficos de grade bidimensionais: http://clisby.net/projects/hamiltonian_path/ e http://clisby.net/projects/hamiltonian_path/hamiltonian_path_v1.html (Este é meu código. A implementação no primeiro link possui mais recursos, enquanto o segundo permite baixar a sequência de sites visitados pelo caminho.)
Os programas javascript geram caminhos hamiltonianos em uma grade n × n usando o movimento de backbite descrito no artigo “Estruturas secundárias em polímeros compactos longos” de Richard Oberdorf, Allison Ferguson, Jesper L. Jacobsen e Jané Kondev, Phys. Rev. E 74, 051801 (2006). Artigo disponível através do APS (requer assinatura) ou como uma pré-impressão no arXiv em https://arxiv.org/abs/cond-mat/0508094
O código inclui um parâmetro ajustável que determina a proximidade da distribuição uniforme da amostra e você pode adaptar o método (cadeia de Markov Monte Carlo com movimentos de backbite) aos gráficos da grade 3D com um pouco de trabalho.
fonte