だから私は次の問題があります:
x x y 次元のグリッドが与えられた場合、1 つの隅 (たとえば左上) から始まり、別の隅 (右下) で終わり、すべての頂点を通過するルートの数を計算します。
したがって、私の現在の方法は、すべての可能なパスを試し、フィニッシュに到達してすべてのノードをトラバースするパスをカウントすることで、力ずくで実行するだけです。動作している間、それは O(n^2) であり、非常に急速に信じられないほど遅くなります。パスがすべての頂点を通過する必要があるため、組み合わせで行う方法がわかりません。
より複雑なアルゴリズムを調べたところ、オイラー経路を計算するための Hierholzer のアルゴリズムは多少関連しているように見えますが、このためにノードを複数回トラバースできないため、完全ではありません。
そのままでは、私のプログラムは動作しますが、うまく動作しません。より効率的にしたいと考えています。私が使用できるより良いアルゴリズムはありますか?
編集これまでの回答に感謝します。明確にするために、2D グリッド内のすべてのノードは n/e/s/w で接続されています
また、グリッドは正方形である必要はありません