广度优先搜索
- 操作和树的层次遍历差不多
- 队列+辅助标记数组
- 解决无权图单源最短路径问题:单源表示从一个点出发
(1). 初始化点与点路径长度为最大,出发顶点为0,初始化visited数组,出发点为真,并且压入栈中;
(2). 跟广度优先搜索一样,多了一次路劲的计算,广度优先遍历一次下降一层,长度直接是双亲结点+1,不用担心有循环而出现比较的问题。
- 解决广度优先生成树:邻接矩阵法的广度优先生成树唯一,但是邻接表法不唯一。
深度优先搜索
- 深度优先搜索类似于树的先序遍历
- 递归(栈)+辅助标记数组
- 深度优先生成树
- 无向图在DFSTraverse调用DFS的次数就是连通分量的数量,有向图不是这样的。
生成树的区别
- 最早提到的极小连通子图是针对无向连通图来说的,我们不考虑有向图的极小连通子图是因为多点的有向图要连通一定会有回路,有回路还会使树吗?无向图中的极小连通子图==该图的生成树;
- 广度优先生成树:首先它的生成树的出现了一定条件,必须是经历了广度优先搜索而形成的树。其次,他没有规定广度优先生成树要是无向图or有向图,也没有要求一定是连通or强连通,树生成不了就生成森林嘛。
- 深度优先生成树:和广度优先生成树一样有着一定条件,也没有要求一定要是无向图or有向图,连通or强连通。
- 最小生成树:条件又不一样了,从定义来看,一要带权,二要无向连通图。它具有以下性质:
(1). 所有边的权重皆不相同,最小生成树唯一;
(2). n个顶点只有n-1条边,最小生成树唯一;
(3). 其他情况就不唯一了。