2022年最小生成树问题 .pdf
《2022年最小生成树问题 .pdf》由会员分享,可在线阅读,更多相关《2022年最小生成树问题 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、榆林学院 12 届课程设计最小生成树问题课程设计说明书学生姓名 :赵佳学号:1412210112 院系:信息工程学院专业:计算机科学与技术班级:计 14本 1 指导教师 :答辩时间 :年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 最小生成树问题一、 问题陈述最小生成树问题设计要求:在 n 个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。二、 需求分析1. 在 n 个城市之间建设
2、网络,只需保证连通即可。2. 求城市之间最经济的架设方法。3. 采用多种存储结构,求解算法也采用多种。三、 概要设计1、功能模块图2、功能描述(1) CreateUDG() 创建一个图: 通过给用户信息提示, 让用户将城市信息及城市之间的联系关系和连接权值写入程序,并根据写入的数据创建成一个图。(2) Switch() 开始创建一个图功能选择1. 建 立邻接 矩阵2. 建 立邻接表3.kruskal算法4. PRIM算法结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共
3、13 页 - - - - - - - - - 功能选择:给用户提示信息,让用户选择相应功能。(3) Adjacency_Matrix() 建立邻接矩阵:将用户输入的数据整理成邻接矩阵并显现在屏幕上。(4) Adjacency_List() 建立邻接表:将用户输入的数据整理成临接表并显现在屏幕上。(5) MiniSpanTree_KRSL() kruskal算法:利用 kruskal算法求出图的最小生成树,即:城市之间最经济的连接方案。(6) MiniSpanTree_PRIM() PRIM算法:利用 PRIM算法求出图的最小生成树,即:城市之间最经济的连接方案。四、 详细设计本次课程设计采用两
4、种存储结构以及两种求解算法。1、两种存储结构的存储定义如下:typedef struct Arcell double adj; Arcell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; typedef struct char vexsMAX_VERTEX_NUM; /节点数组 AdjMatrix arcs; /邻接矩阵 int vexnum,arcnum; /图的当前节点数和弧数MGraph; typedef struct Pnode /用于普利姆算法 char adjvex; /节点 double lowcost; /权值Pnode,ClosedgeMAX_
5、VERTEX_NUM;/ 记录顶点集 U到 V-U 的代价最小的边的辅助数组定义typedef struct Knode/用于克鲁斯卡尔算法中存储一条边及其对应的2个节点 char ch1; /节点 1 char ch2; /节点 2 double value;/权值Knode,DgevalueMAX_VERTEX_NUM; 2、求解算法采用 Prim 算法和 Kruskal 算法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - -
6、- (1)普里姆算法 (Prim) 算法普里姆算法 (Prim) 算法是一种构造性算法,生成最小生成树的步骤如下:初始化 U=v。以 v 到其他顶点的所有边为候选边。重复一下步骤 (n-1) 次,使得其他 (n-1) 个顶点被加入到 U中。 1 从候选边中挑选权值最小的边加入TE ,设该边在 VU中的顶点是 vk,将顶点 vk 加入到 U中; 2 考察当前 VU中的所有顶点 vj ,修改候选边:若 (vk,vj)的权值小于原来和 vj 关联的候选边,则用 (vk,vj)取代后者作为候选边。(2)克鲁斯卡尔 (Kruskal)算法克鲁斯卡尔 (Kruskal)算法是一种按权值的递增次序选择合适的
7、边来构造最小生成树的方法。假设G=(V,E)是一个具有n 个顶点的带权连通无向图,T=(U,TE)是 G的最小生成树,则构造最小生成树的步骤如下:置 U的初值等于 V(即包含有 G中的全部顶点),TE的初值为空集(即图T中每一个顶点都构成一个分量) 。将图 G中的边按权值从小到大的顺序依次选取:若选取的边未使生成树T形成回路,则加入TE ,否则舍弃,直到TE中包含 (n-1) 条边为止。开始标志顶点 1 加入 U 集合寻找满足边的一个顶点在U,另一个顶点在V 的最小边形成 n-1 条边的生成树顶点 k 加入 U 修改由顶点k 到其他顶点边的权值结束得到最小生成树名师资料总结 - - -精品资料
8、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 开始创建标记数组并初始化将所有权值按从小到大排序利用标记数组判断是否形成环是否扫描完全部线路输出权值最小线路形成最小生成树结束否是否3、使用的函数int CreateUDG(MGraph & G,Dgevalue & dgevalue); int LocateVex(MGraph G,char ch); int Minimum(MGraph G,Closedge closedge); void MiniSpan
9、Tree_PRIM(MGraph G,char u); void Sortdge(Dgevalue & dgevalue,MGraph G); void Adjacency_Matrix(MGraph G); void Adjacency_List(MGraph G,Dgevalue dgevalue); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 函数之间的调用关系图:五、 程序代码#include #include #
10、include #define MAX_VERTEX_NUM 20 #define OK 1 #define ERROR 0 #define MAX 1000 typedef struct Arcell double adj; Arcell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; typedef struct char vexsMAX_VERTEX_NUM; /节点数组 AdjMatrix arcs; /邻接矩阵 int vexnum,arcnum; /图的当前节点数和弧数MGraph; typedef struct Pnode /用于普利姆算法 Crea
11、teUDG() main() Adjacency_Matrix() Adjacency_List() MiniSpanTree_KRSL() MiniSpanTree_PRIM() locateVex() locateVex() Minimum() locateVex() Sortdge() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - char adjvex; /节点 double lowcost; /权值Pnode,Cl
12、osedgeMAX_VERTEX_NUM;/ 记录顶点集 U到 V-U的代价最小的边的辅助数组定义typedef struct Knode/用于克鲁斯卡尔算法中存储一条边及其对应的2 个节点 char ch1; /节点 1 char ch2; /节点 2 double value;/权值Knode,DgevalueMAX_VERTEX_NUM; int CreateUDG(MGraph & G,Dgevalue & dgevalue); int LocateVex(MGraph G,char ch); int Minimum(MGraph G,Closedge closedge); void
13、MiniSpanTree_PRIM(MGraph G,char u); void Sortdge(Dgevalue & dgevalue,MGraph G); void Adjacency_Matrix(MGraph G); void Adjacency_List(MGraph G,Dgevalue dgevalue); int CreateUDG(MGraph & G,Dgevalue & dgevalue)/构造无向加权图的邻接矩阵 int i,j,k; coutG.vexnumG.arcnum; cout请输入各个城市名称 ( 分别用一个字符代替 ):; for(i=0;iG.vexsi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年最小生成树问题 2022 最小 生成 问题
限制150内