程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

深搜DFS & 广搜BFS #学习心得

balukai 2025-01-07 10:44:54 文章精选 11 ℃

核心算法思想

1. 定义状态 - 问题求解树

2. 问题求解树是思维逻辑结构,非实体程序数据结构

DFS - 深度搜索算法

通常用递归的方式扩展状态

BFS - 广度搜索算法,适合求解最优化问题(比如最短路径)

定义

通常需要先定义一个状态数据结构,放入BFS广搜状态队列

BFS广搜遍历队列步骤(边吃边拉模式)

1. 取出状态

2. 扩展状态

3. 弹出状态

DFS 和BFS 算法思维逻辑上的主要区别

遍历状态树的方式不同。DFS深度搜索的遍历方式类似对状态树的前序遍历,通常使用递归实现。BFS广度搜索的遍历方式是分层遍历,通常借助队列的入队和弹出操作实现。

Tips

方向数组,通常在计算相邻坐标偏移量的时候用到的数组,数值相对固定。

4向(十字)

dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};

8向(米字)

dir[8][2] = {0, 1, 1, 0, 0,-1,-1, 0

1,-1,-1, 1, 1, 1,-1,-1};

最近发表
标签列表