随笔分类 - 图论算法
基础算法
摘要:FloodFill算法啥是 FloodFill 算法呢,最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色。这种算法思想还在许多其他地方有应用。比如说扫雷游戏,有时候你点一个方格,会一下子展开一片区域,这个展开过程,就是 FloodF
阅读全文
摘要:图的广度优先遍历1、广度优先搜索遍历过程图的广度优先搜索(Depth First Search),和树的层次遍历比较类似。它的思想:类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点。示例 对图7-25连通无向图采用广度优先搜索遍历
阅读全文
摘要:P3916 图的遍历 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace
阅读全文
摘要:P1807 最长路 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace
阅读全文
摘要:图论中基本的深度与广度遍历,注意在遍历中如何保证先遍历编号小的结点。 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> using na
阅读全文
摘要:图的深度优先遍历1、深度优先搜索遍历过程图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被
阅读全文
摘要:图的存储结构邻接矩阵——表示顶点间相连关系的矩阵设图G有n (n≥1) 个顶点,则邻接矩阵是一个n阶方阵。当矩阵中的 [i,j] !=0(下标从1开始) ,代表其对应的第i个顶点与第j个顶点是连接的。 特点: 无向图的邻接矩阵是对称矩阵,n个顶点的无向图需要n*(n+1)/2个空间大小有向图的邻接
阅读全文
摘要:图的基本概念图的定义图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合,至于连线的长度与结点的位置是无关紧要的。注意:线性表可以是空表,树可以是空树,图不可以是空图,图可以没有边,但是至少要有一个顶点。1.有向图若E是
阅读全文
摘要:Johnson 全源最短路径算法Johnson 和 Floyd 一样,是一种能求出无负环图上任意两点间最短路径的算法。该算法在 1977 年由 Donald B. Johnson 提出。任意两点间的最短路可以通过枚举起点,跑 次 Bellman-Ford 算法解决,时间复杂度是O(n2m) 的,也可
阅读全文
摘要:Floyd - Warshall(弗洛伊德算法)简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd - Warsh
阅读全文
摘要:SPFA算法是求解单源最短路径问题的一种算法,由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特创立的。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所
阅读全文
摘要:Bellman-Ford最短路径算法单源最短路径给定一个图,和一个源顶点src,找到从src到其它所有所有顶点的最短路径,图中可能含有负权值的边。Dijksra的算法是一个贪婪算法,时间复杂度是O(VLogV)(使用最小堆)。但是迪杰斯特拉算法在有负权值边的图中不适用,Bellman-Ford适合这
阅读全文
摘要:最短路径--迪杰斯特拉(Dijkdtra)算法迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。算法思想每次找到离源点最近的一个顶点,然后以该顶点为中心,然后得到源点到其他顶点
阅读全文
摘要:最短路径在最短路径问题中,我们给定一个带权重的有向图G=(V,E),和权重函数w,E→R,该权重函数将每条边映射到实数值的权重上。图中一条路径p=(v0,v1…,vk)的权重w(p)是构成该路径的所有边的权重之和。定义从结点u到结点v的最短路径权重δ(u,v)如下δ(u,v)=min(w(p),p是
阅读全文
摘要:概念树(Tree):如果一个无向连通图中不存在回路,则这种图称为树。n个结点的无向连通图是树,它有几个边吗?生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。这里所谓极小是指:若在树中任意增加一条边,则
阅读全文
摘要:求有向图的强连通分量个数(kosaraju算法)1. 定义 连通分量:在无向图中,即为连通子图。 上图中,总共有四个连通分量。顶点A、B、C、D构成了一个连通分量,顶点E构成了一个连通分量,顶点F,G和H,I分别构成了两个连通分量。 强连通分量:有向图中,尽可能多的若干顶点组成的子图中,这些顶点都是
阅读全文
摘要:P1551 亲戚这里给出一个深度优先遍历的算法。O(n)的预处理,每个回答O(1)。 #include<iostream> #include<vector> using namespace std; vector <int> g[5001]; int d[5001]; int cnt=1; void
阅读全文