图的深度优先搜索
来源:互联网 发布:php时区设置 编辑:程序博客网 时间:2024/05/04 04:52
图的数据结构:
要表示一个图G(V,E)有两种常见的表示方法,邻接矩阵和邻接表。这两种方法可用于有向图和无向图。对于稀疏图,常用邻接表表示,
它占用的空间|E|要小于|V|*|V|。
邻接表:
图G(V,E)的邻接表表示由一个包含V列表的数组Adj组成,其中的每个列表对应于V中的一个顶点,对于v中的任意一个点u,邻接表Adj[u]
包含所有满足条件(u,v)属于E的点v,也就是Adj[u]中包含所有和u相邻的点。
邻接矩阵:
用一个矩阵表示,矩阵的横向和纵向分别为图中的点的有序排列,如果两个点之间有边相连对应的矩阵中的元素就是1,反之就是0.
深度优先搜索,一句话总结,就是一直沿着当前路径搜索,直到没有路之后,重新回溯到一条新的路径上进行搜索。深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。
这种搜索策略比较盲目,算是一种穷举的策略,在数据复杂度较大时,很有花费大量的时间,甚至找不到解(面对NP问题只是理论上能找到解)。我们可以通过合理的剪枝来简化问题的难度,这样才有可能在大数据的情况下快速准确的找出一个解。
同时,深度优先搜索配合一定的启发函数,能够避免盲目搜索,提高算法的效率。关于启发函数,我们应该对现有的问题进行抽象,构造合理的估值函数。
另外,深度搜索还应该设立搜索的下界,避免陷入长时间无用解的搜索。
关于回溯的思路,在回溯的时候应该直接回到上一个出口不唯一的父节点,回溯时要记住各种搜索状态的复位。
具体的算法描述可以看这个博客:
http://www.cnblogs.com/yanlingyin/archive/2011/12/26/Depth-firstsearch.html
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索
- 图的深度优先搜索和广度优先搜索模板
- 图的深度优先搜索与广度优先搜索
- 图的广度优先搜索和深度优先搜索
- seandroid 如何添加被denied的权限
- linux调度器源码研究 - 概述(一)
- lightoj 1219 - Mafia 贪心
- linux用一键安装禅道
- Discuz! X中showmessage函数各参数用法解析
- 图的深度优先搜索
- Block的简单使用
- 机器学习:好用的工具包
- 阿里云OSS 上传文件
- input中鼠标点击清楚按钮之后的聚焦回input的方法
- 屏幕
- Jquery跨域获得Json(二)
- 1001
- CGGeometry -CGGeometry.h