迷路を探索するプログラムを作っています。
組んだプログラムのルールとして、自分の周囲8コマを探知し、その中で未だ踏んだことのない道をランダムに選択する、という風にルールを設定しました。一度踏んだ道は通れないように組んであります。
サンプルプログラムを見ていただくとわかるのですが、このルールだと赤いゴールにたどり着かずに自滅することがかなりの確率で起こり得ます。
プログラムの方で、「自滅しないように判断しつつ道を選択する」という組み方は可能でしょうか?
かなり難しそうですが・・・・。
こうした問題に詳しい方、あるいはそうでない方も、ご興味、あるいはご助言お持ちの方の回答お待ちしております。
サンプルプログラム
一度通ったかどうか関係なしに分岐点では完全にランダムに道を選択すればいいのでは?
回答ありがとうございます。
それだと、あまりにもアホな動きに見えるような気がして・・・・。
ある程度、進んでます!みたいな意志がキャラに感じられるようにしたいのです。
あ、すみません。回答の意図がよく読めてませんでした・・・。
やりたいこと,というか条件を明確にしてください.
> 二度同じ道を通ってもいいのであれば…
という回答が付いていますが,そもそも「一度踏んだ道は通れない」が絶対的なルール(この話の前提条件)なのであればそのような話をしても無駄ですし.
探索者にどこまで情報を与えても良いのかという話も必要です.
迷路全体の全てのデータを知っている前提としてよいのか否かでアルゴリズムは全然変わるでしょうし,
情報が制限されているとしても
・迷路全体のサイズやその中での自身の現在座標を知ることはできるのか?
・ゴールがどこにあるのか?を最初から知らされているのか?
等々でやれることが変わるでしょう.
「自滅」=「行き止まりにたどり着く」であれば,
曲がり角に実際に行き着くよりも前にその曲がった先が行き止まりだと知っているならば,「そっちに行かない」ということはできるでしょうけども,
少なくとも曲がり角に行ってみるまでその先を知り得ないならば,原理的に「自滅」を回避するように道を選択するなんてことはできないのではありませんか?
回答ありがとうございます。
回答してくださった通り、この問題を考えるにあたって、もっとも「生産的」、かつ「興味をそそられる」設定について考える必要性がありますね。
僕としてはターン毎に一ます動ける、ターン毎に知り得るのは自分の周囲8マスの情報、という設定が最初に浮かんだものです。なので、「戻る」操作を許す必要性がありそうです。
この問題においては、どのような設定で考えてゆくのが適切か、ということがまず興味の対象となりそうです。
回答3件
あなたの回答
tips
プレビュー