首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查集(Union Find

没想到有一天我也能搞懂查集,orz......实际上本文算是《Algorithms》一书的读后感 1.查集概述  查集的数学模型是一组不相交的动态集合S={A,B,...}....,9}他们都是孤立的,随着程序的执行,用户输入不同的操作,比如union(3,4),union(3,8)等等,随着数据的输入,整个图的连通性也会发生变化,所以查集常常用来解决动态连通性问题 Union-Find...API  上面介绍了查集的概念,下面我们就要设计查集。...还是有的,即将节点的父节点指向该节点的爷爷节点,这一点很巧妙,十分方便且有效,相当于在寻找根节点的同时,对路径进行了压缩,使整个树结构扁平化。...查集的应用,可以参考我的另外一篇文章查集应用举例

1K10

查集Union Find

严格来讲查集并不是一个数据结构,而是一个算法,毕竟其英文名直译是联合查找,但作为一个系列,还是当做数据结构讲了。 学术一点讲的话,查集是用来找一个无向图的联通分量。...接下来以此为例分析一下如何使用查集算法。 查集 首先我们有一个parent数组来代表每一个节点的祖先,数组的每一项默认为节点的序号。...parent_b Find 找出一个节点祖先的操作find的流程则是: 如果parent[a] = a,返回a 否则返回find(parent[a]) 我们从关系[1, 2]开始,它们的祖先不同,让parent...= self.find(n): self.parents[self.find(m)] = self.find(n) self.groupNum -= 1...结语 查集经常出现在算题题目中,大家应该理解掌握,最关键的是判断出一个场景是适用于查集,如果当时PAT考试的时候我看出来最后一题用的是查集,也能拿98分了。

2.1K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    查集(Union Find

    查集介绍   我们之前讲的树结构,都是由父亲节点指向孩子节点,而查集却是由孩子指向父亲的这样一种数据结构。   给出图中任意的两点,问这两点之间是否可以通过一个路径连接起来?...本文设计的查集主要支持两个操作: union(p,q) ,对传入的两个数据p和q,在查集内部将这两个数据,以及这两个数据所在的集合合并起来。...  为什么需要路径压缩优化呢?...基于前面的四种实现方式,我们会发现下图中的三颗查集数,无论是find()还是isConnected()都是等效的   由于查集的查找方法是和树得高度相关的,所以我们只要让树得高度降低,就都是对查集的优化...但实际情况并不都是如此,所以我们只能尽可能降低树得高度,这就是我们的路径压缩优化。那我们的路径压缩是如何实现的呢?

    17210

    linux find exec

    查找当前目录下的文件,对查找结果执行ls -l 命令 2. 查找当前目录下,24小时内更改过的文件,并进行删除操作(慎用!!!,删除没有提示) 3....查找当前目录下的以.log结尾的文件或目录,移动到test目录下 find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了...大多数用户使用这一选项是为了查找旧文件删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。...如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。 二. 使用示例 1. 查找当前目录下的文件,对查找结果执行ls -l 命令 命令: find ....查找当前目录下的以.log结尾的文件或目录,移动到test目录下 命令: find -name "*.log" -exec mv {} test \; 输出: [root@localhost home

    4.4K20

    linux使用find exec查找操作某时间范围的文件

    查找删除某目录下1天前的文件场景:某oracle库生成的过期归档备份很多,通过rman没有清理掉,需删除一天以前的归档备份,假设归档备份的格式为log。...命令:cd {归档日志所在的绝对路径,请确认目录下只有日志}find ./ -mtime +1 -name "*.log"find ./ -mtime +1 -name "*.log" -exec rm...-f {} \;注意:请务必确认执行find命令的目录下没有被find匹配到不应删除的文件,否则悔之晚矣!...查找带目录拷贝某目录下一天内的文件场景:拷贝/var/log下所有一天内生成的日志到/tmp进行查看。...2)示例命令里,find后跟的源目录绝对路径,如果不需要拷贝某一层次以上的目录,则cd到该层次目录下再使用相对路径执行命令。

    1.7K40

    Linux 命令 | find

    Linux 命令 find 命令解析 Linux 命令 find 是一种查找文件和目录的工具,可以通过文件类型、日期、大小等属性来查找符合要求的文件。...find 的一般形式如下: find [path] [option] [action] 其中,参数 path 表示要查找的目录,option 表示查找的选项,action 表示对查找到的文件要执行的操作...为方便读者理解,林一写个具体的 demo: find /data/logs -name "access.log*" -type f -mtime -7 -exec cp {} /backup/ ; 解析...Linux 命令 find 命令注意事项 find 命令搜索文件或目录是从给定的路径开始向下递归,找到所有符合条件的文件或目录: -exec选项后面的命令必须以;结尾表示命令结束; -prune选项表示不进入指定的目录查找文件...,可提高查找效率; -regex选项可以使用正则表达式查找文件; find 命令的属性条件可以使用-mtime、-atime和-ctime,分别表示文件的修改时间、访问时间和修改权限的时间。

    17720

    Linuxfind命令

    find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。...查找系统中24小时以内被访问过的文件 > find / -atime -1 查找系统中24小时以内被修改过内容的文件 > find / -mtime -1 查找系统中48小时之前被修改过内容的文件 >...find / -mtime +1 查找系统中所有的.log结尾的文件 > find / -name *.log 查找系统中文件大于100M的文件 > find / -size +100M b —— 块(...100M -size -500M 查找系统中文件大于500M的文件,删除 > find / -type f -size +500M -delete 或 > find / -type f -size +...查找系统中的空文件 > find / -empty -type f 原文链接:https://rumenz.com/rumenbiji/linux-find.html 微信公众号:入门小站

    3.9K00

    查集(union-find sets)

    一.查集及其优化 - 查集:由若干不相交集合组成,是一种简单但是很好用的数据结构,拥有优越的时空复杂性,一般用于处理一些不相交集合的查询和合并问题。...查集的优化方法(改进时间的启发式策略) 1 路径压缩(Path Compression)是一种在每次使用“ 查找”(Find_Set)时压扁树结构的方法。...可以想象,如果树比较极端,退化成一条链了,那么在最坏的时候每次查询都达到了O(n),而路径压缩就可以提高效率。 而且,路径压缩并不改变任何节点的秩,但是会改变子树的高度....- 带权查集,是指结点存有权值信息的查集。...思路:这里明显可以使用查集,但是给的信息是不同集合的,而查集是保存同一个集合,所以单纯的查集是不行了,故增加一个flag,来标记当前结点和根结点的关系,用一个查集来维护所有的结点。

    1.5K30

    Linuxfind命令

    find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。...查找系统中24小时以内被访问过的文件 > find / -atime -1 查找系统中24小时以内被修改过内容的文件 > find / -mtime -1 查找系统中48小时之前被修改过内容的文件...> find / -mtime +1 查找系统中所有的.log结尾的文件 > find / -name *.log 查找系统中文件大于100M的文件 > find / -size +100M b...+100M -size -500M 查找系统中文件大于500M的文件,删除 > find / -type f -size +500M -delete 或 > find / -type f -size...查找系统中的空文件 > find / -empty -type f 原文链接:https://rumenz.com/rumenbiji/linux-find.html

    3.5K10

    Linux find命令详解

    一、find 命令格式 1、find命令的一般形式为; find pathname -options [-print -exec -ok ...] 2、find命令的参数; pathname...: find命令所查找的目录路径。...大多数用户使用这一选项是为了查找旧文件删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。...在/logs目录中查找更改时间在5日以前的文件删除它们: $ find logs -type f -mtime +5 -exec rm {  } \; 记住:在shell中用任何方式删除文件之前,应当先查看相应的文件...在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,删除它们,只不过在删除之前先给出提示。 $ find .

    3.9K20
    领券