迷路にハマった!

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

棒倒し法で絵が書けるか試してみた

絵が出る迷路を棒倒し法で描けるのか?

迷路の自動生成について詳しく解説しているサイトを見かけたことがある。

 

確か、どこかの大学の人が書いていた真面目なサイト。

 

クラスタリングという言葉を使ってとてもわかりやすく自動生成迷路について語っていた。

 

たぶん、そのページでは、クラスタリングで作成された迷路のメリットとして、絵が出る迷路が簡単に作成できるとアピールしていた。(だいぶ前に読んだサイトなので記憶が定かではないが、、、)

 

クラスタリングを使った手法は、道のばし法に近い(完全に同じとは言い切れないかもしれないが)。

 

確かに、絵が出る迷路を作成するには、正解の道を最初に設定する。だから、道を決定してから壁を特定するような手法が効率的なのかもしれない。

 

しかし、手描きで迷路を描く時、道をすべて書いてから、壁を描くという作業はかなり非効率になる。

 

もし、方眼紙片手に、道のばし法で、絵が出る迷路を描くとなると、かなり面倒。

 

前々から思っていたのだが、棒倒し法や壁のばし法でも、簡単に絵が出る迷路を描けるはず。

 

(棒倒し法や壁のばし法であれば、薄い鉛筆の線で正解の道を描いておいて、あとで消すだけで済む。)

 

そこで、今回はそれを検証してみることにした。

 

壁のばし法の場合、問題ないことはほぼ明らかなので、最初から検証しない。以下では、棒倒し法で絵が出る迷路を作ってみる。

 

正解の道を描く

絵が出る迷路は、最初に正解の道を描いて、その後、それ以外の道や壁を決定するという手順で作成される。

 

今回は、絵を描くのは面倒なので、適当な正解の道を描いた。絵を描いても、結果は同じだと思う。

 

f:id:sasatarokun:20141031143146p:plain

正解の道を塞がないように棒倒し法を実行

棒倒し法について詳しい解説はしない。(どこかのサイトで詳しく解説されていると思う。)

 

普通の棒倒し法と異なるのは、正解の道を塞いでは行けないこと。

 

f:id:sasatarokun:20141031143454p:plain

 

全く問題なかったが・・・

f:id:sasatarokun:20141031143519p:plain

 

もしかしたら、正解の道を先に描く場合、棒が倒せなくなるとか、外枠から孤立した壁ができてしまうんじゃないかと思ったが、今回の実験では、全く問題なかった。

 

ただし、棒倒し法の場合、正解の道の作り方によっては、例外が発生する可能性もあるかもしれない。(面倒なので、実際にコードを書いて検証するつもりはないが。)

 

追記:やっぱり棒倒し法は使えない・・・後日、再検討したので以下の記事を参照のこと。

棒倒し法で絵を描く方法の続き - 迷路にハマった!