A 左手摸墻算法的描述。
  • 當左手邊沒有墻時,左轉前進一步;
  • 當左手邊有墻且前方沒有墻時,前進一步;
  • 當左手邊有墻且前方也有墻時,右轉前進一步;
  右手摸墻算法,只需將上面的“左”換作“右”,“右”換作“左”。

B 摸墻算法存在的問題,路徑冗余度搞高
比如在一個封閉房間中,左手摸墻算法和右手摸墻算法,使用的總能耗差異很大。 
  這個問題需要用用遺傳算法的思想剞劂。
多次使用左手和右手摸墻算法,依靠積累經驗來得到概率結論,然后根據不同條件進行學習之后得知下一次采取哪種摸墻。

C 摸墻算法的性能改善
這個策略只是用與多次重復走一個迷宮的情況,對于走陌生的迷宮,不適用。
當作出一次移動時,在路徑中查找先前是否經過相同的點,如果有那么就說明到這一步為止完成了一個圈子,在遺傳算法中,把它從路徑中除去。
多次行動測試后,將會改善能耗效果,得到一點經驗概率結果。
去除圈子的算法是:
假設左手摸墻走,取得所有已經過路徑記為dimension[all]
遍歷dimension all to 0, 碰見重復的路徑節點,證明,這個點所經歷的左手摸墻路徑是一個圈
將這個點標記,以后在這里跳過這個位置的左手摸墻而采用直走跳過這個節點。

思考:如何給小車在開放空間中,做環形路徑點的標記?

D 深度優先搜索算法:
程序運行時將按照從上到下,從左到右的順序遍歷整棵樹。
對于真實環境的物理小車,需要為小車安裝指南針或者陀螺儀才行。理論上加速度傳感器也能做到,但是算法上也許要稍微復雜一點。

深度優先算法按以下規則執行遍歷:
  1. 1,判斷當前節點是否為目標節點,如是,返回成功。
  2. 2,檢查當前節點是否還有未訪問過的子節點,若否goto 4。     =>     4,檢查當前節點是否有上層節點,若有訪問上層節點,設為當前節點。goto 1。
  3. 3,訪問子節點,設為當前節點,設已訪問。goto 1。
  4. 5,返回失敗。

E 廣度優先搜索算法:
  1. 1、從圖中某個頂點V0出發,并訪問此頂點;
    2、從V0出發,訪問V0的各個未曾訪問的鄰接點W1,W2,…,Wk;然后,依次從W1,W2,…,Wk出發訪問各自未被訪問的鄰接點;
    3、重復步驟2,直到全部頂點都被訪問為止。
廣度優先的好處在于,如果有多個出口,那么第一個被找到的出口消耗時間最短,廣度最小,也即路勁最短。
另一個額外的好處是,可以知道所有的出口。得到一個統計結果。