总结——DFS && BFS
Posted travelller
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结——DFS && BFS相关的知识,希望对你有一定的参考价值。
深度优先搜索和广度优先搜索
1. 思路
深度优先搜索伪代码:
void dfs(状态A){ if (A不合法) return; if (A为目标状态) 输出; if (A不为目标状态) dfs(A+x); }
广度优先搜索伪代码:
Q.push(head) while (!Q.empty()){ temp=Q.front(); Q.pop; if (temp为目标状态) 输出; if (temp不合法) continue; if (temp合法) Q.push(x);//x表示temp在搜索树中的所有子节点 }
2. 适用范围——如何判断用深搜还是广搜?
DFS:可以不重不漏枚举所有可达目标状态的路径。
BFS:效率高,适用于找最快到达目标状态的路径。占用空间大。
① “最快”、“最短”、“最近”——广搜
② 没有深度限制,深搜可能永远搜不到头——广搜
以上是关于总结——DFS && BFS的主要内容,如果未能解决你的问题,请参考以下文章