ラティス上で自己回避ランダムウォークを生成するアルゴリズム


9

辺の長さが2のべき乗である2次元および3次元の格子上でランダムな自己回避歩行を生成するコードはどこにありますか?ウォークはラティス上のすべてのポイントを通過する必要があります。具体的には、またはグリッドグラフ上でランダムなハミルトニアンパスを見つけるにはどうすればよいですか?2×22×2×2

分布は完全に均一である必要はありませんが、一般的に格子はしわに見えるはずです。パスを生成するために使用される方法は、直線の非常に長いストレッチを生成する可能性が低い必要があります。


2
ここでアルゴリズムについて質問してもかまいません。しかし、ソフトウェアの推奨はトピック外です。また、1。問題をより厳密に定義する2.より多くの労力を費やして、質問への回答の試みを示すこともできます。
Apiwat Chantawibul 2017

2
たとえば、グリッドグラフ上のランダムなハミルトニアンパスを意味しますか?
Apiwat Chantawibul 2017

はい; それがまさに私が言ったことです。
J.アントニオペレス

2
そしてそれはランダムな世代なので。特定のパスが他のパスよりも生成される可能性が高いかどうかを気にしますか?つまり、可能なパスごとに均一のチャンスが必要ですか?(一律のチャンスはおそらく難しくなるでしょう。)
Apiwat Chantawibul 2017

1
正確にはディストリビューションの要件は何ですか?あなたはあなたが均一な分布を必要としないと言います。では、ハミルトニアンパスを出力するアルゴリズムは大丈夫ですか(常に同じパスであっても)?そうでない場合、具体的には要件は何ですか?また、処理したいグラフのクラスをより正確にできますか?グリッドグラフでハミルトニアンパスを見つけることは、一般にNP困難ですが、グラフがより制限されたクラスのグラフからのものであるように思えます。
DW

回答:



4

2次元グリッドグラフ上のハミルトニアンパスをサンプリングするアルゴリズムの2つのjavascript実装は次のとおりです:http : //clisby.net/projects/hamiltonian_path/およびhttp://clisby.net/projects/hamiltonian_path/hamiltonian_path_v1.html(これは私のコード。最初のリンクの実装にはより多くの機能がありますが、2番目のリンクでは、パスでアクセスした一連のサイトをダウンロードできます。

JavaScriptプログラムは、Richard Oberdorf、Allison Ferguson、Jesper L. Jacobsen、JanéKondev、Physによる論文「長いコンパクトポリマーの二次構造」で説明されているバックバイト移動を使用して、n×nグリッド上にハミルトニアンパスを生成します。Rev. E 74、051801(2006)。APS(サブスクリプションが必要)またはhttps://arxiv.org/abs/cond-mat/0508094のarXivのプレプリントとして入手可能な紙

コードには、サンプルがどの程度均一分布に近づくかを決定する調整可能なパラメーターが含まれており、わずかな作業で3Dグリッドグラフにメソッド(バックバイト移動を伴うマルコフ連鎖モンテカルロ)を適応させることができます。


3
これらのプログラムはどのアルゴリズムを使用していますか?これはプログラミングサイトではないので、実装よりもアルゴリズムに関心があります。
Yuval Filmus

提案をありがとう、使用したアルゴリズムへの参照を追加しました。
ネイサン

投稿ありがとうございます。私は実際には他の方法よりもバックバイト方法をよく理解していると思いますが、バックバイトプロセスを効率的に行う方法がわかりません。私はそれを行う方法を理解しています。すぐにではありません。これについてもう少し詳しく教えてもらえますか?私はクラスでグラフ理論をまだカバーしていませんが、コンピューターサイエンスのこの領域には、ちょっと新しいです。どうもありがとうございます!
J.アントニオペレス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.