Union-Find算法小结

对Union Find算法不熟悉,可参看

http://blog.csdn.net/dm_vincent/article/details/7655764

http://blog.csdn.net/dm_vincent/article/details/7769159

个人觉得该博文阐述非常通俗易懂,第二个链接是博主举的几个应用例子。

几个需要思考的问题:

这种算法通常应用于什么场景?怎么用?

如何将问题归约到union-find或者说union的目的是什么?

怎么union,即两个元素满足什么条件时可以union?

>>两个元素有关联


题目


union 什么


union目的


Graph Valid Tree


一条边的两个顶点


若union两个顶点时发现根一样,说明已经在同一棵树中,说明输入graph存在环,非tree;union结束后,计数有多少个不同的根,当且仅当存在一个根时事vaild tree


Subtree Sum


节点同其父节点


将以指定id节点为根的所有节点union在一起,对这个union中的元素值求和


Number of Islands


两个相邻的1元素


union后计数union集合数量(通过计数union数组中根节点数量)


Surrounded Regions


所有从边界可达的O元素union在一起


union完成后那些没有在边界可达O集合中的O是需要翻转的

union的目的,Graph

Graph Valid Tree

Subtree Sum

Number of Islands

https://leetcode.com/problems/surrounded-regions/

此题debug了很久,一个20*20的case 总是通不过,原因是oRoot的rank值设置得不够大,

会被矩阵中的其他元素超过从而oRoot不再是oRoot导致整个矩阵的O将全部被改为X。

Surrounded Region

时间: 2024-08-24 12:24:09

Union-Find算法小结的相关文章

数据挖掘中分类算法小结

数据挖掘中分类算法小结 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结

稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 一:稀疏矩阵的三元组顺序表数据结构 typedef int ElemType; typedef struct { intx, y;  //该非零元素的行下标和列下标 ElemTypee; //该非零元素的值 } Triple; typedef struct { Tripledata[MAXSIZE]; //非零元素三元组顺序表 intmu, nu, t

HDU 3635 Dragon Balls 七龙珠 Union Find算法

孙悟空要寻找七龙珠,这回是七龙珠的增强版了,因为这些龙珠会衍生,最后不止七颗龙珠了. 悟空带着布玛的龙珠雷达探测器出发了,却发现布玛的龙珠雷达探测器的程序太垃圾了,所以找到我们这些ACM高手为龙珠雷达探测器写个程序,要求可以显示某颗龙珠所在的城市的位置,该龙珠所在的城市共有多少颗龙珠,龙珠移动过的次数. 布玛是个有钱人啊,写个程序我要价5百万,不算过分吧.因为本程序需要用到Union Find(并查集)算法,而且最困难的部分是如何压缩路径,不压缩路径自然容易做到,要压缩路径可以使得程序加快很多,

18大经典数据挖掘算法小结

18大经典数据挖掘算法小结 本文所有涉及到的数据挖掘代码的都放在了我的github上了. 地址链接: https://github.com/linyiqun/DataMiningAlgorithm 大概花了将近2个月的时间,自己把18大数据挖掘的经典算法进行了学习并且进行了代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面.也算是对数据挖掘领域的小小入门了吧.下面就做个小小的总结,后面都是我自己相应算法的博文链接,希望能够帮助大家学习. 1.C4.5算法.C4.5算法与ID3

最短路径算法小结

不同性质的图中,所采取的策略有所不同,自然存在各样的求最短路径的算法. 无向无权图:BFS 有向正权图:Dijkstra 有向无负环图:Bellman-Ford(单点),Floyd-Warshall(任意两点) 有向无环图(dags): 基于动态规划的算法. 广度优先搜索(BFS) 对于无向无权图(也可以假设权值为1),就可以使用最基本的广度优先搜索算法,从源点开始对整个图进行搜索,访问到所有的点.因为广度优先搜索最先访问到的是相邻的点,所以距离最近的点最先访问到,记录的距离也就最小. 算法伪代

用HTML5实现的各种排序算法的动画比较 及算法小结

用HTML5实现的各种排序算法的动画比较 http://www.webhek.com/misc/comparison-sort/ 几种排序算法效率的比较 来源:http://blog.chinaunix.net/uid-20773165-id-1847742.html 1.稳定性比较 插入排序.冒泡排序.二叉树排序.二路归并排序及其他线形排序是稳定的 选择排序.希尔排序.快速排序.堆排序是不稳定的 2.时间复杂性比较 插入排序.冒泡排序.选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂

Paxos算法小结

转自不正直的绅士,因百度空间迁移,无法注明出处,我从其google搜索引擎中的cache进行的copy. 不正直的绅士 是跟我一起工作过的非常有才的一个青年才俊. Paxos的使用非常广泛.sanlock也使用了paxos. 共研究Paxos算法的程序猿参考. Paxos算法小结 1 Paxos算法的背景1.1 State Machine Approach与一致性算法1.2 CAP理论与一致性算法2 Paxos算法2.1 Paxos算法的角色2.2 Paxos算法的描述2.3 Paxos算法的简

异常点检测算法小结

异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,是比较常见的一类非监督学习算法,这里就对异常点检测算法做一个总结. 一.1.?异常点检测算法使用场景 什么时候我们需要异常点检测算法呢?常见的有三种情况.一是在做特征工程的时候需要对异常的数据做过滤,防止对归一化等处理的结果产生影响.二是对没有标记输出的特征数据做筛选,找出异常的数据.三是对有标记输出的特征数据做二分类时,由于某些类别的训练样本非常少,类别严重不平衡,此时也可以考

【模型压缩】蒸馏算法小结

模型压缩之蒸馏算法小结 原始文档:https://www.yuque.com/lart/gw5mta/scisva Google Slide: https://docs.google.com/presentation/d/e/2PACX-1vSsa5X_zfuJUPgxUL7vu8MHbkj3JnUzIlKbf-eXkYivhwiFZRVx_NqhSxBbYDu-1c2D7ucBX_Rlf9kD/pub?start=false&loop=false&delayms=3000 2019年09