2018年2月5日月曜日

作業日誌的な

マイクロマウスの最短路導出がちょっと速くなった.

最短路導出には優先度付きキューを用いたダイクストラ法を利用しているが,
http://kuuso1.hatenablog.com/entry/2015/12/20/212620

https://www.slideshare.net/mobile/yosupo/ss-46612984
を参考にして,ダイクストラ法でよく使われるという枝刈りを採用したら,まあまあ速くなった.
具体的には全日本決勝迷路(2011~2017)で元々50ms~150msかかっていたのが30~60msになったという感じ.

速くなってはいるが,未知区画を壁なしとして探索しながら経路導出するにはまだ遅すぎるし,単に経路導出するだけなら元々十分速いので,進化としては中途半端という感じ. 規則性のあるグラフなので、何かしらグラフ固有の性質を利用すればさらに高速化出来る気もするが…

あと,壁が少ない迷路でテストしていたら,壁が全くない迷路よりも以下の迷路の方が計算に時間がかかっていたのが面白かった. (壁なし : 5s,以下の迷路 : 10s) 壁が一切ない方が各地点までの最短路が素直に求まり,優先度付きキューにゴミが溜まりにくいからだろうか.
経路導出や探索アルゴリズムにとって最悪の迷路がどのような迷路なのかを考えるのも面白いかもしれない.