图论——网络流
crella___
当你还不能写出自己满意的程序时,你就不要去睡觉。
展开
-
网络流解析——最大流EdmondsKarp算法
原理并不复杂,但存在的疑惑主要集中在反向边的引入,以下篇幅作以讲解。 首先假设一不存在TS边的单源有向加权图。 (所谓“TS边”即是指对于任一割,方向为T->S的边) 类似下图(1为S,6为T,边权(容量)均为10) 此时若求解最大流问题(具体命题省略),按照EdmondsKarp算法,作出其残量网络。 为了解释反向边的作用,我们考虑不使用反向边的情况下,所得出的结果。 下图为不包含原创 2017-03-31 19:02:56 · 2244 阅读 · 0 评论 -
Matrix Decompressing
题意: 给一个矩阵的每行和每列的和,(给的是前i行或者列的和),矩阵中每个元素的值在1到20之间,找出这样的一个矩阵。 算法: 对于S-Column边,其容量分别设置为相应各列之和,Row-T同理 中间各边容量设置为20 经过最大流求解,中间各边流量即是各元素之解 运用到最大流的“分配”,以及二分图的“对称分配”功能。 优化:解中会由于存在“0”流,不在0~20范围内。为解决此类问原创 2017-04-01 14:37:15 · 298 阅读 · 0 评论 -
Euler Circuit
题意:混合图中找欧拉回路 解:基本原理不变。问题在于“混合”上,对于混合图,思想一般是转化为有向图。问题转化为如何给无向边定向,以与既有有向边共同构成欧拉回路。 首先给予无向边随机方向,再对其方向进行调整。 对于纯有向边,我们需要入度等于出度;对于单个结点也需如此。 因此需要无向边最终方向达到上述效果。 考察一对结点u->v,若对其相应边进行调整(逆向),结果是in(u)+1,out(u)原创 2017-04-03 09:26:33 · 235 阅读 · 0 评论 -
网络流应用——图的连通度
问题定义: “连通度是指对应一个图G,对于所有点集U属于V(G),也就是V(G)的子集中,使得G-U要么是一个非连通图,要么就是一个平凡图(即仅包含一个独立点的图),其中最小的集合U的大小就是图G的点连通度,有时候也直接称为图的连通度。 通俗点说,就是一个图G最少要去掉多少个点会变成非连通图或者平凡图。当然对于一个完全图来说Kn来说,它的连通度就是n-1。同理,边连通度就是对于一个非平凡原创 2017-04-03 09:43:22 · 2746 阅读 · 0 评论 -
Risk uva 12264(最大流,二分法,拆点法)
给n个点的无权无向图(n<=100),每个点有一个非负数ai。若ai==0则此点归敌方所有,若ai>0则此点归你且上面有ai个属于你的士兵。保证至少有一个属于你的点与敌方的点相邻。你可以让你的每个士兵最多移动一次,每次可以待在原地或者去到相邻的属于你的领地,但每个点至少要留1各士兵,使得最薄弱的关口尽量坚固。关口是指与敌方点相邻的点,薄弱与坚固分别指兵少与兵多。我参考了这篇博客上的一些讲解。http转载 2017-04-06 00:38:17 · 607 阅读 · 0 评论 -
Uva 1664 Conquer a New Region (Kruskal化用)
该题巧妙的运用了并查集,运用了类似于最小生成树算法的过程 ,通过该题可以对并查集有一个更深的理解 。 题目:由于i和j唯一通路上容量的最小值为该两点的容量,求一个点到其他所有点的容量最大值 。显然题目叙述与MST相似。问题是在合并集合时,中心城市的选择。首先,解决两点的容量问题 ,我们将所有边从大到小排序,然后从大到小枚举,我们假设根结点就是要找的城市中心点,那么当又加入一条边时,该边的两个顶点所在原创 2017-04-06 12:58:27 · 402 阅读 · 0 评论