首页 > 其他分享 >并查集,路径压缩

并查集,路径压缩

时间:2023-11-03 14:35:14浏览次数:32  
标签:查集 合并 压缩 元素 路径 查询 编辑 集合


目录

并查集

并查集路径压缩


并查集

并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数、最小公共祖先、带限制的作业排序,还有最完美的应用:实现Kruskar算法求最小生成树。

从字面意思上理解,支持合并和查找操作的集合。
其主要是用来判断联通问题,也就是图中两点间是否存在道路可以连通。
并查集主要分为两种基本操作:

  1. 合并(Union/Merge):合并两个集合。
  2. 查询(Find/Get):查询元素所属集合。

并查集的概念

在计算机科学中,并查集(英文:Disjoint-set data structure,直译为不交集数据结构)是一种数据结构,用于处理一些不交集(Disjoint sets,一系列没有重复元素的集合)的合并及查询问题。并查集支持如下操作:

  • 查询:查询某个元素属于哪个集合,通常是返回集合内的一个“代表元素”。这个操作是为了判断两个元素是否在同一个集合之中
  • 合并:将两个集合合并为一个
  • 添加:添加一个新集合,其中有一个新元素。添加操作不如查询和合并操作重要,常常被忽略。

理解下面三句话,并查集就学会了:

“并”的意思是把两个处在同一个连通分量的结点给并到一起.

“查”的意思是查找一个结点的根节点.

“并”的时候需要用到“查”

不过这样还是比较晦涩。下面我们用图片的方式来讲讲。

图解并查集

并查集的重要思想在于,用集合中的一个元素代表集合。

刚开始好比诸侯国,各自为政。

并查集,路径压缩_并查集

编辑

后来3号被1号吞并了,定都1号城池。

并查集,路径压缩_Python_02

编辑

同时2号也被1号吞并了,定都1号城池。

并查集,路径压缩_Python_03

编辑

神州大地上 4,5,6也发生着相同的事情,5,6也背4号诸侯吞并了,定都4号城池。

并查集,路径压缩_数据结构_04

编辑

后来1号把4号给吞并了,5,6也连带成了1号的领土。定都1号城池。

并查集,路径压缩_数据结构_05

编辑

学习过前面的二叉树,其实我们可以把并查集想象成一个数的结构。

要寻找集合的代表元素(都城),只需要一层一层往上访问父节点(图中箭头所指的圆),直达树的根节点(图中橙色的圆)即可。

并查集,路径压缩_数据结构_06


编辑

并查集路径压缩

并查集,路径压缩_数据结构_07

编辑 

并查集,路径压缩_Python_08

编辑


标签:查集,合并,压缩,元素,路径,查询,编辑,集合
From: https://blog.51cto.com/u_12480926/8169133

相关文章

  • 【专题】2023江苏省工业园区绿色低碳发展路径研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......
  • vim 的nerdtree插件中如何显示当前打开的文件路径?
    树形目录nerdtree插件中如何显示当前打开的文件路径?类似这样:只需在.vimrc文件中加入下面3行就可以了"设置NerdTreemap<F3>:NERDTreeMirror<CR>map<F3>:NERDTreeToggle<CR>map<leader>r:NERDTreeFind<cr>......
  • 项目管理中的关键路径法是什么
    关键路径法(CPM)是一种项目管理技术,它将整个项目分解成一系列的工作任务,将这些任务以流程图的形式展示出来,然后根据每个任务预估的时间框架来计算整个项目的持续时间。它的优势在于确定最重要的任务、帮助缩短时间表、比较计划与实际。一、什么是关键路径法(CPM)?关键路径法(CPM)是......
  • 【图形学笔记】Lecture12-Path Tracing-路径追踪
    Lecture12-PathTracing-路径追踪目录Lecture12-PathTracing-路径追踪RayCasting光线追踪Ray-surfaceintersection射线-表面判交光线和平面光线和三角形判交——MöllerTrumbore算法RayIntersectionWithSphereRayIntersectionWithImplicitSurfaceBoundingVolumes......
  • Win11长路径支持
    Win11长路径支持Win+R打开运行输入gpedit.msc  》计算机配置》管理模板=》系统=》文件系统=》双击启用Win32长路径=》选择启用 Git长路径支持管理员打开PowerShell 输入gitconfig--systemcore.longpathstrue ......
  • Linux zip命令:压缩文件或目录
    我们经常会在Windows系统上使用“.zip”格式压缩文件,其实“.zip”格式文件是Windows和Linux系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,本节要讲的zip命令,类似于Windows系统中的winzip压缩程序,其基本格......
  • Python selenium Chrome下载文件并设置下载路径
    PythonseleniumChrome下载文件并设置下载路径具体代码如下:importosimporttimefromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydown_path="D:\\Temp"chrome_options=webdriver.ChromeOptions()diy_prefs={......
  • F. Unique Occurrences(线段树分治+可撤销并查集)
    F.UniqueOccurrences假如我们删除所有权值为x的边,那么所有权值为x的边对答案的贡献就是\(\sumsz[u]*sz[v]\)sz表示两个联通块的大小,且(u,v)的边权为x我们可以用可撤销并查集来进行处理,简单来说就是将一条边的存在时间看作区间,然后挂到线段树上,然后遍历到每个叶子的时候进行......
  • 并查集撤销操作
    并查集撤销操作路径压缩会破坏原本的树结构,使得删除操作变得困难,所以使用按秩合并。有n个元素,将点x从他当前所在的集合中分离,可以建立一个新的点idx=n++,将fa[x]=idx。#include<bits/stdc++.h>#defineMAXN200100usingnamespacestd;intn,m;intrk[MAXN],fa[MAXN];int......
  • 查询 nginx 安装路径
    A、查看安装的位置whereis nginx 一、查看nginx安装目录ps-ef|grepnginx 二、查看配置文件nginx.conf路径 nginx-t这条命令也可以用于检查配置文件是否正确。 当然也可以使用find命令进行文件查找#从/根目录下查找文件名为nginx.conf的文件f......