- 博客(5)
- 收藏
- 关注
原创 DFS应用(拓扑排序和强连通分支)
本文将用实例分析DFS搜索算法的两大应用:1、运用深度优先搜索,对一个有向无回路图DAG进行拓扑排序; 2、运用深度优先搜索,将一个有向图分解为各强连通分支。一、拓扑排序首先拓扑排序是针对有向无回路图来说的,反之,如果图中有回路,就不可能存在这样的线性序列。 Topological-Sort算法可以产生一个有向无回路图G的拓扑序列。1、Topological-Sort算法实现思路:<1>调用DFS
2017-04-12 21:45:31 2365
原创 图的BFS和DFS原理及实例分析(java)
BFS和DFS是图的两种遍历方式,是最简单的图搜索算法。本文将给出给出BFS和DFS的以下几种实现方式: 1、使用队列Queue实现图的BFS遍历 2、递归实现图的DFS遍历 3、使用栈Stack迭代实现图的DFS遍历一、BFS(广度优先搜索算法)BFS算法之所以叫做广度优先搜索,是因为它始终将已发现的顶点和未发现的之间的边界,沿其广度方向向外扩展。亦即,算法首先会发现和s距离为k的所有顶点,
2017-04-06 11:27:06 9960 1
原创 Prim算法实现最小生成树MST(java)
Prim算法是另一种生成图的最小生成树的算法,这里简单说一下Prim算法和Kruskal算法的在实现方面的区别:1、Kruskal算法在生成最小生成树的过程中产生的是森林,Prim算法在执行过程中始终都是一棵树;2、Kruskal和Prim实现上的最大区别是Kruskal不需要搜索每个顶点的邻接节点,而Prim中需要,所以Prim图构建时需要利用邻接链表进行构建,Kruskal不用!上面第二点边提出
2017-04-06 09:25:59 11499 1
原创 Kruskal算法实现最小生成树MST(java)
Kruskal算法用于生成图的最小生成树MST,不多说下面直接进入主题!一、实现Kruskal算法需要会的数据结构知识1、最小堆:包括最小堆的初始化、插入和删除操作 最小堆的作用:每次从边的集合中选出权重最小的边,将其加入到MST中(当然此边当和MST中的元素构成环时不满足)2、等价类(并查集) 并查集的作用:便是判断加入到MST中的边是否会构成环3、EdgeNode类 在Kruskal算法中
2017-04-05 21:54:55 6974
原创 java图的邻接表实现两种方式及实例应用分析
本篇博客来谈一谈图的邻接表实现的两种方式,首先我们明确一点“学会图的邻接表实现的关键点在于“:你所建立的图的邻接表的对象是什么!首先我们看一下《算法导论》中关于图的邻接表的定义:图G=(V,E)的邻接表表示有一个包含 |V| 个列表的数组Adj所组成,其中每个列表对应于V中的一个顶点,对于每一个u∈V,邻接表Adj[u]包含所有满足条件(u,v)∈E的顶点v,亦即,Adj[u]包含图G中所有和顶点u
2017-04-05 20:26:11 17943 10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人