私は、パスファインディングの概念と、プログラムが最も効率的な方法でポイントAからポイントBを探す方法を理解しており、A*の概念に漠然と精通しています。しかし、迷路を通り抜ける方法を見つけるのではなく、閉じた迷路の中で、廊下を対角線上に置くことができない最長の廊下を見つけようとしている場合はどうでしょうか。
これが私の迷路の例です:
1 1 0 1
0 0 1 1
1 0 1 0
1 0 1 0
許可されたパスとして1を使用し、無効なパスとして0を使用する場合、最長のパスは5で、座標は(0,3)、(1,2)、(1,3)、(2,2)、(3、 2)。
この情報を再帰的に見つけるにはどうすればよいですか?
私は(0,0)から始めて、上、下、左、右に移動して、それらが可能な動きであるかどうかを確認する方法について頭を悩ませてきましたが、私が思いついたバージョンでは、重複と繰り返しのカウントが発生します。