- 博客(7)
- 资源 (7)
- 收藏
- 关注
原创 有向图强连通分量(Tarjan)算法
在图论中,连通图基于连通的概念。在一个无向图G 中,若从顶点到顶点有路径相连(当然从到也一定有路径),则称和是连通的。如果 G 是有向图,那么连接和的路径中所有的边都必须同向。如果图中任意两点都是连通的,那么图被称作连通图。强连通图指每一个顶点皆可以经由该图上的边抵达其他的每一个点的有向图。意即对于此图上每一个点对(Va,Vb),皆存在路径Va→Vb以及Vb→Va。强连通分量则是指一张有向图
2013-11-29 00:48:52 913
原创 最短路径-Dijkstra(poj 1135)
题意: 有一个多米诺骨牌的游戏,我们知道有关键骨牌和普通骨牌,将关键骨牌推倒之后,整个骨牌阵就会倒下,推动其他的关键骨牌,其中推倒关键骨牌A使的关键骨牌B也倒,需要一定的时间,所以本题要求求出最后一个倒的骨牌的位置,及其时间...每个骨牌阵都由关键骨牌1推起。分析:最后倒下的牌 有两种情形:① 如果最后倒下的牌是关键牌,其时间及位置就是第 1 张关键牌到其他关键牌中短路
2013-11-23 11:18:09 728
原创 最小生成树-prime算法
Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边,将(u,w)这条边加入到已找到边的集合,并且将点w加入到集合U中,当U=V时,就找到了这颗最小生成树。 其实,算法的核心步骤就是:在所有u∈U,w∈V-U
2013-11-04 08:43:55 30778 8
原创 最小生成树-Kruscal算法
所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G',其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G'的各边权值之和最小,则称G'为图G的最小生成树。 由定义我们可得知最小生成树的三个性质: 最小生成树不能有回路。 最小生成树可能是一个,也可能是多个。 最小生成树边的个数等于顶点的个数减一。
2013-11-04 07:09:03 2058
原创 并查集-(union-find sets)
在某些应用,要将n个不同元素分成一组不相交的集合,并且在各些集合上要提供两个操作,一个实查找一个元素所属的集合另一个操作是合并两个集合。应用有求一个图的连通分量个数。还有Kruscal算法中判断是否出现环。 其实并查集数据结构非常简单, 下面介绍的版本考虑了优化。 因为可能出现如下图所示的情况:在这做图的情况下查找一个点所属的集合的时间复杂度是O(n),就失去并查集说具有的高效
2013-11-04 05:05:38 816
原创 网络最大流算法
最大流也是图的一种常用的算法,许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。 如果你想比较彻底的弄清楚网络最大流的原理, 你需要了解三个关键的概念:残留网络,增广路径,最大流最小割定。 这三个概念在算法导论上有较详细的说明再次就不再讲述了,估计也没有算法导论上讲的清楚。所以可以
2013-11-02 01:53:03 1483
原创 Bellman-Ford算法介绍总结
Bellman-Ford算法与Dijkstra算法思想一样,用于求解单源点最短路径问题。Bellman-ford算法除了可求解边权均非负的问题外,关键是还可以解决存在负权边的问题,而Dijkstra算法只能处理边权非负的问题,因此 Bellman-Ford算法的适用面要广泛一些。但是,原始的Bellman-Ford算法时间复杂度为 O(VE),比Dijkstra算法的时间复杂度高,就连经典的《算法
2013-11-01 23:39:10 1374
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人