广度优先搜索是什么意思(广度优先搜索图解)

广度优先搜索是什么意思(广度优先搜索图解)本系列为笔者初学 c c 和游戏 AI 开发的学习过程 算法为主 不涉及到具体的游戏开发软件学习 如 unity 虚幻 4 等 若有错误请在评论区留下批评意见 以上图为例 我们先搜索节点 1 再搜索节点 1 的全部子节点 2 3 4 接着搜索节点 2 的全部子节点 以此类推 直到树的全部节点都搜索过 对于图来说 广度优先搜索的过程也是一样的 直到把一个节点的全部子节点遍历完

大家好,我是讯享网,很高兴认识大家。



本系列为笔者初学c/c++和游戏AI开发的学习过程,算法为主,不涉及到具体的游戏开发软件学习(如unity,虚幻4等),若有错误请在评论区留下批评意见。 

  

  对于图来说,广度优先搜索的过程也是一样的。直到把一个节点的全部子节点遍历完,才会进行下一个节点的遍历。


讯享网

  广度优先搜索的实现可归纳为以下几个步骤:

 

  对应在游戏场景中,整个分割后的地图就是一个个节点组成的图(数学上),每个节点的子节点就是该节点周围的8个节点。

  因此,与A*算法类似,我们用一个openList存储未遍历的节点,closeList存储遍历过的节点,并且返回closeList列表当做需要渲染的搜索路径。

这里笔者犯了个错误,应该先讲BFS再讲A*算法,因为A*算法是BFS算法的改良,很多概念应该先理解了BFS才更好。

  我们用指针来记录从起始节点A到目标节点B的路径节点,并返回一个列表:

  在算法主体 findPath()方法中实现BFS:

  在代码实现过程中,我们因为项目需求而将BFS算法的步骤做了简单的拆解,不仅记录全部的搜索过程,还记录了一条从A到B的路径。

  当然,图里的步骤 2.1 需要消耗大量的计算资源,后面如果有需要可以再进一步的优化。

  由于我们之前在Game类中编写大地图的时候,已经为项目拓展留下了空间,因此只要在原来的基础上加入新的模块,用来获取BFS算法返回的结果即可。

  

参考

小讯
上一篇 2025-06-17 10:53
下一篇 2025-04-25 13:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/141000.html