迷路にハマった!

最近、迷路にハマっている。特に迷路のアルゴリズムが面白い。何か、アルゴリズムを活用できる分野があると思うのだが。。。

迷路作成アルゴリズム『分割法』

昨日は暇だったので、このブログを立ち上げて、だらだらと文章を書きながら迷路について考えてみた。

 

あまりに雑な記事になったので、ちょっとは役に立ちそうな話題を提供しておこう。

 

迷路のアルゴリズムとして有名なのは、棒倒し法、穴あけ法、壁のばし法の3つだと思う。

 

今回紹介するのは、分割法(?)。

 

上記の3つの手法とは大きく異なるので、面白いと思う。

 

迷路作成で一番重要なのは、道がループしないこと。たとえば、下の図のように4つにわかれた区域を進む場合、4つのマスを通過するのは許されるが、5つ目に進むと、道がループするので、迷路として成立しない。

f:id:sasatarokun:20141006180129p:plain

 

したがって、この4分割の画像から生成される迷路は以下のようになる。

f:id:sasatarokun:20141006180208p:plain

 

上の図ではコの字型になっているが、全部で4つのパターンが考えられると思う。

 

実はこの単純な4分割と道の生成プロセスを繰り返すだけでも、迷路を作ることができる。マイナーな手法なので余り知っている人は少ないと思う。

 

では、分割法で迷路を作成してみよう。

 

まず、道の幅を固定するために正方形の下絵を書く。外周は、壁。

それを4分割する。

 

f:id:sasatarokun:20141006180642p:plain

 

この4つの区画がループしないように、経路を考える。

今回は、コの字型にしてみた。

そして、道の幅は、最初に書いた青色の正方形に合わせる。

各区画をつなぐことができれば、どの位置でも良い。

 

f:id:sasatarokun:20141006180800p:plain

 

つぎに、最初に分割した4つの区画の一つを選んで、更に4分割する。

そして、同じようにループしない道を作成する。

 

f:id:sasatarokun:20141006180954p:plain

 

あとは、同じように、4分割と道の作成を繰り返すだけである。

すべての区画が分割されるまで繰り返すと、迷路が完成する。

 

f:id:sasatarokun:20141006181054p:plain

 

最初の工程で、左上から左下にコの字を描くような経路にしているので、スタートとゴールは、左上と左下に位置づける。

 

これで完成!

 

f:id:sasatarokun:20141006181125p:plain