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,直到全部顶点都被访问为止。
广度优先的好处在于,如果有多个出口,那么第一个被找到的出口消耗时间最短,广度最小,也即路劲最短。
另一个额外的好处是,可以知道所有的出口。得到一个统计结果。