2D迷路を生成するアルゴリズム[終了]


回答:


21

迷路を作るさまざまな方法がたくさんあります。それらの膨大なリストとその説明がここにあります:http : //www.astrolog.org/labyrnth/algrithm.htm

「完璧」で説明したものを使用したと思います。


非常に素晴らしいリソース、まさに私が探していたもの。
jdeseno

そのサイトが大好きで、何年も前に使用されていました。
ザンロック

8

私は、クラスカルのアルゴリズムが作成するきつく巻かれた迷路を好みます。

Kruskalのアルゴリズムの標準的な記述は、データ構造の選択に関するしゃれに頼りながら、グラフ内の位置と位置グループを区別できず、初心者を混乱させる記述のあいまいさを招くため、不適切です。したがって、私はクラスカルの用語を拒否します。

次の用語を使用します。

  • グラフ
    • 迷路自体。
  • ノード
    • 迷路内の場所。正方形の迷路では、これは正方形のセルです。
  • エッジ
    • 2つのノード間の接続。正方形の迷路では、これは長さ1のバーです。
  • ツリーグループ
    • ツリーとして配置された、空のノードのセット

そして、それらから、私たちは得る:

  1. グループの作成GTGをするために、グラフツリーグループツリーグループを含みます、
  2. 移入GTGあなたの迷路内のすべての場所のために、一つのノードを含む1つのツリーグループと
  3. エッジセットEを作成する
  4. Eを迷路のすべての有効なエッジで埋めます
  5. GTGに複数のグループがあり、Eが空ではない場合:
  6. EからランダムエッジrEを選択ます
  7. rEのエンドポイントp1およびp2特定する
  8. EからrEを削除
  9. どのグループp1p2が属しているかを確認します(それぞれp1gp2g)。
  10. 場合P1GP2Gは木のグループに参加、異なるP1GP2GのP1 > - p2のため、木に参加、他に一本の木のすべてのグループ所有権を書き換えます。
  11. 手順5に戻ります。
  12. エッジが残っていないが、複数のツリーがある場合、グラフが接続されていないか、バグがあります。
  13. ツリーが1つしかない場合は、完全なループのない迷路になります。

1
GUIプロジェクトがあり、GUIでランダムな2D迷路を構築する必要がありました。これはまさに私がそれをやった方法であり、私はクラスカルを使用していることに気づかなかった笑 グラフを使用していたことに間違いなく気付きました。
ブライアンハリントン


1

1つの簡単な方法は、北の壁と西の壁のリストを作成してから、それらを並べ替えることです。各部屋に番号を付けます。次に、2つの部屋に同じ番号がない限り、リストの壁の1つを爆破し、同じ番号を持つ他のすべての部屋に番号の1つを伝播します。壁がなくなるまで続けてください。これは、長方形の迷路、または実際に「潜在的に接続された部屋」のリストを提供できる他の迷路で機能します。さらに、プログラミングは非常に簡単です。




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.