最小生成树Prim

转载 2015年11月18日 08:31:13

优化算法

package mintree;
/*
 * prim算法的思想: 初始化时,v0加入到最小树,其他所有顶点作为未加入树的集合
 * 取矩阵中第一横,lowcost[],其实就是v0与其他顶点的距离,找出最小的,比如v4,v4加入到最小树,此时最小数有两个节点了v0和v4
 * 接下来,要找到其他未加入树顶点中与最小树顶点距离最近的那个点 lowcost[]这是v0的数据 找到v4与其他顶点的距离数据,即矩阵的第5横
 * tmp[] 然后rmp[]和lowcost[]纵向对比大小,小的数据设置到lowcost[]
 * 然后横向对比lowcost[]数据,找到最小点X,这个X即为与最小树距离最近的那个点 同理,依次将所有顶点加入到最小树
 */
public class Prim {


static int MAX = 65535;
public static void prim(int[][] graph, int n) {


char[] c = new char[] { 'A', 'B', 'C', 'D', 'E' };
int[] lowcost = new int[n];
int[] mst = new int[n];
int i, j, min, minId, sum = 0;


for (i = 1; i < n; i++) {
lowcost[i] = graph[0][i];//
mst[i] = 0;
}
    //找出以选定开始的第一个定点为出发点的最短距离

for (i = 1; i < n; i++) {//n-1次循环,也就是查找n-1个最小边
min = MAX;
minId = 0;
for (j = 1; j < n; j++) {
if (lowcost[j] < min && lowcost[j] != 0) {//横向比较lowcost[]
min = lowcost[j];
minId = j;
}
}
System.out.println(c[mst[minId]] + "到" + c[minId] + " 权值:" + min+"......."+i);


sum = sum + min;
lowcost[minId] = 0;


for (j = 1; j < n; j++) {
if (graph[minId][j] < lowcost[j]) {//对graph[minId][j]的理解
lowcost[j] = graph[minId][j];
mst[j] = minId;
}
}
}
System.out.println("sum:" + sum);
}

public static void main(String[] args) {
int[][] map = new int[][] {
{ 0, 4, 3, MAX, MAX },
{ 4, 0, 18, MAX, MAX }, 
{ 3, 18, 0, 22, 5 },
{ 0, MAX, 22, 0, 9 },
{ MAX, MAX, 5, 9, 0} };
prim(map, map.length);
}
}

相关文章推荐

最小生成树(Prim算法)

  • 2015年06月13日 23:00
  • 2KB
  • 下载

最小生成树-Kruskal算法-Prim算法

最小生成树的两种算法:Kruskal 和 Prim

Prim算法最小生成树(C语言)

  • 2014年10月16日 16:31
  • 516B
  • 下载

用Prim算法构造最小生成树

  • 2013年12月07日 20:18
  • 1KB
  • 下载

最小生成树Prim与Kruskal算法的比较

最小生成树是图论问题中很基本的一个操作。常用的算法有Prim和Kruskal两种算法。本文对这两种算法稍作区别与讨论。Prim算法是依赖于点的算法。它的基本原理是从当前点寻找一个离自己(集合)最近的点...
  • Mollnn
  • Mollnn
  • 2016年09月19日 21:48
  • 2345

prim算法最小生成树

  • 2008年02月19日 11:11
  • 31KB
  • 下载

数据结构实验 Prim最小生成树

  • 2011年05月24日 20:04
  • 149KB
  • 下载

数据结构之最小生成树prim算法

普里姆算法 邻接矩阵: ①adjvex数组存储相关顶点的下标,初始化时全部为0 ②lowcost数组存储相关顶点的边的权值,初始化时为一个点的一维数组 ③然后开始构建最小生成树,从下标0开始 a.从当...

实现构造最小生成树的Prim算法

  • 2016年12月14日 19:43
  • 3.42MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最小生成树Prim
举报原因:
原因补充:

(最多只允许输入30个字)