博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构--画画--最小生成树(Prim算法)
阅读量:7071 次
发布时间:2019-06-28

本文共 1814 字,大约阅读时间需要 6 分钟。

    通信网络的最小生成树配置,它是使右侧的生成树值并最小化。经常使用Prim和Kruskal算法。看Prim算法:以防万一N={V,{E}}它是在通信网络,TE它是N设置边的最小生成树。从算法U={u0}(uo属于V)。TE={}开始,复运行下述操作:在全部u属于U。v属于V-U的边(u,v)属于E中找到代价最小的一条边(u0,v0)并入集合TE,同一时候v0并入U,直至U=V为止。此时TE中必有n-1条边,T={V,{TE}}为N的最小生成树。

为实现此算法,需另设一个辅助数组closedge,以记录从U到V-U中具有最小权值的边。每次有新的顶点并入U,就要更新一次closedge。

详细代码例如以下:

#include 
#include
#include
#include "../Header.h"using namespace std;//普里姆算法构造最小生成树const int MAX_VERTEX_NUM=20; //最大顶点数typedef enum {DG,DN,UDG,UDN} GraphKind ;//(有向图。有向网。无向图,无向网)typedef int VRType;typedef char InfoType;typedef char VertexType;#define INFINITY INT_MAXtypedef struct ArcCell{ VRType adj; //VRType是顶点关系类型,对于无权图。用1或者0表示顶点相邻与否。对于有权图。则为权值类型 InfoType info;//该弧相关信息指针 ArcCell(){ adj=0; info=0; }}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct MGraph{ VertexType vexs[MAX_VERTEX_NUM]; //顶点向量 AdjMatrix arcs; //邻接矩阵 int vexnum,arcnum; //图当前的顶点数和弧数 GraphKind kind; //图的种类标志}MGraph;//记录从顶点集U到V-U的代价最小的边的辅助数组定义typedef struct minedge{ VertexType adjvex; VRType lowcost;}minedge,Closedge[MAX_VERTEX_NUM];int minimum(MGraph G,Closedge closedge){ int min=1; for(int i=1;i
0) min=i; } return min;}int LocateVex(MGraph G,VertexType v1){ for(int i=0;i
>vexnumber>>arcnumber>>info; G.vexnum=vexnumber; G.arcnum=arcnumber; for(int i=0;i
>G.vexs[i]; } for(int i=0;i
>v1>>v2>>weight; i=LocateVex(G,v1); j=LocateVex(G,v2); G.arcs[i][j].adj=weight; G.arcs[j][i].adj=weight; if(info!=48){//0的ascii码为48 cout<<"please input infomation: "; cin>>infomation; G.arcs[i][j].info=infomation; G.arcs[j][i].info=infomation; } } return OK;}void DisMGraph(MGraph m){ for(int i=0;i

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
阅读作业总结——《移山之道》
查看>>
缺陷报告的重要组成
查看>>
017_常用API_String类,StringBuffer类和基本数据类型对象包装类
查看>>
EDT改成CST
查看>>
自定义 vim
查看>>
perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径...
查看>>
【转载】CentOS下查看电脑硬件设备属性命令
查看>>
鼠标悬停事件-----提示信息
查看>>
Learning English
查看>>
微博传播数量和传播深度的预测--基于pyspark和某个回归算法
查看>>
cp命令覆盖文件时不用按Y来确认的方法
查看>>
Tomcat优化
查看>>
【开源专访】Sea.js创始人玉伯的前端开发之路
查看>>
前台实现下载xml功能
查看>>
运营商 WLAN
查看>>
并发编程 —— ScheduledThreadPoolExecutor
查看>>
Octopus系列之各个页面调用示例
查看>>
zabbix 监控域名证书到期时间!!!!
查看>>
Java Magic. Part 1: java.net.URL
查看>>
异步实现服务器推送消息(聊天功能示例)
查看>>