图论学习
文章平均质量分 63
Izayoi_w
我就是从这儿跳下去,死外边,也绝对不学算法 —— 真香~
展开
-
生成树计数与Matrix-Tree定理
生成树计数问题:对于一个有n个点的无向图,由图中n-1条边构成一个边集,这n-1条边恰好连接图中全部的点并构成一棵树,称为生成树,求这样的边集的个数。从上面的描述中,我们知道两个不同的生成树之间是允许有重复的边的,比如: 他就有三个生成树: Matrix-Tree定理:预备概念:度矩阵 :一个n个顶点的无向图G,定义它的度数矩阵D,D是一个n*n的矩阵。对于顶点u,设...原创 2018-08-09 10:30:43 · 2306 阅读 · 0 评论 -
链式前向星
我们在图论题目的代码编写中一般会涉及到图的储存问题,通常的存图的方法是邻接矩阵和邻接链表,这两者比较简单,不做过多介绍。不过,这两者一个当面对稀疏图时占的内存过大,一个因为是链表操作又太慢,而且链表的节点比矩阵的节点占内存大,节点一多一样很占空间,这两者都不是那种比较理想的存图方式,而链式前向星综合了他们的优点,很好的解决了这些问题。不得不说,思路是相当巧妙的。链式前向星是一种特殊的边集,从前...原创 2018-07-31 10:47:36 · 280 阅读 · 0 评论 -
Bellman-Ford算法求最短路
图论中比较基础的问题,求单源最短路,即在图中找一个点作为起点,求他到其他点的最短路,而Bellman-Ford算法是其中最简单的算法,相应地,其复杂度也比较高,效率也比较低,但是,他却可以判断图中是否存在负权回路(走一圈经过的权值是负数),因此可以处理带有负权边的图,且该算法是其他各种最短路算法的原始型,应当受到足够的重视。设有图G< V, E >,点数为V,边数为E,源点为s点。...原创 2018-07-31 17:51:28 · 993 阅读 · 0 评论 -
次小生成树
次小生成树定义:设 G=(V,E,w)是连通的无向图,T 是图G 的一个最小生成树。如果有另一棵树T1,满足不存在树T’,ω(T’)< ω(T1) ,则称T1是图G的次小生成树。上面是不说人话的版本,这里是说人话的版本:一个连通的无向图(连通图、无向图不用解释吧),有许多生成树,其中最小生成树是T,他的路径总长度ω(T)最小,现在找另一棵生成树T’,如果图中T是唯一的,那ω(T’)就是第...原创 2018-08-09 20:55:00 · 949 阅读 · 0 评论 -
SPFA算法以及其优化
SPFA算法(Shortest Path Faster Algorithm),是经队列优化的单源最短路Bellman-Ford算法通常用于求含负权边的单源最短路径,以及判负权环。SPFA算法最坏情况下复杂度和朴素的Bellman-Ford算法相同,为O(VE),一般情况为O(kE),其中k为常数,由图的边权分布决定,所以复杂度不是很稳定,如若必须要避免最坏情况的出现,通常使用效率更加稳定的Dijk...原创 2018-08-01 15:06:40 · 1132 阅读 · 0 评论 -
Dijkstra算法及其优化(Dijkstra+heap)
Dijkstra(迪杰斯特拉)算法是一种经典的求单源最短路的算法,大体上就是利用已经找到的点的最短路去推其他点的最短路。我们先将图中的点分为两部分:S:已经找到最短路的点T:图G - S,剩下的点具体过程如下:将dis数组初始化为INF,源点s,dis[s] = 0,s点加入S集,s点为当前点重复以下步骤:遍历当前点的子点,如果当前点的子点dis值 > d...原创 2018-08-01 20:41:14 · 6631 阅读 · 0 评论 -
Floyd-Warshall算法
说实话,在一开始没学的时候还觉得挺高大上的算法,学了之后发现,最短路四大算法,这是最暴力的一个。。Floyd-Warshall算法,一般也叫Floyd算法,这个算法正如网传的那样:核心算法只有5行:for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) for(int k = 1; k <...原创 2018-08-02 14:23:28 · 1609 阅读 · 0 评论 -
最小生成树Prim算法与Kruskal算法
这两种算法是基于不同的角度得出的最小生成树算法,Prim是“加点法”,而Kruskal是“加边法”。下面让我们来看一看这两种算法的原理和具体实现。相关概念:连通图:在无向图中,若任意两个顶点与都有路径相通,则称该无向图为连通图。强连通图:在有向图中,若任意两个顶点与都有路径相通,则称该有向图为强连通图。连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表...原创 2018-08-08 11:24:49 · 359 阅读 · 0 评论 -
最小树形图(朱-刘算法)
概念导入:最小树形图可以简单的理解为树枝有方向的最小生成树,加上了方向的限制,使得得到它要稍微麻烦一点,解决这个问题的算法是朱永津与刘振宏在上世纪60年代提出的朱-刘算法(难得的中国人的算法)。定义:设G = (V,E)是一个有向图,它具有下述性质: 1. G中不包含有向环; 2. 存在一个顶点vi,它不是任何弧的终点,而V中的其它顶点都恰好是唯一的一条弧的终点; 则...原创 2018-08-13 21:56:33 · 797 阅读 · 0 评论