« FAT32 | トップページ | 撤収 »

2014年11月14日 (金)

重ね探査の壁情報保存

探査途中でスタックしてしまったときに、重ね探査が有効なのは数日前に書いた。
既知の壁がいくらかあるだけでも、探査パターンが変わって、苦手なパターンを回避するのにも効果的。
というか、探査時間の短縮よりもこちらの方が重要なくらいだったり。

その時、スタックしたあたりの壁情報をどこまで再利用するかについて。

探査途中の壁情報はなるべく再利用したいが、スタックした前後の壁情報は、信頼性が低いと思われる。

やり方は色々あると思うけれど、自分で実装したのは、時間で管理する方法。

0.区画分のメモリ(クラシックなら256区画分)を準備する。

1.探査走行で壁情報を更新するたびに、当該区画のメモリをゼロクリアする。

2.全区画分のメモリを一定間隔でインクリメントする。(オーバーフロー注意)

このような方法で、区画ごとに壁情報が、いつ更新されたかの情報も残す。

マウスが探査中にスタックした(と判定した)ら、若いデータ(更新後数秒以下とか)を削除して未探査区画とする。

シンプルな実装だけれど、全面探査の走破には効果的だった。

|

« FAT32 | トップページ | 撤収 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 重ね探査の壁情報保存:

« FAT32 | トップページ | 撤収 »