Prim算法构造最小生成树
来源:互联网 发布:mac os x下载 编辑:程序博客网 时间:2024/04/29 16:57
对于网络,其生成树中的边也带权,将生成树各边的权值总和称为生成树的权,并将权值最小的生成树称为最小生成树(Minimun Spanning Tree),简称为MST。
Prim算法的基本思想是:
(1) 在图G=(V, E) (V表示顶点 ,E表示边)中,从集合V中任取一个顶点(例如取顶点v0)放入集合 U中,这时 U={v0},集合T(E)为空。
(2) 从v0出发寻找与U中顶点相邻(另一顶点在V中)权值最小的边的另一顶点v1,并使v1加入U。即U={v0,v1 },同时将该边加入集合T(E)中。
(3) 重复(2),直到U = V为止。
这时T(E)中有n-1条边,T = (U, T(E))就是一棵最小生成树。
参考程序:
#include <stdio.h>
#define inf 9999
#define max 40
prim(int g[][max],int n)
{int lowcost[max],closest[max];
int i,j,k,min;
for(i=2;i<=n;i++) //n个顶点,n-1条边
{lowcost[i]=g[1][i]; //初始化
closest[i]=1; //顶点未加入到最小生成树中
}
lowcost[1]=0; //标志顶点1加入U集合
for(i=2;i<=n;i++) //形成n-1条边的生成树
{min=inf;
k=0;
for(j=2;j<=n;j++) //寻找满足边的一个顶点在U,另一个顶点在V的最小边
if((lowcost[j]<min)&&(lowcost[j]!=0))
{min=lowcost[j];
k=j;
}
printf("(%d,%d)%d/t",closest[k],k,min);
lowcost[k]=0; //顶点k加入U
for(j=2;j<=n;j++) //修改由顶点k到其他顶点边的权值
if(g[k][j]<lowcost[j])
{lowcost[j]=g[k][j];
closest[j]=k;
}
printf("/n");
}
}
int adjg(int g[][max]) //建立无向图
{int n,e,i,j,k,v1,v2,weight;
printf("输入顶点个数,边的条数:");
scanf("%d,%d",&n,&e);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
g[i][j]=inf; //初始化矩阵,全部元素设为无穷大
for(k=1;k<=e;k++)
{printf("输入第%d条边的起点,终点,权值:",k);
scanf("%d,%d,%d",&v1,&v2,&weight);
g[v1][v2]=weight;
g[v2][v1]=weight;
}
return(n);
}
void prg(int g[][max],int n) //输出无向图的邻接矩阵
{int i,j;
for(i=0;i<=n;i++)
printf("%d/t",i);
for(i=1;i<=n;i++)
{printf("/n%d/t",i);
for(j=1;j<=n;j++)
printf((g[i][j]==inf)?"/t":"%d/t",g[i][j]);
}
printf("/n");
}
main()
{int g[max][max],n;
n=adjg(g);
printf("输入无向图的邻接矩阵:/n");
prg(g,n);
printf("最小生成树的构造:/n");
prim(g,n);
}
- Prim算法构造最小生成树
- Prim算法构造最小生成树
- 构造最小生成树的 prim 算法
- Prim算法构造最小生成树
- 构造最小生成树的算法——Prim算法
- Prim算法和Kruskal算法构造最小生成树
- Prim最小生成树算法
- 最小生成树Prim算法
- 最小生成树Prim算法
- 最小生成树----Prim算法
- 最小生成树Prim算法
- Prim 最小生成树算法
- 最小生成树:Prim算法
- Prim算法 ----最小生成树
- 最小生成树-prim 算法
- 最小生成树(prim算法)
- 最小生成树 prim算法
- 最小生成树 prim算法
- window2000下Apache2.0.54与Jboss4.0.2的集成
- string AND char* 转载
- Oracle数据库的数据统计(Analyze)
- 我谈linux系统字体。
- 没有郁闷就没有快乐
- Prim算法构造最小生成树
- 搬家啦,老庞的新电话: 021—58815151—5188
- 神奇!
- beyond上海告别演唱会图片
- 为了专注,一统统计将会被实力更强的公司接手
- 毕业啦有机会要去看次海怎么样子
- Java初学者:Jsp开发环境配置全过程
- 系统服务描述符表
- some functions