构造最小生成树的克鲁斯卡尔算法(从边的思想)
从权值最小的边开始一个一个找,但是不能形成回路。
判断是否为回路的机制没有理解
代码所示图和边集数组

代码
public class MiniSpanTreeKruskal {
/** 邻接矩阵 */
private int[][] matrix;
/** 表示正无穷 */
private int MAX_WEIGHT = Integer.MAX_VALUE;
/**边集数组*/
private List<Edge> edgeList = new ArrayList<Edge>();
/**
* 创建图
*/
private void createGraph(int index) {
matrix = new int[index][index];
int[] v0 = { 0, 10, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 11, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT };
int[] v1 = { 10, 0, 18, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 16, MAX_WEIGHT, 12 };
int[] v2 = { MAX_WEIGHT, 18, 0, 22, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, MAX_WEIGHT, 8 };
int[] v3 = { MAX_WEIGHT, MAX_WEIGHT, 22, 0, 20, MAX_WEIGHT, MAX_WEIGHT, 16, 2

本文介绍了使用克鲁斯卡尔算法构建最小生成树的方法,从权值最小的边开始选择,避免形成回路。文章探讨了判断回路的机制,并提供了具体的Java代码示例及运行结果。
最低0.47元/天 解锁文章
838

被折叠的 条评论
为什么被折叠?



