同学们一定用过Windows中的绘图吧。那么绘图中的油漆桶功能是怎样实现的呢?这个问题能够通过DFS深度优先搜索解决。目标我们要实现的目标是在常数的时间内推断某两个节点是否连接。前面章节中介绍了并查集算法,并查集确实能够解决问题。我们今天来介绍第二种办法,那就是DFS深搜。为了解决问题专门建立一个对...
分类:
其他好文 时间:
2014-06-29 18:58:46
阅读次数:
261
图的遍历指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。图的遍历方法目前有深度优先搜索法和广度(宽度)优先搜索法两种算法。深度优先搜索法DFS深度优先搜索法的基本思想是:从...
分类:
其他好文 时间:
2014-06-27 22:09:35
阅读次数:
310
邻接矩阵:用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。
比如考虑下面这个有向图:
如果用邻接矩阵存储可以表示为:
1.顶点数组:
2.邻接矩阵:
图的遍历:
深度优先(DFS):
深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。假设初始状态是图中所有顶点未曾访问过,...
分类:
其他好文 时间:
2014-06-24 15:48:29
阅读次数:
300
本文参考了李春葆版本的数据结构上机指导,但是原版是c代码,
本文用了c++实现,并且修复了深度优先搜索非递归的一个bug。
graph.cpp文件:
#include"graph.h"
#include
#include
int visited[MAXV];
MGraph::MGraph(int A[100][10],int nn,int ee)
{
e=ee;
n=nn;...
分类:
编程语言 时间:
2014-06-22 19:37:23
阅读次数:
655
深度优先搜索最初是因为迷宫游戏而诞生的。在一个迷宫中,有一个入口和一个出口,其中只有一条路径能从入口到达出口。在走迷宫的时候,每次将走过的地方进行标记,遇到死胡同的时候可以沿着进来的路线后退,找到新的没走过的拐角再尝试新的路线。这种方法的效率很高,因为每个地方只需要走过一次即可。其实,这就是深度优先搜索。
深度优先搜索的目标就是系统化地遍历整个图,让算法的效率更高。
...
分类:
其他好文 时间:
2014-06-18 07:55:19
阅读次数:
189
同学们一定用过Windows中的画图吧。那么画图中的油漆桶功能是如何实现的呢?
这个问题可以通过DFS深度优先搜索解决。
目标
我们要实现的目标是在常数的时间内判断某两个节点是否连接。
前面章节中介绍了并查集算法,并查集确实可以解决这个问题。我们今天来介绍另外一种办法,那就是DFS深搜。
...
分类:
其他好文 时间:
2014-06-18 06:09:48
阅读次数:
267
2.深度优先搜索 为了访问一个顶点,我们将它标记为已经访问过,然后递归的访问所有与子邻接的并且尚未标记的顶点,这就是深度优先搜索(DFS),DFS常用于解决路径问题。 比如下面的连通图,我们从顶点0开始对图进行探索下面这个图显示了DFS处理时的递归调用树。DFS可以解决的问题:1)环检测:一个图中有...
分类:
其他好文 时间:
2014-06-07 21:20:13
阅读次数:
372
穷举:生成所有候选解,然后找出需要的解。
回溯:把解表示成向量,每个分量取自一个有限集合。从部分解开始,每次添加解的一个分量,然后判断如果有可能扩展成完整解则递归下去,否则换成下一个。可以看做是隐式图上的深度优先搜索。
回溯/穷举的复杂度,最坏时和后者一样,通常情形因为不必遍历所有子节点,还是比较快的。
回溯框架:
backtrack(a[], k)
if a[0,...,k] i...
分类:
编程语言 时间:
2014-06-05 02:39:10
阅读次数:
246
广度优先搜索&深度优先搜索(Breadth First Search &
Depth First
Search)BFS优缺点:同一层的所有节点都会加入队列,所以耗用大量空间;仅能非递归实现;相比DFS较快,空间换时间;适合广度大的图;空间复杂度:邻接矩阵O(N^2);邻接表O(N+E);时间复杂度:...
分类:
其他好文 时间:
2014-05-29 15:33:14
阅读次数:
407
1.课程安排表:
1. 线性表
2. 字符串
3. 栈和队列
4.树
5.查找
6.排序
7.暴力枚举法
8.广度优先搜索
9.深度优先搜索
10.分治
11.贪心
12.动态规划
13.图
14.数学方法与常见模型
15.大整数运算
16. 基础功能
2. 编程技巧:
1.把较大的数组放在main 函数(全局变量)外,作为全局变量,这样可以防止栈溢出,...
分类:
其他好文 时间:
2014-05-25 00:31:30
阅读次数:
348