栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

最小生成树算法模板 Java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最小生成树算法模板 Java实现

Prim算法和Kruskal算法 Java实现
  • 问题描述
  • Prim算法
  • Kruskal算法

问题描述

在一个带权连通图图中找出一颗最小生成树,求其权值之和。

Prim算法
public class Prim {
	public static int inf=65535;
	public static int minval=0;
	
	public static void prim(int [][]map,int n) {
		int min,i,j,k;
		int visit[]=new int[n];//0表示未选择 ;1表示已选择
		int lowcost[]=new int[n];//表示顶点i到已选择的顶点集中的最短边的权值  若i在顶点集中,则为inf
		//首先选择点0
		lowcost[0]=inf;
		visit[0]=1;
		for(i=1;i 
  • 时间复杂度: O ( n 2 ) O(n^{2}) O(n2)
  • 可使用二叉堆优化为: O ( e l o g 2 n ) O(elog_2n) O(elog2​n)
  • 适用于稠密图
Kruskal算法
import java.util.*;
class Edge{
	int begin;
	int end;
	int weight;
	public int getWeight()
	{
		return weight;
	}
}
public class Kruskal {
	public static int inf=65535;
	public static int minval=0;
	public static void kruskal(int map[][]) {
		int i,j,m,n;
		int parent[]=new int[map.length];
		//读入所有边,并按权值从小到大排序
		Listedges=new ArrayList();//定义边集数组
		for(i=0;i 
  • 时间复杂度: O ( e log ⁡ 2 e ) O(elog_2e) O(elog2​e)
  • 适用于稀疏图(边少)

参考资料:《大话数据结构》

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号