CSP 2022 备战 搜索算法
DFS:
深度优先搜索算法,简称深搜,英文名DFS
我们把它想象成一个迷宫,DFS算法的核心思路就是一条路走到黑,不撞南墙不回头
面对岔路,我们无动于衷,选择一条路一直走就是
那么,倘若走的是死胡同怎么办?
DFS提供的思路是:回头是岸,回到上一次选择的路口,选择另一条路走到黑
这种回到上一个路口的方式,称作回溯算法
通过这种算法,我们可以走遍每一个岔路,最终找到出口
DFS的伪代码如下:
1 void dfs(int k)//k代表递归层数,或者说要填第几个岔路 2 { 3 if(所有岔路已经走遍了) 4 { 5 判断最优解; 6 return; 7 } 8 for (枚举这个岔路中能构成终点的选项)//这是当终点不唯一时的判断 9 { 10 if(这个选项是合法的) 11 { 12 记录下这个空; 13 dfs(k+1); 14 取消这个空; 15 } 16 } 17 }
BFS:
广度优先搜索算法,简称光搜,英文名BFS
BFS的算法思路大致是优先考虑每种状态和初始状态的距离,与初始状态越接近的情况越先考虑
所以每个时刻要做的事就是上个时刻每个状态拓展出的新的状态
实现方式是队列
先将初始状态加入队列中,
然后每次都取出队首,
找出队首能访问到的状态,
再将其压入队列,如此反复,直到队列为空
这样就可以保证所采用的是最短路径

浙公网安备 33010602011771号