下载此文档

蛮力法分析库卢卡尔关于最小生成树的算法设计分析.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
算法设计与分析实验报告三
8
1
8
V4
V1
V5
V3
V2
6
9
10
12
2
3
4
题目内容:
蛮力法分析库卢卡尔关于最小生成树的算法设计分析
Prim算法和 Kruskal算法
Prim算法逐次将最小权的边和相应顶点加到集合中,适合于求边稠密的最小生成树;Kruskal算法先将所有边都放入集合,然后再逐个选择最小权的边,适合于求稀疏的网的最小生成树。
根据克卢卡尔的最小生成树的算法,如上图
已不能形成圈为前提,先把所有边放入一维数组中,再对一维数组进行排序,选择权值最小的边。路径:v3->v2->v4->v1->v5 权值的和=1+3+2+9+4=19
算法分析(伪代码):
:a[]={1,2,3,4,6,8,8,9,10,12} 结点:u[]={v1,v2,v3,v4,v5}
=(V,E),令G的最小生成树为T=(U,TE),其初始状态为U=V,TE={}

。若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边加入到TE中去,同时把两个连通分量连接成一个连通分量;若被考察边的两个结点属于同一个连通分量,则舍去此边,以免造成回路,如此下去,当T中的连通分量个数为1时,此连通分量便为G的一棵最小生成树.
蛮力法遍历代码程序:
#include<> 
#include<> 
#define M 20 
#define MAX 20 
typedef struct 

int begin; 
int end; 
int weight; 
}edge; 
typedef struct 
{
int adj; 
int weight;  
}AdjMatrix[MAX][MAX]; 
typedef struct 
{  
AdjMatrix arc;
int vexnum, um; }MGraph;
void CreatGraph(MGraph *); void sort(edge* ,MGraph *); void MiniSpanTree(MGraph *); int Find(int *, int ); void Swapn(edge *, int, int); void CreatGraph(MGraph *G) {
int i, j,n, m;
printf("请输入边数和顶点数:");
scanf("%d %d",&G->um,&G->vexnum);
for (i = 1; i <= G->vexnum; i++) {
for ( j = 1; j <= G->vexnum; j++) {
G->arc[i][j].adj = G->arc[j][i].adj = 0; } }
for ( i = 1; i <= G->um; i++) {
printf("\n请输入有边的2个顶点"); scanf("%d %d",&n,&m);
while(n < 0 || n > G->vexnum || m < 0 || n > G->

蛮力法分析库卢卡尔关于最小生成树的算法设计分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人jianjian401
  • 文件大小83 KB
  • 时间2017-09-04
最近更新