图论
文章平均质量分 55
Liukairui
这个作者很懒,什么都没留下…
展开
-
图论学习7-最近公共祖先(LCA)
最近公共祖先(LCA)LCA问题:在有根树中,找出某两个结点 u 和 v 最近的公共祖先 算法:倍增法(大的不行试小的,小的不行试更小的) 算法思想:分治。 算法流程当已知两个点在树中的深度时,先让较深的结点向上走,直到两个结点深度一样;二分找出离他们最近的公共祖先。我们记一个结点的父结点为它的2^0=1倍祖先,它的父结点的父结点为它的2^1=2倍祖先,以此类推。接下来开始描述倍增算法的...原创 2018-04-07 14:14:09 · 388 阅读 · 0 评论 -
图论学习5-Floyd多源最短路
Floyd多源优点:多源时高效,好打,多源,可负权,稠密图效果更好。 缺点:时间复杂度比较高,不适合计算大量数据。 算法流程:到目前为止本人认为将的最清晰的一个讲解:传送门 模板:const int inf = 0x3f3f3f3f;int g[MAX_N][MAX_N]; // 算法中的 G 矩阵// 初始化 g 矩阵void init() { for (in...原创 2018-04-07 13:03:00 · 295 阅读 · 0 评论 -
图论学习4-SPFA单源最短路
SPFA单源:优点:可以处理不含负环的图的最短路,并能判断图中是否存在负环。 缺点:想卡你可以把你卡成SB 使用条件:不能用于负环,查分约束系统 算法流程: 使用di表示从源点到顶点i的最短路,额外用一个队列来保存即将进行拓展的顶点列表,并用inqi来标识顶点i是不是在队列中。 - 初始队列中仅包含源点,且源点s的ds=0 。 - 取出队列头顶点u,扫描从顶点u出发的每条边,设...原创 2018-04-07 13:01:10 · 259 阅读 · 0 评论 -
坐在马桶上看算法:Dijkstra最短路算法
文章写的很好,就转过来了:传送门 上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的1号顶点到2、3、4、5、6号顶点的最短路径。  ...转载 2018-04-07 00:15:56 · 259 阅读 · 0 评论 -
图论学习3-dijkstra最短路
dijkstra算法:优点: 使用条件:1.不出现负权边。 算法流程:我们定义带权图G所有顶点的集合为V,接着我们再定义已确定从源点出发的最短路径的顶点集合为U,初始集合U为空,记从源点s出发到每个顶点v的距离为dist v,初始dist s=0。接着执行以下操作: 1. 从U-V中找出一个距离源点最近的顶点v,将v加入集合U,并用sidt v和顶点v连出的边来更新和v相邻的、不在集合U...原创 2018-04-07 00:11:58 · 301 阅读 · 0 评论 -
图论学习2-树与二叉树
树概念:用图来定义树:如果一个无向连通图中不存在回路,则称这个图为树。例如下图就是 在这棵树上,1是树中的根结点,3是2的子结点,1是2的 父结点。除根结点外,每个结点有且只有一个父结点。如果一个结点没有子结点,则该结点被称为叶结点。树中结点的子结点个数被称为结点的度(注意,这个度和图中的度不一样),最,大度为2的树被称为二叉树。 常用的性质: 1. 若树上的结点数为n,则边...原创 2018-04-07 00:07:34 · 924 阅读 · 0 评论 -
关于计蒜客习题:网络延迟的思路(求树的最大直径求法与证明)
原文标题:树的直径证明+HDU2196 原文链接:传送门 首先把无向图变成一棵树,直径肯定由叶子组成。 有以下两种情况: 第一种:经过根节点,则找两个最远的叶子肯定是直径,也就是B+D。 第二种:不经过根节点,则目标的两个叶子肯定有一个不为根的公共祖先,如红点O,则在红点O下面找两个最远的叶子作为直径,找到了C+F。而很明显,这两个目标叶子中的其中一个(F)是距离根最远的叶子,因为如...转载 2018-02-25 14:44:49 · 514 阅读 · 0 评论 -
图论学习1-图的存储结构
基本概念图:由点集(V)和边集(E)构成,图可以用G(V,G)表示有向图&无向图(说白了无向图就是双向连通的有向图)稀疏图&稠密图(e < nlogn为稀疏图,反之为稠密图) 完全图:在无向图中,每一对定点之间都有边相连(e=v(v-1)/2)有向完全图:在有向图,每一对定点之间都有双向边相连(e=v(v-1)) 度:在无向图中一个点的度就是他连出的边数在有向...原创 2018-02-25 23:17:33 · 434 阅读 · 0 评论 -
坐在马桶上看算法:只有五行的Floyd最短路算法
原文链接:传送门此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在“Communications of the ACM”上。同年Stephen Warshall(史蒂芬·沃舍尔)也独立发表了这个算法。Robert W.Floyd这个牛人是朵奇葩,他原本在芝加哥大学读的文学,但是因为当时美国经济不太景气,找工作比较困难,无奈之下到西屋电气公司当了一名计算机操作员,在...转载 2018-02-26 23:42:25 · 207 阅读 · 0 评论 -
图论学习8-拓扑排序
拓扑排序放心,这一节炒鸡简单。。。 已知:a>b;a>c;a>d,b>d. 要求:给出一个可能的序列使得其满足上述顺序。 显然,我们可以写出一组可行解a>b>c>d。当然,可行解还要很多,而求出这么一个可行解的过程就是拓扑排序。 整理一下思路,我们是怎么做的呢? 首先我假设对于x>y是对于y的一个“约束”(当然就是我瞎想的) 1.我们...原创 2018-04-08 07:42:48 · 339 阅读 · 0 评论 -
图论学习6-Kruskal最小生成树
Kruskal最小生成树生成树 已知连通图G ,图上有N个顶点。生成树是指图G的一个极小(边最少)连通子图,生成树上有n个顶点、n-1条边,且任意两点之间都是连通的。 最小生成树 已知带权连通图G,图中有n个顶点,每条边都有权值。我们要从图中抽出一棵生成树,使得树上所有边权之和最小,这棵生成树就叫做 最小生成树。 常见变形应用: 1.要求找最大边权是最小的的生成树(多读几遍):直接找...原创 2018-04-07 13:53:17 · 465 阅读 · 0 评论