- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无向图的最小生成树
实验四 无向图的最小生成树
题目:求一个无向图的最小生成树
班级: 姓名: 学号: 完成日期: 一、需求分析
在本实验中,由于本人编程能力问题,没有使用结构体、指针等较为复杂的东西,只是力图实现prim算法,关系的存储亦是直接使用关系矩阵存储,没有输入操作。
4、测试数据
共七个点,它们之间的权值如下:
mx[1][2] 50;
mx[1][3] 60;
mx[2][4] 65;
mx[2][5] 40;
mx[3][4] 52;
mx[3][7] 45;
mx[4][5] 50;
mx[5][6] 70;
mx[4][6] 30;
mx[4][7] 42;
之间没有权值的两个点令其权值为1000。
二、概要设计
为实现上述程序功能,用关系矩阵存储节点间权值。
2、本程序包含两个模块:
(1)主程序模块:
int main 定义变量;
接受命令;
处理命令;
退出(return 0); (2)prime算法的实现,产生最小生成树。
三、详细设计
1,预编译部分
#include
using namespace std;
#define MAXVEX 30 //定义最大点的个数
#define MAXCOST 1000 //定义最大权值,用来描述两点间没有关系
2,主函数
int main int n 7,i 0,j 0,mx[MAXVEX][MAXVEX];//定义节点数、关系矩阵、循环变量
for i 0;i n;i++ for j 0;j n;j++ mx[i][j] MAXCOST; //初始化关系矩阵,使每个值都为最大权值 mx[1][2] 50; //描述节点间关系
mx[1][3] 60; mx[2][4] 65; mx[2][5] 40; mx[3][4] 52; mx[3][7] 45; mx[4][5] 50; mx[5][6] 70; mx[4][6] 30; mx[4][7] 42;
cout 最小生成树为 endl; prim mx,n ;
return 0; 3,prime算法
void prim int c[MAXVEX][MAXVEX], int n int i,j,k,min,lowcost[MAXVEX],closest[MAXVEX]; for i 2;i n;i++ lowcost[i] c[1][i]; //把与第一个节点关联的节点之间的权值存到数组内 closest[i] 1; //标记未处理节点 closest[1] 0; for i 2;i n;i++ min MAXCOST; j 1; k i; while j n //寻找最小权值节点 if lowcost[j] min closest[j]! 0 min lowcost[j]; k j; j++; cout closest[k] , k endl; closest[k] 0; for j 2;j n;j++ //节点j通过k连到图中 if closest[j]! 0 c[k][j] lowcost[j] lowcost[j] c[k][j]; closest[j] k; 四、调试分析
本实验语法和初始阶段的构思都比较难,所以我简化了一些非必要的部分,故而在完成本实验的过程中遇到的调试问题不多。
五、运行结果
六、实验环境
(1)Windows XP系统下
(2)编程环境:VC6.0++ ,TC2.0
原创力文档


文档评论(0)