私の単純なプロジェクトで使用するために、私は少し封鎖しました。
グリッドには、「壁」と「オープンスペース」という一連のポイントがあります。グリッドの外側のスペースは壁と見なされます。このグリッドには任意の数の開いているポイントがあり、グリッド内の1つの特定のブロックをオープンスペースから壁に変更した場合に、接続されているポイントが変わるかどうかを判断する必要があります。
これを行うための効率的な方法は何ですか?
例:緑の正方形が壁またはオープンスペースの場合、赤い正方形の間のパスの有無が変わるかどうかを判断します。(追記:ひどいグリッドについて心からお詫び申し上げます)
今のところ、ある種のセルオートマトンが最適だと思いますが、よくわかりません。私は以前にパスファインディングを見たことがありますが、この種の問題に巻き込まれたものは実際には見たことがありません。
注意:パスの長さは関係ありません(最大長はわかっています)。パスは存在する必要があります。したがって、ポイント間の最適なパスを見つける必要はありません。
ああ、それは問題ではないはずですが、私はこのプロジェクトをJavaで書いていますが、任意の言語(または擬似コード)またはアルゴリズムの英語の説明で十分です。(私はほとんどのCurly Bracket言語を知っていますが、HaskellとLISPは限られていますが、すべて知っています。)