最小生成树——贪心算法

最小生成树是一个连通图的极小连通子图,包含所有结点且边数最少。通过将边按权值排序,依次尝试添加边并检查是否形成环,避免添加多余边。在Java实现中,线段对象包含端点和权值,通过排序和字符串判断方法来构造最小生成树。虽然尝试合并循环未成功,但仍有改进空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最小生成树
问题描述:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。
在这里插入图片描述
实现思路为将边封装成对象,包含两个端点和线段的权值,然后把初始化所有线段将现端存入列表中,将列表按线段的权值进行从小到大排序,然后依次尝试添加线段,如果判断结果为线段是多余的,则本次不添加。判断的思路为把添加的线段的端点全部加入到一个字符串中,如果字符串中没有本线段的两个端点任意一个端点或两个端点,则把本条线段添加入结果集中,并添加到结果字符串。

话不多说,直接上 bug

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class minGradeTree {
   
   

	public static List<Good> startList = new ArrayList<Good>();
	public static List<String> tempList = new ArrayList<String>();
	public static List<Object> resultList = new ArrayList<Object>();
	
	public static void init() {
   
   
		startList.add(new Good(1, 3, 1));
		startList.add(new Good(1, 2, 6));
		startList.add(new Good(1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值