歩数マップと最短経路~WMMC秘伝のタレ 後編~
初めましての方は初めまして。
そうでない方はお疲れ様です。
主力のPCがSSD破損,マウス関係ほぼ全てのデータを消失したぱわぷろです…。
(バックアップは面倒くさくてもコマ目に取りましょうね…お兄さんとの約束です)
マウス合宿やプチ大会でお世話になった方々に感謝を。そのことは別記事でまた述べたいと思います。
前回に引き続き、迷路関係のことをつらつらと述べていきます。
メインは歩数マップと最短経路の導出です。
歩数マップ
歩数マップはゴール座標から各地点までの歩数を表す地図のことです。
マイクロマウス、クラシックマウスの迷路は共にxy座標系の格子点で表せることは前回述べました。ここで迷路を移動することは、x座標(y座標)をインクリメントすることと同義ですね。これを一歩と定義します。
マウスが空間を飛び越えられるなら別ですが、物理的にx座標とy座標はどちらか1つ、かつ1ずつしか増えません。
したがって、座標の変化の回数=歩数と呼べるわけです。
ならば、ゴール座標から逆算して各座標からゴールまでの歩数を記録した歩数マップが作れますね。(当然壁も考慮しますが…)
具体的には次のような感じ
1.歩数変数、歩数マップ配列を初期化(変数は1、配列は254)
2.ゴール座標での壁情報から行ける区画を確認
3.行ける区画に歩数を書き込む
4.現座標の区画が埋まるまでループ
最短経路導出
探索で認識できた壁情報から最短経路を導出する話。
といっても上の歩数マップでほとんど説明しちゃったんですね…。未知壁は「壁あり」として上の歩数マップを再生成するだけですね。
エセ最短といってもいいレベルかもしれませんが,歩数の観点では最短経路はでますね。
本来は最短経路用の歩数マップ作成の際に,直線と方向転換で優先度を設定してマップを作ることで「機体の最速経路」を出すことができるはずです。
ゼミでも言っていますが「最短経路≠最速経路」なので,自分の機体にあった最短経路作成(のコーディング)が大事です。
まだ斜めとかやってないからその辺は分からんちんですが,ぜひ機体を完成させて一緒に学んでいきましょう。
内容がいつもより薄い気がしますが今回はここまでです。
…東日本間に合う気がしない笑