重ね探査の壁情報保存
探査途中でスタックしてしまったときに、重ね探査が有効なのは数日前に書いた。
既知の壁がいくらかあるだけでも、探査パターンが変わって、苦手なパターンを回避するのにも効果的。
というか、探査時間の短縮よりもこちらの方が重要なくらいだったり。
その時、スタックしたあたりの壁情報をどこまで再利用するかについて。
探査途中の壁情報はなるべく再利用したいが、スタックした前後の壁情報は、信頼性が低いと思われる。
やり方は色々あると思うけれど、自分で実装したのは、時間で管理する方法。
0.区画分のメモリ(クラシックなら256区画分)を準備する。
1.探査走行で壁情報を更新するたびに、当該区画のメモリをゼロクリアする。
2.全区画分のメモリを一定間隔でインクリメントする。(オーバーフロー注意)
このような方法で、区画ごとに壁情報が、いつ更新されたかの情報も残す。
マウスが探査中にスタックした(と判定した)ら、若いデータ(更新後数秒以下とか)を削除して未探査区画とする。
シンプルな実装だけれど、全面探査の走破には効果的だった。
| 固定リンク | 0

コメント