2017年9月27日水曜日

【C#:アルゴリズム】 経路探索 【深さ優先探索 等】

C#学習中にCodeIQ等のサイトで力試しをしていて、アルゴリズムについて詰まった時のメモ

■アルゴリズムの種類(いつか利用するときの名前メモ)
  1. 深さ優先探索
  2. 幅優先探索
  3. ダイクストラ法 
  4. 双方向探索
  5. 分岐限定法
  6. A*(A-star)

■深さ優先探索

  1. 学習・参考にしたサイト
    1. アルゴリズム初心者向けの基礎と入門(一番分かりやすかった)
    2. 良くわからない深さ優先探索
    3. 全探索アルゴリズム入門
    4. お気楽C言語プログラミング入門 
    5. Wikipedia(深さ優先探索)
    6. 深さ優先探索と幅優先探索の簡単な実装方法
       
  2. C#でプログラミングする上で役に立った機能
    1. スタック(MSDN)
  3. 1.1のサイトを参考にプログラミングした際の要注意ポイント
    1. スタック処理のタイミング(分岐点に差し掛かった時)
    2. 探索済み経路を補完するリストは全て-1で初期化する事で判断をし易くする。
    3. 迷路の探索場所をセル番地化する構造体の利用方法
    4. セル番地の作成とインデックスの作成方法
      1. Index = x + MazeWidth * y
        Cell = (Index % MazeWidth , Index / MazeWidth)
        ※余り:X(横の位置) 商:Y(縦の位置) になる
    5. 各セル事に何処へ進めるかを記録し続け、ゴールから逆に辿る事で
      ゴールに行きつかない分岐を最終的に無視する事が出来る。