关于 dfs深度优先搜索
·dfs是什么
dfs是一个针对图和树的遍历算法
·dfs的原理
dfs是由栈的形式实现的,通过栈进行路径储存
·dfs的注意事项
1 剪枝 剪枝是为了减少时间成本
2 回溯 回溯回到原来路径
3 还原 回到原来路径时,要还原现场
·dfs的思想
假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中 所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
·dfs的特点
选定一个出发点后进行遍历,能前进则前进,若不能前进,回退一步再前进,或再回退一步后继续前进。依此重复,直到所有与选定点相通的所有顶点都被遍历。
·显然,dfs是一个递归的过程
//遍历图上所有节点 Dfs(V) { if(V是旧节点) return; else { 将V标记为旧点; 对和V相邻的每个节点U { Dfs(U); } } } int main() { 将所有点标记为新点; while(在图中能找到新点k) Dfs(k); } //在图上寻找路径 bool Dfs(V) { if(V为终点) return true; if(V为旧点) return false; 将V标记为旧点; 对和V相邻的每个节点U { if(Dfs(U)==true) return true; } return false; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】