普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。
借用维基百科的定义就是:
从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。
输入:一个加权连通图,其中顶点集合为V,边集合为E;
初始化:Vnew = {x...
分类:
编程语言 时间:
2015-08-29 21:44:02
阅读次数:
150
求最小生成树,有一点点的变化,就是有的边已经给出来了,所以,最小生成树里面必须有这些边,kruskal和prim算法都可以,prim更简单一些,有一点需要注意,用克鲁斯卡尔算法的时候需要将已经存在的边预处理一下,并查集转化为同一个祖先,记得要找他们的祖先再转化。普里姆算法只需要将那些已经存在的边都初始化为0就可以了。
kruskal:
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-08-19 20:45:04
阅读次数:
95
最小生成树之~普里姆算法
最小生成树是指从连好的图中(有n个点,多于(n-1)条边)选取n-1条边将n个点相互连接,并使得此树的总权值最小。完成此构造的方法著名的有两种,一个是kruskal算法,此算法是对每条边的权值进行排序,然后依次选取小的边添加到树上,并保证是一棵树(即不能产生回路)。另外一个就是prim算法,此算法是从点的角度来考虑。首先用map[][]二维数组存放两点...
分类:
编程语言 时间:
2015-08-18 16:22:00
阅读次数:
142
源代码如下:
#include
using namespace std;
#define MAX_VERTEX_NUM 20
#define infinity 9
typedef int QElemType;
typedef int EdgeData;
typedef char VertexData;
typedef struct
{
VertexData verlist[M...
分类:
编程语言 时间:
2015-08-15 16:35:47
阅读次数:
144
数据结构之---C语言实现最小生成树之prim(普里姆)算法...
分类:
编程语言 时间:
2015-08-12 01:21:47
阅读次数:
227
1、求图的最小生成树有两种算法1)普里姆算法(从顶点着手)第一步:从顶点0出发,找到与0之间权值最小的顶点,为2,然后把顶点1、2组成一个集合1;第二步:在集合1中找到与各顶点权值最小的顶点,去掉权值为6的边得到下图:第三步:第四步:第五步:2)克鲁斯卡尔..
分类:
其他好文 时间:
2015-08-09 19:08:07
阅读次数:
240
转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.htmlPrim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有...
分类:
其他好文 时间:
2015-08-02 22:59:41
阅读次数:
175
46. 蛤蟆的数据结构笔记之四十六普里姆算法
本篇名言:“手莫伸 ,
伸手必被捉。党与人民在监督 ,
万目睽睽难逃脱。汝言惧捉手不伸 ,
他道不伸能自觉 , 其实想伸不敢伸 ,
人民咫尺手自缩。-- 陈毅”
连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使...
分类:
编程语言 时间:
2015-07-27 22:59:31
阅读次数:
240
该文转自《最小生成树-Prim算法和Kruskal算法》Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为...
分类:
编程语言 时间:
2015-06-23 13:11:42
阅读次数:
195
给定一个加权无向连通图,如何选择一个生成树,使权利的最小总和的边缘所有树,叫最小生成树.求最小生成树算法(1)克鲁斯卡尔算法图的存贮结构採用边集数组,且权值相等的边在数组中排列次序能够是随意的.该方法对于边相对照较多的不是非常有用,浪费时间.(2)p=1313">普里姆算法图的存贮结构採用邻接矩阵....
分类:
编程语言 时间:
2015-06-22 22:17:12
阅读次数:
194