图论知识积累
文章平均质量分 63
AcDora
这个作者很懒,什么都没留下…
展开
-
并查集的学习笔记
今天主要是给MTS做了一个准备,重点学习了并查集。 什么是并查集? 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。(摘自百度百科) 并查集中,每个集合里的元素一般都是有某种关系的,比如连接关系:假设最初a, b 和 c 都是独立的点,后来a 与 b 相连,b又 与 c 相连,那么我们说a 可以到 c,相当于a 与原创 2012-10-17 21:45:05 · 706 阅读 · 0 评论 -
对于最小树形图的理解
最小树形图的算法步骤简化得说一下就是重复一下三个步骤,直到图中没有环为止或者判定有孤立节点无法形成最小树形图: 1、删除自环,除根节点以外,每个点留最小入边;2、判断有没有环;3、如果有环,缩为一点。 现在就从头开始分析一下这个算法。 分析第一步: 留每个点地最小入边,这个没有问题,也是一种贪心的思想; 为什么留的是入边,这也很好解释,有入边这个点才能被到达。 分析第二步: 如果这个原创 2012-10-23 22:08:09 · 2175 阅读 · 0 评论 -
初识MST
在这里, 我们把图分为两类:有向图和无向图 对于求最小生成树,有向图和无向图的做法也是不一样的。 解决无向图的算法,主要是有两个:prim和kruskal, 其中,prim用于稠密图,kruskal用于稀疏图。 解决有向图的算法,目前我知道的就是最小树形图。 首先,我们对prim进行一下简述: 1、集合M, N:M的初始状态是图中所有点,N为空; 2、在图中任选一个点,加入N,并从原创 2012-10-23 20:32:49 · 758 阅读 · 0 评论 -
关于最短路径中的Dijkstra和Bell-man算法的区别
Bell-man算法和Dijkstra算法都是最短路径的算法,都可以用于求,单源点最短路径的问题,那么它们的区别在于什么呢? 想了很久,该怎样去总结它们的区别,最后我认为从两方面总结,是比较合适的:用途特性,算法本身的区别。 那么算法适用于什么样的情况,应该是有算法本身的特性来决定的,所以,算法本身的区别是关键,下面就来说明两个算法各自最核心的部分: Dijkstra: 1. 初始化:将d原创 2013-01-21 22:42:26 · 1520 阅读 · 0 评论 -
二分图匹配
今天看的是二分匹配,和二分图最佳完美匹配 首先,不可否认,这部分比较抽象,我看书看了好几遍,才能看懂 其次,是看懂了之后,我还是不知道,这东西为什么这么做,就是知其然,不知其所以然 下面,总结一下知识点: 一、什么是匹配? 就是在图中,选取一些边,这些边之间,任意两条都没有公共端点,这就是匹配 二、什么是二分图? 形象地说,就是把图中的点分成两部分S和T,这两部分的点没有交集,然后所原创 2013-01-24 22:47:32 · 680 阅读 · 0 评论 -
DFS的深入挖掘
dfs的深入挖掘应该是分为几个部分,今天学习了大概三个部分 第一:连通分量 ( 并查集也能做 ) 判断一个图有几个连通分量,并且为每个点标号---说明它是属于哪一个连通分量的 那么dfs函数可以写成如下: void dfs(int u ) { for ( int i = 1; i cc[i] = count; /原创 2013-01-25 00:29:37 · 645 阅读 · 0 评论 -
2-SAT 学习笔记
今天学习了2-SAT算法 简单说一下对个算法的理解 首先它要解决的问题是:(以我个人理解)有n个物品,拿或不拿,两个状态;有m个条件,每个条件都限制怎么个拿法,比如,如果那物品1,那么一定不能拿物品3,或者要1必须拿3;2-SAT算法给出怎么拿,以及是否有解 接下来是算法本省内容: 建图: 其实算法本质,就是找到必要条件,比如说,x1||x2, 那么也就是说,要想这条件成立的话,当x原创 2013-02-12 23:58:49 · 640 阅读 · 0 评论