Java基于无向有权图实现克鲁斯卡尔算法

【图算法】最小生成树之克鲁斯卡尔算法 最小生成树   在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 克鲁斯卡尔算法(Kruskal) 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。 **基本思想:**按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路。 **具体做法:**首先构造一个只含n个顶点的森林,... 阅读详情

Java基于无向有权图实现克鲁斯卡尔算法

Graph:

package kruskal;



public class Graph {
	final int max=100;
	/*
	 * 顶点节点
	 */
	public class VexNode{
			int adjvex;
			int data;
	}
	
	VexNode[] vexNodes;
	int[] thevexs; //顶点集合
	int[][] edges = new int[max][max]; //边集合
	
	
	/*
	 * 创建图
	 */
	public void createGraph(Graph graph,int[][] A,int[] vexs) {
		thevexs=vexs;
		for (int i = 0; i < vexs.length; i++) {
			  for (int j = 0; j < vexs.length; j++) {
				  graph.edges[i][j] = A[i][j];
			}
		}
	}
	
	/*
	 * 输出图
	 */
	public void printGraph(Graph graph) {
		for (int i = 0; i < graph.thevexs.length; i++) {
			for (int j = 0; j < graph.thevexs.length; j++) {
				//没有路径则输出/
				if (graph.edges[i][j]==-1) {
					System.out.printf("%4s","/");
					 
				}else {
					System.out.printf("%4d",graph.edges[i][j]);
				}
				
			}
			System.out.println("\n");
		}
	}
}

算法:

package kruskal;

public class KruSkal {
	
	public class Edge{
		int start;
		int end;
		int weight;
	}
	
	public void SortEdge(Edge[] E,int e) {
		Edge temp;
		int j;
		for (int i = 0; i < e; i++) {
				temp=E[i];
				j=i-1;
				while (j>=0&&temp.weight<E[j].weight) {
					E[j+1] = E[j];
					j--;
				}
				E[j+1] = temp;
		}
	}
	
	public KruSkal(Graph graph) {
			int i,j,u1,v1,sn1,sn2,k;
			int[] vset = new int[100];
			Edge[] E = new Edge[100];
			k=0;
			for(i=0;i<graph.thevexs.length;i++) {
					for(j=0;j<=i;j++) {
							E[k] = new Edge();
							if (graph.edges[i][j]>0) {
								E[k].start=i;
								E[k].end=j;
								E[k].weight=graph.edges[i][j];
								k++;
							}
					}
					
			}
					SortEdge(E, k);
					for(i=0;i<graph.thevexs.length;i++) {
						vset[i]=i;
					}
					k=1;
					j=0;
					while (k<graph.thevexs.length) {
						u1=E[j].start;
						v1=E[j].end;
						sn1=vset[u1];
						sn2=vset[v1];
						if (sn1!=sn2) {
							System.out.printf("(%d,%d),权值:%d",u1,v1,E[j].weight);
							System.out.println("\n");
							k++;
							for(i=0;i<graph.thevexs.length;i++) {
								if (vset[i]==sn2) {
									vset[i]=sn1;
								}
								
							}
						}
						j++;
					}
				
			
	}
	
	
	
}

测试类:

package kruskal;

public class Test {

	public static void main(String[] args) {
		int[] vexs = {0,1,2,3,4};
		int[][] A = {
				{0,1,3,4,7},
				{1,0,2,-1,-1},
				{3,2,0,5,8},
				{4,-1,5,0,6},
				{7,-1,8,6,0}
				
		};
		Graph graph = new Graph();
		graph.createGraph(graph, A, vexs);
		graph.printGraph(graph);
		KruSkal kruSkal = new KruSkal(graph);
	}	

}
最小生成树 最小生成树在含有n个顶点的连通加权无向图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 普里姆(Prim)算法算法流程从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。 - 输入:一个加权连通图,其中顶点集合为VV,边集合为EE; - 初始化:Vnew={x}V_{new} = \{x\ 阅读详情

相关推荐

无向图(java)

文章目录无向图术语邻接矩阵api设计代码实现邻接矩阵测试邻接表实现无向图api设计代码实现邻接表测试 无向图术语 定义:图是由一组顶点和一组能够将两个顶点相连的边组成的 表示方式 邻接矩阵: 使用二维数组实现,容易造成空间的浪费 邻接表: 使用数组和链表实现 图的述语 相邻顶点: 两个顶点通过一条边相连时,称这两个顶点是相邻顶点 度:某个顶点相邻顶点的个数叫做这个顶点的度 子图:边的子集和边所依赖的顶点组成的图叫做子图 路径:边和边所依赖的顶点组成路径 环:起点和终点相同 连通图:图中任意两个顶点存在

klz 3296

数据结构--图

数据结构--图 实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法 实现图的深度优先搜索、广度优先搜索 实现 Dijkstra 算法、A* 算法 实现拓扑排序的 Kahn 算法、DFS 算法 对应的 LeetCode 练习题 Number of Islands(岛屿的个数) 英文版:https://leetcode.com/problems/number-of-islands/descr...

qq_36047533的博客 1042

【数据结构】图的基本概念—无/有向图、权和网、完全图、路径与回路

图,是一种比树更为复杂的数据结构,树的节点之间是一对多的关系,并且存在父与子的层级划分,而图的顶点(注意在此不叫节点)之间是多对多的关系,并且所有顶点都是平等的,无所谓谁是父谁是子。......

四季轮换叶,一路招摇胜 1万+

Java数据结构之无向图

术语 简单图:没有平行边和自环的图。 平行边:连接同一对顶点的两条边。 多重图:含有平行边(连接同一对结点的两条边称为平行边)的图。 二分图:顶点可分为两堆,两堆之间有边相连,但两堆之中没有。 度数:顶点所连接的边数。 子图:只含原图的一部分顶点或边。 无向完全图:把图中所有顶点都用边相连形成的图,共包含n(n-1)/2条边。 带权图和网:带权的图称为带权图或网。 路径:...

海恩的博客 4616

3D坐标系转换实战:如何用Python快速实现旋转矩阵与平移向量的组合变换

本文详细介绍了如何使用Python和NumPy实现3D坐标系转换中的旋转矩阵与平移向量的组合变换。通过齐次坐标和变换矩阵的数学原理,结合代码示例,帮助开发者高效处理机器人路径规划和计算机视觉中的空间变换问题,并解决实际应用中的常见错误。

pluto的博客 960

5分钟搞定!用Cursor和.NET 9.0快速搭建串口通讯上位机(附VS Code插件配置)

本文分享了如何利用Cursor AI编程助手与.NET 9.0,在5分钟内快速构建一个功能完整的串口通讯上位机程序。通过自然语言描述需求,AI自动生成WinForms界面和核心代码,极大提升了硬件调试工具的定制开发效率。文章详细介绍了环境配置、AI协作编码、功能实现与调试的全过程。

weixin_28366353的博客 277

Java数据结构与Java算法学习Day10---图的了解和无向图(简略笔记记录)

1、图的了解 2、无向图

xiaoxixicc的博客 672

新能源知识库(68)复叠压缩式热泵蒸汽系统介绍

复叠压缩式热泵蒸汽系统通过多级压缩技术将低品位热能转化为高品位蒸汽,在汽车电镀场景中实现了高效、精准的能源利用。随着超高温工质与智能联供系统的发展,该技术将深度赋能电镀行业的高质量可持续发展。​:±1℃控温保障镀层均匀性,提升产品良率;多台复叠热泵+储热装置(如纺织厂6台热泵)复叠热泵+余热回收+智能控制(化工厂案例)​:无燃烧设计契合汽车行业ESG目标。单台高温热泵机组(如92P型号)复叠压缩式热泵蒸汽系统以。67.4万元(↓22%)600万–1200万元。事故率 ↓90%​​。150万–600万元。

竹君子之家 1425

总结 图(有向图、无向图、权、度、存储结构、邻接矩阵、领接表 概念)

20171124   图的概念:      图的基本性质:   无向图:   有向图:   连通图:   图的权:有些图的边或者狐剧有与他相关的数字,这种与图的边或者狐相关的数叫做权。   图的度:无向图顶点的边数叫度,有向图顶点的边数叫出度和入度 。   图的数据存储结构-邻接矩阵:   带权邻接矩阵表示法:   图的存储结构-邻接表   无向图的邻接表:   有向

叫个锤子哟 3万+

MATLAB与STK互联23:卫星对象操作(14)—仿真分析案例1,建立8个地面站,分析对卫星的可见性

学习到这里,我们有必要做个仿真分析案例,把之前我们学习的零散知识点串起来,看一下在真实的分析中怎么应用。 分析要求:建立8个地面站,分析每个地面站对某个轨道高度500km、倾角60°圆轨道的卫星,1天内的可见次数、可见弧长以及可见弧段间隔列表。 基本约束:地面站仰角8°~90°,作用距离<2000km,太阳矢量与地面站到卫星视线夹角不小于15°,可见弧段应大于30s。地面站站址可随机生成,但要求在南北纬50°范围内。 下面上代码: uiap = actxserver(‘STK11.application’)

ltylty001的博客 7492

【openEuler容器镜像部署指南】

【代码】【List集合排序 】

weixin_43878094的博客 1112

Java数据结构与算法:有向图和无向图

在计算机科学中,图是一种非常重要且广泛应用的数据结构,用于表示对象之间的关系。图由节点(顶点)和边组成,边表示节点之间的连接关系。

聚娃科技开发者博客 799

SAPFiori Elements Analytical List Page 概述

ALP(Analytical List Page)是SAP Fiori提供的一种复合页面类型,结合了分析(图表/KPI)与事务(表格/操作)功能,适用于需要分析后立即执行处理的业务场景(如采购价格监控、销售逾期处理等)。其核心价值在于让用户在同一页面完成从数据洞察到事务处理的闭环,减少应用切换带来的效率损耗。 页面结构包含页头KPI标签、交互式图表和明细表格,通过联动过滤、选择同步等机制实现数据钻取与即时操作。支持标准过滤和可视化过滤,并依赖OData注解(SelectionVariant/Presenta

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

java无向图 创建一个类,Java语言基于无向有权图实现克鲁斯卡尔算法代码示例

所谓有权图,就是图中的每一条边上都会有相应的一个或一组值。通常情况下,这个值只是一个数字如:在交通运输网中,边上的权值可能表示的是路程,也可能表示的是运输费用(显然二者都是数字)。不过,边上的权值也有可能是其它东西,比如说是一个字符串,甚至是一个更加复杂的数据包,里面集合了更多的数据克鲁斯卡尔算法的核心思想是:在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最小生成树的条件,就将其构...

weixin_39548805的博客 143

第一节:初识n8n与下一代工作流自动化

本章介绍了n8n的Fair-code理念与节点式架构,对比了其与Zapier/Make的核心差异,并引导读者在n8n Cloud上完成首次界面导览,建立了工作流自动化的宏观认知。

easeyoo的专栏 108

麻雀搜索算法(SSA)详解:从鸟群智能到优化实践

麻雀搜索算法(SSA)是一种新型群智能优化算法,模拟麻雀群体的觅食行为和反捕食机制。该算法将优化问题转化为麻雀群体对食物源的搜索过程,通过发现者、加入者和警戒者的角色分工实现高效优化。SSA具有原理新颖、参数合理、收敛快速等特点,在函数优化、工程设计和机器学习等领域展现出良好应用前景。算法通过数学模型模拟麻雀的觅食策略,包括发现者全局探索、加入者局部开发和警戒者危险预警机制,有效平衡了全局搜索与局部开发能力。SSA相比传统优化算法具有更好的收敛性和优化效果。

qq_42212808的博客 1074

java克鲁斯卡尔算法_Java语言基于无向有权图实现克鲁斯卡尔算法代码示例

所谓有权图,就是图中的每一条边上都会有相应的一个或一组值。通常情况下,这个值只是一个数字如:在交通运输网中,边上的权值可能表示的是路程,也可能表示的是运输费用(显然二者都是数字)。不过,边上的权值也有可能是其它东西,比如说是一个字符串,甚至是一个更加复杂的数据包,里面集合了更多的数据克鲁斯卡尔算法的核心思想是:在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最小生成树的条件,就将其构...

weixin_29623481的博客 287

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

无向图的深度java代码_Java语言基于无向有权图实现克鲁斯卡尔算法代码示例

所谓有权图,就是图中的每一条边上都会有相应的一个或一组值。通常情况下,这个值只是一个数字如:在交通运输网中,边上的权值可能表示的是路程,也可能表示的是运输费用(显然二者都是数字)。不过,边上的权值也有可能是其它东西,比如说是一个字符串,甚至是一个更加复杂的数据包,里面集合了更多的数据克鲁斯卡尔算法的核心思想是:在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最小生成树的条件,就将其构...

weixin_35545345的博客 147

WINCC7.3破解文件

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

图的最小生成树(java实现)

1.图的最小生成树(贪心算法) 我两个算法的输出都是数组表示的,当前的索引值和当前索引对应的数据就是通路,比如parent[2] = 5;即2和5之间有一个通路,第二个可能比较好理解,第一个有点混乱 是什么? 将一个有权图中的 所有顶点 都连接起来,并保证连接的边的 总权重最小,即最小生成树,最小生成树不唯一 为什么? 传入邻接矩阵,返回可以生成最小生成树的数据 我们有两种方式生成图的...

weixin_30266829的博客 560

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...

java 最小生成树_图的最小生成树(java实现)

1.图的最小生成树(贪心算法)我两个算法的输出都是数组表示的,当前的索引值和当前索引对应的数据就是通路,比如parent[2] = 5;即2和5之间有一个通路,第二个可能比较好理解,第一个有点混乱是什么?将一个有权图中的 所有顶点都连接起来,并保证连接的边的 总权重最小,即最小生成树,最小生成树不唯一为什么?传入邻接矩阵,返回可以生成最小生成树的数据我们有两种方式生成图的最小生成树1.普里姆(Pr...

weixin_28946137的博客 644

Java数据结构和算法-图

1.概念 图是一种重要的数据结构,是由顶点的有穷非空集合和顶点之间边的集合组成,由G(V,E)表示,其中G表示一个图,V是该图中顶点的集合,E是图G中边的集合。基本概念包括:顶点,边,有向,无向,权,路径回路,连通域,邻接点,度,入边,出边,入度,出度。 2.存储结构 两种存储结构:邻接矩阵和邻接表。 邻接矩阵:                    邻接矩阵特征:    1、...

Colin_Qichao的博客 4856

Day35-数据结构与算法-图

title: Day35-数据结构与算法-图 date: 2020-12-19 14:26:31 tags: Liu_zimo 常用的经典数据结构 回顾数据结构: 线性结构(数组、链表、栈、队列、哈希表) 树形结构(二叉树、B树、堆、Trie、哈夫曼树、并查集) 图形结构 图(Graph) 概念 图由顶点(vertex)和边(edge)组成,通常表示为G = (V,E) G表示一个图,V是顶点集,E是边集 顶点集V有穷且非空 任意两个顶点之间都可以用边来表示它们之间的关系,边集E可以是空.

欢迎来到Liu_zimo的博客 385

Java实现无向图

1、代码如下 package code.Graph; import java.util.Scanner; public class Graph<T> { public static void main(String[] args) { Graph<Character> G=new Graph<Character>(); G.CreateAdj(); //算法6-3 G.DisplayAdjMatrix();

weixin_53804806的博客 1544

图论算法之最短路径(有向无权图)

1.算法介绍 下图是一个无权图G。使用某个顶点s作为输入参数,我们想要找出从s到所有其他顶点的最短路径。 设我们选择s为v2.此时立刻可以说出从s到v2的最短路径长为0的路径。把这个信息做个标记。如下图。 现在我们可以开始找寻所有与s距离为1的顶点。这些顶点通过考查与s邻接的那些顶点可以找到。此时我们看到,v0和v5与s出发只有一步之遥。标记如下。

Coding365 2394

0102数据结构和图处理算法-无向图-数据结构和算法(Java)

0102数据结构和图处理算法-无向图-数据结构和算法(Java)

gaogzhen的博客 411

Java十大算法之克鲁斯卡尔算法

应用场景: 1.克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法,基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路,具体做法:首先构造一个只含有n个顶点的森林,然后依权值从小到大从连通网中选择边加入到森林中,并使森林中不产生回路,直到森林变成一棵树为止 接下来用图解的方式进行一下分析: 上面的连通网,不同的连通方式,权值总和...

qq_44962429的博客 818
上一篇: Java实现普里姆算法
下一篇: 单源最短路径( Dijkstra算法)JAVA实现
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值