【算法】最小生成树prim算法

原创 2013年12月04日 21:42:44

最小生成树也就是在带权无向图中选取n-1条边,使得n个点都相互连通,而且距离最短。
具体的prim算法如下。
有一个无向图,顶点以及相互之间边以及权值如下。

在prim算法中,对于边和边之间会形成一个邻接矩阵。

int path[][] = new int[n+1][n+1];            
for (int i = 1; i < n+1; i++) {
    for (int j = 1; j < n+1; j++) {
	path[i][j] = Integer.MAX_VALUE;
    }
}
int minLen[] = new int[n+1];
int visit[] = new int[n+1];
for (int i = 1; i < n+1; i++) {
    minLen[i] = path[1][i];
}

n为顶点个数。那么path[i][j]即为i和j之间的距离。初始化时声明为无穷大。
path[1][2] = path[2][1] = 1;
path[1][4] = path[4][1] = 2;
.......
输入数据时,如果有距离就更新。
minLen[]表示的是从1到其他边的距离。
visit[] 表示该点是否被访问过,这样可以防止走回头路。
1、初始顶点为s = 1。
minLen[s] = 0; 初始顶点到自己本身的距离为0;
minLen[2] = path[s][2] = 2;
minLen[3] = path[s][3] = 3;
minLen[4] = path[s][4] = 2;
minLen[5] = path[s][5] = 2;
找到和初始点s距离最短的顶点,这里为2,4,5,可以选取任意一个,这里我们选2。
2、选2结束以后。
visit[2] = 1;
minLen[s] = 0;//已访问,不更新
minLen[2] = path[1][2] = 2;//已访问,不更新
minLen[3] = path[1][3] = 1;// minLen[3] = 3 比 path[2][3] = 1大,更新为1;
minLen[4] = path[1][4] = 2;// minLen[4] = 2 比 path[2][4] 小,不更新;
minLen[5] = path[1][5] = 2;// minLen[5] = 2. 比 path[2][5] = Integer.MAXVALUE小,不更新;
3、不断更新。最后成为这样一棵树

就是最后的结果。距离最小为7。

最小生成树Prim算法理解

MST(Minimum Spanning Tree,最小生成树)
  • yeruby
  • yeruby
  • 2014年08月16日 18:49
  • 84468

Prim最小生成树算法详解以及java实现源代码

1.Prim算法核心思想 prim算法也是贪婪算法的一个典型例子,有点类似于dijkstra算法。核心思想:将点分为两拨,已经加入最小生成树的,未加入的,找到未加入中距离集合最近的点,添加该点,修改其...
  • tingting256
  • tingting256
  • 2016年01月06日 18:41
  • 2911

数据结构:最小生成树--Prim算法

最小生成树 给定一无向带权图,顶点数是n,要使图连通只需n-1条边,若这n-1条边的权值和最小,则称有这n个顶点和n-1条边构成了图的最小生成树(minimum-cost spanning ...
  • zhangxiangDavaid
  • zhangxiangDavaid
  • 2014年08月05日 00:30
  • 10068

最小生成树:Prim算法

  • 2014年08月05日 10:29
  • 4KB
  • 下载

Prim算法实现最小生成树

  • 2017年11月12日 14:22
  • 1014B
  • 下载

最小生成树的Prim算法(贪心选择)

  • 2010年12月09日 17:13
  • 5KB
  • 下载

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

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

最小生成树(Prim算法)

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

用Prim算法构造最小生成树

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

prim算法最小生成树

  • 2008年02月19日 11:11
  • 31KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【算法】最小生成树prim算法
举报原因:
原因补充:

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