
图论 (学习)
文章平均质量分 73
桃社长
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图论——最短路径——Floyd算法的证明[1.0]
Floyd算法简短介绍思想:Floyd算法考虑的是一条最短路径上的中间结点。什么是中间节点举个例子:一个简单路径p = <v1,v2,v3,…,vl>上的中间结点指的就是除了v1和vl之外的任意节点, 也就是处于集合<v2,v3,…,vl>内的结点。Floyd算法是解决多源最短路径的一个算法, 它可以允许存在负边, 但不允许存在负环路。算法证明:假设图G的所有...原创 2020-01-04 17:49:14 · 1271 阅读 · 0 评论 -
图论——差分约束系统2————[个人笔记1.0]
一、差分约束系统:在一个差分约束系统中, 线性规划矩阵A的每一行包括一个1和一个-1 , 其他的都为0。因此,由 Ax <= b 所给出的约束条件变为m个 涉及n个变量的 差额限制条件, 每个约束条件是如下所示的简单线性不等式: xj - xi <= bk二、引理:设向量x = (x1,x2,x3,…xn)为差分约束系统 Ax <= b 的一个解, 设d为任意常数, 则...原创 2019-11-12 19:42:20 · 247 阅读 · 0 评论 -
图论——差分约束系统1——[0.5]
介绍:简单的说, 差分约束系统, 可以转化为图, 通过求最短路、最长路得到所需要的答案。如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式`(i,j∈[1,n],k为常数),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。参考:[百度百科]...原创 2019-11-10 22:11:02 · 188 阅读 · 0 评论 -
图———最小生成树——普利姆算法
普利姆算法:是对于有一个点集V = {}, 和一个边集W = {}。①从某个u点开始, 将u纳入V集合中, 对应的边纳入W集合中。②先去最近没在V集合的点, 将其纳入V集合中, 加上对应边的权值。③然后重复②, 直到所有的点都被纳入V集合中#include<bits/stdc++.h>#define maxn 103#define inf 0x3f3f3fusing n...原创 2019-11-06 21:04:17 · 377 阅读 · 0 评论 -
图论——二分图——最大独立集
一、什么是最大独立集:百度百科给的定义(不容易懂,不推荐)简单的说:独立集就是,就是一个点集,点集中的各点没有关系。最大独立集就是,点的个数最多的独立集。最大独立集 == 点的总数 - 最小点覆盖。这是为什么呢?简单证明:最大独立集合的定义 是 最大无关系点的集合。而最小点覆盖的定义是,二分图中每个边至少一个端点在该点集中 的 最小点集。如果去掉这些点, 相应的关系(边)也都...原创 2019-06-21 20:08:46 · 13947 阅读 · 0 评论 -
图论——最短路——算法(3.0)
一、只有5行代码的floyd算法:1、 什么是floyd算法弗洛伊德算法是解决多元最短路径的算法(什么是多源, 顾名思义就是起点有多个, 跑完floyd算法就算出以每个顶点做起点到各个点的最短路径)。2、时间复杂度 O(n^3), 空间复杂度O(n^2)3、适用性: 1、多源最短路 2、带负权值的 优点:容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。 ...原创 2019-07-28 23:55:07 · 778 阅读 · 1 评论 -
图论——二分图——二分图染色(1.0版)
一、定义二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。这里是引用二、二分图的判定理论上: 无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。所以...原创 2019-06-18 09:42:30 · 660 阅读 · 0 评论 -
图论——网络流——最小费用流(1.0版)
一、spfa+EK算法:算法思路:1、通过spfa找增广路{ 将费用看成 距离,通过在最小距离的前提下找增广路。}2、通过EK计算增加量#include <iostream>#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst int maxn = 5000 + 7...原创 2019-06-21 22:03:25 · 1258 阅读 · 0 评论 -
图论——二分图——最小点覆盖
最小点集覆盖 == 最大匹配①最小点集覆盖<=最大匹配,假设最小点集覆盖为n, 那么一定能构造出一个为n的匹配, 显然这个匹配<= 最大匹配②最小点集覆盖 >= 最大匹配。假设最大匹配为n,所以肯定有n条边,他们的端点互不相同。 因此我们要覆盖这n条边至少要n个定点。所以 最小点集覆盖>= 最大匹配。综上:最小点集覆盖 == 最大匹配所以可以通过二分图匹...原创 2019-06-20 22:32:38 · 10462 阅读 · 1 评论 -
图论——网络流——最大流(1.0版 强化)
Dinics算法 矩阵版#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define N 1001int n,m;//n个点m条边int S,T;//源点、汇点int level[N];//存储结点分层层数struct Edge{ int cap; int flow;} edge[N][N];bool bf...原创 2019-06-20 20:51:43 · 286 阅读 · 0 评论 -
图——并查集——带权并查集
》》》int found(int x){ if(par[x] == x)return par[x]; else { int t; t = par[x]; par[x] = found(par[x]); value[x] += value[t]; return par[x]...原创 2019-06-13 12:13:31 · 252 阅读 · 0 评论 -
图—并查集——并查集的优化(1.0版)
#include<bits/stdc++.h>using namespace std;const int maxn = 1e4;int par[maxn];int rank1[maxn];void init(int n){ memset(rank1, 0, sizeof(rank1)); for(int i = 1;i <=n;i++)par[i] =...原创 2019-06-12 20:34:44 · 1615 阅读 · 0 评论 -
拓扑排序算法(1.0版)
什么是拓扑排序?1、对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓...原创 2019-05-14 13:11:42 · 898 阅读 · 5 评论