最適な近視迷路ソルバー


10

私はGoogle BlockyのMazeデモをいじり回していましたが、迷路を解決したい場合は左手を壁に向けるという古いルールを思い出しました。これは、単純な接続の迷路で機能し、有限変換器で実装できます。

私たちのロボットを、以下のアクションとオブザーバブルを備えたトランスデューサーで表現してみましょう:

  • アクション:前進()、左折()、右折(
  • 観測可能:前方の壁()、前方の壁なし(

次に、左側の迷路ソルバーを次のように構築できます(私の怠惰な描画を許してください)。

迷路を解決するトランスデューサー

B A

  1. B

  2. B

私の2つの質問:

  1. 上に描かれたものよりも優れた有限オートマトンはありますか?確率的トランスデューサを許可するとどうなりますか?

  2. 必ずしも単純に接続されていない迷路を解くための有限オートマトンはありますか?


@jmadと私はこの質問についてチャットでかなり実りある議論をしました。あなたが質問(の特に定義を考えている場合よりも良い)、私はトランスクリプトをチェックアウトをお勧めします。
Artem Kaznatcheev

この質問がAIにどのように関係するかはわかりませんが(特に、インスタンスデータを与えられた場合に動作を変更しないようにするためのエージェント)、その分野の専門家ではありません。
ラファエル

3
@Raphael迷路解決と経路探索(BFS、DFSのレビューからA *まで、およびそれ以降)は、イントロAIコースの基本的なカリキュラムです。私は、インテリジェンスとして、これは特にエキサイティングなものではないことに同意しますが、AIが私に何かを教えてくれた場合、AIのほとんどは単なる検索問題です。
Artem Kaznatcheev

回答:


6

私が質問をよく理解していれば、スピードアップのトリックを適用して、無限の迷路で高速オートマトンを取得できると思います(出口が境界の1つに配置されている場合):単純に内部状態を使用して、図のように、有限のステップ数と行き止まりを認識します。

ここに画像の説明を入力してください

A

同様に、有限数の異なる固定サイズの形状をエンコードして行き止まりを回避し、オートマトンを高速化できます。結果として、出口が境界に配置された、単純に接続された迷路に「最適な」近視迷路ソルバーはありません。

入口が迷路の内側に配置され、出口も境界に配置されている場合、このトリックは機能します。しかし、出口が迷路の中に配置されている場合、すべての場所を訪問する必要があるため、出口は機能しません。この場合、近視ソルバーが最適です。

明らかに、同じトリックを適用して、単純に接続されていない迷路を解決することはできません(ただし、接続されていない各コンポーネントのサイズに上限が固定されている場合は機能します)。


これは、境界での入口と出口(単純に接続された迷路のサブクラス)の場合のクールなトリックです。この制限されたケースでは、私が定義した順序に最小要素がないことを示しています。単純に接続されたすべての迷路に一般化できるとは思いません(これは、左側の次の作業で設定されています)。
Artem Kaznatcheev

@ArtemKaznatcheev:このトリックは、迷路の内側に入り口があり、境界線から出る迷路でも機能すると思います。さらに、図のようなサブ迷路がある(無限に多い)迷路でも機能します)。この点を明確にするために質問を編集します。
Vor

k

4k1

5

質問1

あなたのより良いという定義は、有限が制限的すぎるという意味で厳しすぎると思います(しかし、私にはこれ以上の定義はありません)。

R=(Ri)iRiiLARALRLARAL

ARRAR

確率論的トランスデューサは、これらの無限の迷路のセットでは確定的トランスデューサがより高速になるため、おそらく除外される可能性があります。

質問2OPの議論に感謝)

いいえ(出典:Lothar Budachによるこの画期的な論文。定理はFrank Hoffmannによるこの記事の要約でより明確に述べられています。)


ええ、左側と右側の壁を同等にするために、標準の変換(回転や反射など)の下で迷路にいくつかの等価クラスを定義する必要があります。残念ながら、あなたの質問1セクションは私の最初の質問に答えません。比較不可能な(「より良い」部分順序の)ソルバー(対称性の仮定を行わない場合の左側と右側など)があることを示しますが、そのようなものがないことは証明しません左手よりも良い。
Artem Kaznatcheev

ABABLRRLLRAALLA

ABBA

AB

#{A(M)<B(M)|M|n}/#{M|M|n}=o(1)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.