算法基础--dfs
来源:互联网 发布:淘宝销量和评价 编辑:程序博客网 时间:2024/05/22 03:05
dfs
- dfs:搜索和遍历算法:访问V(走了这一步后发生了什么),对所有邻接V的没访问过的U递归调用dfs(U)
- 图的表示:邻接矩阵o(n2):简单,邻接表o(n+e):适合边少的图
- 城堡问题:用遍历算法染色。图已经包含在城堡数组中,不需要额外表示
- 踩方格:受步数n控制的dfs,因为是求所有路径而不是简单的遍历所以在回退时要把访问标记清空。
- 例题:
- 7-1红与黑:应用dfs,开数组check记录是否被访问过,图的边信息隐含在题目数组中
- 7-2马踏棋盘:记录路径深度,按最优的方式处理相邻接的点,记录具体路径时要注意回退错误的尝试
- 7-3棋盘问题:按行递增尝试的方法可以避免重复路径,
- 小结:dfs的关键就是找到题目隐含的图中相邻结点且用最合适的顺序去遍历他们。当要求路径的长度时,需要用深度k来控制。同时dfs可以用bool返回值来判断可行性,用int来返回可能的路径数量。当处理所有路径问题时一定要注意返回前要将状态恢复。当处理从任一点开始的dfs时,要对每个点做一次以其为起点的dfs(如果路径与顺序无关则要避免重复计算)。
- 剪枝:可行性剪枝到达不到终点,最优性剪枝必然不是最优解
- 寻路问题:1放弃大于目前最优解的路径2记录中间结果的减枝:到达相同点如果剩余的钱也相同,那么长的那条可以剪枝
搜索和状态:每个状态对应图上一个点,有边表示状态间可以转移。枚举所有的状态,
生日蛋糕:抽象成搜素问题,由题目条件多次剪枝
- 佐助和名人:类似寻路问题记录中间状态剪枝
阅读全文
0 0
- 算法基础--dfs
- 基础算法之DFS应用
- 基础算法 之 BFS & DFS
- BFS,DFS,DIJKSTRA算法基础练习
- dfs(深度优先算法)搜索基础
- 图论算法基础-BFS与DFS
- 算法基础-->图论(BFS,DFS)
- 详解ACM基础算法—DFS深度优先搜索算法
- acm算法基础1 素数环与DFS
- 算法基础——DFS(深度优先遍历)
- 算法学习基础篇(一):搜索(DFS、BFS)
- 基础算法(四)---深度优先搜索(DFS)
- DFS算法
- DFS 算法
- DFS算法
- DFS算法
- dfs算法
- DFS算法
- MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据
- let const var 区别
- Git 学习笔记之指令
- 通过反射将一个class中的null改为“”
- Android Studio离线安装gradle
- 算法基础--dfs
- 趣图:自己脑子怎么样,自己没点 B 树么
- 也许这样理解 HTTPS 更容易
- BZOJ 1103 大都市(DFS序+树状数组+差分数组/树链剖分)
- STM32之TIM1高级定时器
- 深入理解Java Class结构
- java高并发程序设计学习笔记九锁的优化和注意事项
- 快速排序
- MongoDB学习笔记(二) 通过samus驱动实现基本数据操作