最小生成树的7顶点连接问题

最短最少的路劲链接7个点

 

 

package com.zou.Algorithm.prim;

import java.util.Arrays;

public class Prim {
public static void main(String[] args) {
char[]data=new char[]{'A','B','C','D','E','F','G'};
int verxs=data.length;
int weight[][]=new int[][]{//0表示不连通
{100,5,7,100,100,100,2},
{5,100,100,9,100,100,3},
{7,100,100,100,8,100,100},
{100,9,100,100,100,4,100},
{100,100,8,100,100,5,4},
{100,100,100,4,5,100,6},
{2,3,100,100,4,6,100},
};
MGraph graph = new MGraph(verxs);
MinTree minTree = new MinTree();
minTree.creatGraph(graph,verxs,data,weight);
minTree.showGraph(graph);
minTree.prim(graph,0);
}
}
//最小生成树--》村庄
class MinTree{
//创建图的邻接矩阵
public void creatGraph(MGraph graph,int verxs,char data[],int [][]weight){
int i,j;
for ( i = 0; i < verxs; i++) {//顶点
graph.data[i] =data[i];
for ( j = 0; j < verxs; j++) {
graph.weight[i][j]=weight[i][j];
}
}
}
//显示邻接矩阵
public void showGraph(MGraph graph){
for (int[] link:graph.weight){
System.out.println(Arrays.toString(link));
}
}
public void prim(MGraph graph,int v){
//Visited[]标记节点是否被访问过
int visited[]=new int[graph.verxs];
//已访问标记为1
visited[v]=1;
//h1和h2记录两个顶点的下标
int h1=-1;
int h2=-1;
int minWeight=1000;//初始化最小值
for (int k = 1; k < graph.verxs; k++) {//顶点
//这个是确定每个生成的子图,和那个节点的距离
for (int i = 0; i < graph.verxs; i++) {//i节点表示被访问过节点
for (int j = 0; j < graph.verxs; j++) {//j节点表示还没有访问过
if (visited[i]==1&&visited[j]==0&&graph.weight[i][j]<minWeight){
//替换minWeight(寻找已访问节点和未访问节点的权值最小边)
minWeight=graph.weight[i][j];
h1=i;
h2=j;
}
}
}
//找到一条边是最小
System.out.println("边 <"+graph.data[h1]+","+graph.data[h2]+"> 权值:"+minWeight);
//将当前这个节点标记为以访问
visited[h2]=1;
//minWeight重新设置为最大值
minWeight=1000;
}
}
}
class MGraph{
int verxs;//表示图的节点个数
char[]data;//存放节点数据
int[][] weight;//存放边,就是我们的邻接矩阵
public MGraph(int verxs){
this.verxs=verxs;
data=new char[verxs];
weight=new int[verxs][verxs];

}
}
posted @   开源遗迹  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示