无向图的连通分量不相交集合表示

323. 无向图中连通分量的数目 本题可看作是图的连通性问题,可使用并查集(Union-Find)或深度优先搜索(DFS)、广度优先搜索(BFS)来解决。个节点和一个无向边列表(每条边都是一对节点),请编写一个函数来计算无向图中连通分量的数目。题号.题目名称:323. 无向图中连通分量的数目。解释: 图中只有一个连通分量。解释: 图中有两个连通分量, 阅读详情

发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.youkuaiyun.com/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------

 

package com.data.struct;

import java.util.Random;


public class ConnectedComponent {
	private Node[] list;
	
	public ConnectedComponent(int v,int e){
		list=new Node[v];
		for(int i=0;i<v;i++){
			Node node=new Node();
			node.id=i;
			list[i]=node;
		}
		for(int i=0;i<e;i++){
			int v1=new Random().nextInt(v);
			int v2=new Random().nextInt(v);
			if(v1==v2){
				continue;
			}
			while(true){
				Node node=list[v1];
				boolean already=false;
				while(node.next!=null){
					if(node.next.id==v2){
						already=true;
						break;
					}
					node=node.next;
				}
				if(already==true){
					break;
				}
				Node ex=new Node();
				ex.id=v2;
				node.next=ex;
				break;
			}
		}
		for(int i=0;i<list.length;i++){
			makeSet(list[i]);
			
		}
		for(int i=0;i<list.length;i++){
			Node node=list[i];
			Node w=node;
			while(node.next!=null){
				if(findSet(list[w.id])!=findSet(list[node.next.id])){
					union(list[w.id],list[node.next.id]);
				}
				node=node.next;
			}
		}
		
	}
	
	public void makeSet(Node x){
		x.parent=x;
		x.rank=0;
	}
	public void union(Node x,Node y){
		 link(findSet(x),findSet(y));
	}
	private void link(Node x,Node y){
		if(x.rank>y.rank){
			y.parent=x;
		}else{
			x.parent=y;
			if(x.rank==y.rank){
				y.rank++;
			}
		}
		
	}
	public Node findSet(Node x){
		if(x.parent!=x){
			x.parent=findSet(x.parent);
		}
		return x.parent;
	}
	
	public boolean sameComponent(Node u,Node v){
		if(findSet(u)==findSet(v)){
			return true;
		}else {
			return false;
		}
	}
	public static class Node{
		private int id;
		private Node next;
		private Node parent;
		private int rank;
		
		
	}
	public static void main(String[] args) {
		ConnectedComponent c=new ConnectedComponent(10,5);
		System.out.println(c.sameComponent(c.list[0], c.list[1]));

	}

}

 

不相交集合 不相交集合(disjoint-set) 一些应用涉及将n个不同的元素分成一组不相交的集合,常需要确定某元素所属集合及合并两集合。(例如,确定无向图的连通分量) 1、不相交集合数据结构 不相交集合数据结构(disjoint-setdatastructure)维护着一组不相交的动态集合S={S1,S2,S3,...,Sk}。我们用一个代表(representative)来标识每... 阅读详情

相关推荐

推荐系统:NDCG评价指标及其Python实现方法

除了推荐任务,在二分类任务中,也可以计算该指标,代码如下: # ndcg def get_dcg(y_pred, y_true, k): #注意y_pred与y_true必须是一一对应的,并且y_pred越大越接近label=1(用相关性的说法就是,与label=1越相关) df = pd.DataFrame({"y_pred":y_pred, "y_true":y_true}) ...

lanyuelvyun的博客 8242

数据结构--图

图的定义: 图是有顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图中顶点的集合,E是图中边的集合。 图的分类: 无向图:任意两个顶点之间的边都是无向边,组成的图叫无向图。 无向边:顶点到顶点之间的边没有方向,则称这条边为无向边。 有向图:任意两个顶点之间的边是有向边,组成的图叫有向图。 有向边:顶点到顶点之间的边有方向,则称这条边为有向边。 无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称改图为无向完全图。 含有N个顶点的无向完全图,肯定有(N*(N -

angry_youth的博客 482

STM32 LwIP协议栈优化:从TCP延迟10ms降至1ms的内存配置手册

摘要: 本文针对STM32嵌入式开发中LwIP TCP通信的高延迟问题(默认配置下延迟达10~20ms),提出纯软件优化方案,通过调整内存配置与TCP参数将延迟降至1ms。核心问题包括内存池不足、pbuf分配低效及Nagle算法拖累,优化步骤包括: 内存池扩容:增大MEMP_NUM_TCP_PCB至10、PBUF_POOL_SIZE至32,避免资源竞争; pbuf静态池分配:采用2048字节大块缓冲区匹配DMA传输,减少分块与拷贝; 关闭Nagle算法:设置TCP_NODELAY=1,禁用延迟确认以加速小包

weixin_42212753的博客 1712

无向图和有向图

1.无向图 两点之间的边没有方向。点(Vertex)简称V,边(Edge)简称E 2.有向图 两点之间的边是有方向的 有多少边以某点为出发点 则有多少的出度,同理有多少边以某点为终点则有多少入度, 度=出度+入度 3. 邻接矩阵 用G=(V,E)表示上图的无向图,V表示顶点集合V=v1,v2,v3,etc,E表示边的集合e1,e2,e3,etc 用aij表示vi和vj两个顶点之间的边的数量关系得到的矩阵A=A(G)即为图G的邻接矩阵。 对于上图可得邻接矩阵A: ..

qq_44272681的博客 4599

单元测试工具TOP10对比:哪款最适合你的项目?

揭晓单元测试工具TOP10

2501_92667898的博客 1322

YOLOv8的Anchor-Free革新:从中心点预测到动态IoU匹配的全面解析

本文深入解析了YOLOv8采用Anchor-Free(无锚框)设计的核心优势与实现机制。通过摒弃预设锚框,模型直接预测目标中心点与宽高,结合解耦头、动态IoU匹配及Varifocal Loss等创新,显著简化了训练流程并提升了检测精度,尤其在小目标检测和模型泛化能力上表现突出。

weixin_29094301的博客 358

图的基本介绍

图论 连通图 有向图 无向图 邻接矩阵 邻接表

Silicat's Blog 1256

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用 ,人工智能,计算机视觉,大模型,AI,本文解读了最新相关论文,包括基于图神经网络(GCN)的ML-GCN方法,通过构建标签相关矩阵建模依赖关系;区域潜在语义依赖的RLSD模型,定位关键区域并利用RNN建模语义依赖;以及语义图表示学习的SSGRL框架,结合语义解耦与交互模块。通过实战应用,展示了基于PyTorch的ML-GCN模型实现,包括图像特征提取、标签依赖建模及训练评估流程,为多标签图像分类提供了有效解决方案。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

数据结构-无向图

1.图的定义         图(Graph)是由顶点(vertex)的有穷非空集合和顶点之间边(edge)的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合 a.若顶点之间 Vi 和 Vj 之间没有方向,则为无向边,用无序偶对( Vi , Vj )表示 b.若顶点之间 Vi 和 Vj 之间有方向,则为有向边(也称弧),用有序偶对&lt; Vi ,...

kongduxue的专栏 3万+

RT-DETR目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 3363

C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)

本文详细介绍如何将串口通信将数据进行本次存储,主要介绍常用的csv、txt格式文件,由多年实战经验总结,绝对干货!

qq_34059233的博客 7240

《算法导论》第21章 用于不相交集合的数据结构 个人笔记

第21章 用于不相交集合的数据结构 21.1 不相交集合的操作 21.2 不相交集合的链表表示 21.3 不相交集合森林

Amber07的笔记本 966

【异常】OpenClaw认证 Please carry the API secret key in the ‘Authorization‘ field of the request header

OpenClaw助手Agent因401认证异常导致业务中断的排查方案。该异常由大模型API鉴权全量失败触发,主要根因包括API凭证配置错误、密钥过期、账号权限不足或请求格式不规范。解决方案分四级:优先校验并修正API密钥;排查账号状态与调用权限;检查请求格式规范;最后排查网络或服务商问题。建议建立密钥生命周期管理机制,定期监控额度,使用专用API密钥以规避类似问题。该异常属于凭证配置类故障,不影响系统稳定性。

奶爸的编程之路,也就一周冷个三天 465

不相交集合的数据结构

链表中的每个节点都包含。

Zhang_Qin123的博客 1236

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

不相交集合数据结构

一些应用涉及将n个不同的元素分成一组不相交的集合。这些应用经常需要进行两种特别的操作:寻找包含给定元素的唯一集合和合并两个集合。本章将介绍如何维护一种数据结构来实现这些操作。本文介绍不相交集合所支持的操作,及其使用链表及有根树表示的两种形式。有时,集合我们不关心集合代表是谁,只要能够保证每次查询时,对于同一集合中的元素始终返回同一个代表即可,而有时代表的选取又需要特别考虑。不相交集合通常支持以下三种操作:建立集合是对单个元素进行操作,它是集合初始化操作,此时集合中只包含唯一元素。

wts327的博客 1054

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[算法系列之二十八]并查集(不相交集合)

一 概述并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个操作用于此数据结构:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。 Union:将两个子集合并成同一个集合。 因为它支持这两种操作

SmartSi 4450

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

不相交集合的数据结构(Disjoint Sets)

每个集合对象包含head和tail属性,head指向表的第一个对象,tail指向表的最后一个对象。链表中的每个对象都包含一个集合成员、一个指向链表中下一个对象的指针和一个指回到集合对象的指针。FIND-SET过程是一种两趟方法:当它递归时,第一趟沿着查找路径向上直到找到根,当递归回溯时,第二趟沿着搜索树向下更新查找路径上每个结点,使其直接指向根。在一个不相交集合森林中,每个成员仅指向它的父结点,根结点是代表,且是自己的父结点。在FIND-SET操作中,该策略可以使查找路径中的每个结点直接指向根。

m0_56945100的博客 361

算法导论——用于不相交集合的数据结构

不相交集合的操作 一些应用涉及将n个不同元素分成一组不相交的集合,常进行两种操作:寻找包含制定元素的唯一集合以及合并两个集合。操作进行以下定于: MAKE-SET(x)建立一个新的集合,仅含有x UNION(x,y)将包含x和y的两个集合合并成一个新的集合,删除原本的集合 FIND-SET(x)返回一个指向包含唯一x的集合的指针 ...

weixin_33894640的博客 266

不相交集合(并查集)

不相交集合(两集合中没有相交元素),因为只能 进行合并和查找所求元素所在的集合,因此被称为并查集,至于怎么标志哪一个集合,可以使用集合的头结点(使用链表表示并查集),若果返回的元素一样则表示为同一个集合。如果使用森林表示,则用根节点代表这一个集合。只连接两个根节点即可。   这一般应用 在无向图的连通分量和一些图的算法中。 下面说明两种实现方式:    1.  不相交森林(数组实现) 森林

jiaomingliang的专栏 3834

算法导论-第21章-用于不相交集合的数据结构

21.1节描述不相交集合数据结构支持的各种操作,并给出一个简单的应用。21.2节使用一种简单链表结构来实现不相交集合。21.3节使用有根树来实现,使用树表示的运行时间理论上好于线性时间,然而对于所有的实际应用它确是线性的。一个不相交集合数据结构(disjoint-set data structure)维护了一组不相交动态集的集合 sets={S1,S2,⋯ ,Sk}sets = \{S_1, S_2, \cdots, S_k\}sets={S1​,S2​,⋯,Sk​}。用集合中的某个成员作为代表(repre

优快云博客 515

《算法导论》第 21 章-用于不相交集合的数据结构

本文系统介绍了不相交集合(并查集)数据结构及其应用。主要内容包括:1. 不相交集合的三种基本操作(MAKE_SET、UNION、FIND)及其应用场景(如Kruskal算法、图连通性分析);2. 两种实现方式(链表表示和森林表示)的详细对比,重点分析了带路径压缩的按秩合并优化策略;3. 提供了完整的C++实现代码,并通过示例演示了其在最小生成树算法中的应用;4. 理论分析表明,优化后的不相交集合操作时间复杂度接近常数(O(mα(n)))。本文为处理元素分组和连通性问题提供了高效的数据结构解决方案。

2302_80961196的博客 1391

并查集题目总结:用树结构表示不相交集合

朋友圈 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。 示例 1: 输入: [[1,1,0], [1,1,0], [0,0,1]] 输出:2 解释:已知学生 0.

liuzengh的博客 731
上一篇: 深林表示的不相交集合
下一篇: Kruskal算法计算最小生成树
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值