Miklix

クラスカルのアルゴリズム迷路ジェネレータ

出版された: 2025年2月16日 17:57:54 UTC
最終更新日 2026年1月12日 8:59:16 UTC

クラスカルのアルゴリズムを用いて完璧な迷路を作成する迷路ジェネレータです。このアルゴリズムは、中程度の長さの通路と多くの行き止まり、そして比較的直線的な解を持つ迷路を作成する傾向があります。

このページは、できるだけ多くの人がアクセスできるように、英語から機械翻訳されたものです。残念ながら、機械翻訳はまだ完全な技術ではないため、エラーが発生する可能性があります。もしよろしければ、こちらでオリジナルの英語版をご覧ください:

Kruskal's Algorithm Maze Generator

クラスカルのアルゴリズムは、迷路生成に応用できる最小全域木アルゴリズムです。特に完全迷路の作成に効果的です。クラスカルのアルゴリズムの代替として、同じく最小全域木アルゴリズムであるプリムのアルゴリズムがありますが、どちらも同じ迷路を生成すること、そしてクラスカルのアルゴリズムの方が実行速度が速いことから、私はプリムのアルゴリズムを実装していません。

完全な迷路とは、迷路のどの地点からどの地点へも、ちょうど1本の道がある迷路のことである。つまり、堂々巡りにはならないが、行き止まりにはしばしば遭遇し、引き返してくることを余儀なくされる。

ここで生成される迷路マップには、スタートとゴールの位置がないデフォルトバージョンも含まれています。迷路のどの地点からでも、他のどの地点からでも解があります。インスピレーションを得たい場合は、スタートとゴールの推奨位置を有効にし、その2つの間の解を見ることもできます。


新しい迷路の生成








クラスカルのアルゴリズムについて

クラスカルのアルゴリズムは、アメリカの数学者、統計学者、コンピュータ科学者であるジョセフ・バーナード・クラスカル・ジュニアによって考案されました。彼は1956年に論文「グラフの最短全域木と巡回セールスマン問題」の中でこのアルゴリズムを初めて説明しました。

このアルゴリズムは、グラフの最小全域木 (MST) を見つけるように設計されており、サイクルを回避しながら、すべての頂点が可能な限り最小の合計エッジ重みで接続されていることを保証します。

クラスカルのアルゴリズムが迷路生成にどのように機能するか

ステップ1: 初期化

  • 迷路内の各セルを個別のセット (固有のコンポーネント) として扱います。
  • 隣接するセル間のすべての壁を潜在的なエッジとしてリストします。

ステップ2:壁を分類する

  • 壁をシャッフルするかランダムに並べます。真のクラスカルアルゴリズムとして実装する場合は、壁をランダムに並べます(迷路生成には重みは必要ないため)。

ステップ3:壁を処理する

  • シャッフルされた壁を反復処理します。
  • 壁で区切られた 2 つのセルが異なるセットに属している場合 (つまり、迷路内でまだ接続されていない場合)、壁を削除してセットを結合します。
  • すでに同じセット内にある場合は、壁をスキップします (サイクルを回避するため)。

ステップ4: 完了するまで続ける

  • すべてのセルが接続されて単一のスパニング ツリーが形成されるまで、このプロセスを繰り返します。
  • 最後に、すべてのセルはループや分離されたセクションなしで他のセルに接続されます。

クラスカルのアルゴリズムは集合のマージに依存しているため、Union-Findアルゴリズムを使用することで最適化できます。Union-Findアルゴリズムは、迷路生成時に連結されたセルを効率的に追跡する方法を提供します。Union-FindアルゴリズムのPHP実装は、こちらでご覧いただけます:リンク

さらに読む

この投稿が気に入った場合は、次の提案も気に入るかもしれません:


BlueskyでシェアFacebookでシェアLinkedInでシェアTumblrでシェアXでシェアLinkedInでシェアPinterest にピン留めする

ミケル・クリステンセン

著者について

ミケル・クリステンセン
ミッケルはmiklix.comの開発者でありオーナーです。プロのコンピューター・プログラマー/ソフトウェア開発者として20年以上の経験を持ち、現在はヨーロッパの大手IT企業に常勤している。ブログを書いていないときは、さまざまな興味、趣味、活動に余暇を費やしている。