高级数据结构——B*算法(Branch Star)

算法原理

前置定义

  1. 探索节点:

为了叙述方便,我们定义在寻路过程中向前探索的节点(地图格子)称为探索节点,起始探索节点即为原点。(探索节点可以对应为A*中的开放节点)

  1. 自由的探索节点:

探索节点朝着目标前进,如果前方不是阻挡,探索节点可以继续向前进入下一个地图格子,这种探索节点我们称为自由探索节点;

  1. 绕爬的探索节点:

探索节点朝着目标前进,如果前方是阻挡,探索节点将试图绕过阻挡,绕行中的探索节点我们成为绕爬的探索节点;

算法过程

  1. 起始,探索节点为自由节点,从原点出发,向目标前进;

  2. 自由节点前进过程中判断前面是否为障碍,

    a、不是障碍,向目标前进一步,仍为自由节点;
    b、是障碍,以前方障碍为界,分出左右两个分支,分别试图绕过障碍,这两个分支节点即成为两个绕爬的探索节点;

  3. 绕爬的探索节点绕过障碍后,又成为自由节点,回到2);

  4. 探索节点前进后,判断当前地图格子是否为目标格子,如果是则寻路成功,根据寻路过程构造完整路径;

  5. 寻路过程中,如果探索节点没有了,则寻路结束,表明没有目标格子不可达;

演示算法

起始,此时为自由节点,从原点出发,向目标前进。
在这里插入图片描述
遇到障碍,分出上下两条路,分别试图绕过障碍。
在这里插入图片描述
衍生出来的两个节点绕过障碍后,变为自由节点,继续朝着目标前进。此时又遇到障碍。
在这里插入图片描述
继续试图绕过障碍。
在这里插入图片描述
直到有节点到达目标位置。算法结束。
在这里插入图片描述

与A*算法的性能比较

寻路次数比较(5秒钟寻路次数)
在这里插入图片描述

  1. 无障碍情况

A*
在这里插入图片描述
B*
在这里插入图片描述
效率提升约为44倍

  1. 无障碍情况

A*
在这里插入图片描述
B*
在这里插入图片描述
效率提升约为28倍

  1. 环形障碍

A*
在这里插入图片描述
B*
在这里插入图片描述
效率提升约为132倍

  1. 封闭障碍(目标不可达)

A*
在这里插入图片描述
B*
在这里插入图片描述
效率提升约为581倍

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值