数据结构管道铺设施工的最佳方案

数据结构管道铺设施工的最佳方案

ID:11413764

大小:354.50 KB

页数:9页

时间:2018-07-11

数据结构管道铺设施工的最佳方案_第1页
数据结构管道铺设施工的最佳方案_第2页
数据结构管道铺设施工的最佳方案_第3页
数据结构管道铺设施工的最佳方案_第4页
数据结构管道铺设施工的最佳方案_第5页
资源描述:

《数据结构管道铺设施工的最佳方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、N(N>10)个居民之间需要铺设煤气管道。假设任意两个居民之间都可以铺设煤气管道,但代价不同。事先将任意两个居民之间铺设煤气管道的代价存入磁盘文件中。设计一个最佳方案使得这N个居民之间铺设煤气管道所需代价最少,并希望以图形方式在屏幕上输出结果。二、需求分析在N(N>10)个居民区之间铺设煤气管道所需代价最小,即求最小生成树问题。在我们的课本中介绍了两种求解方法:普利姆算法和克鲁斯卡尔算法。普利姆算法与网的变数无关,适宜求解边稠密的网的最小生成树。而克鲁斯卡尔算法正好相反,适宜求解边稀疏的最小生成树。由于在实际问题中,居民数量一般很有限,而任何两个居民区都可能有连线,即这样的图应该是边较为

2、稠密的。因此,我们选择了普利姆算法对问题进行求解。三、总体设计普利姆算法的思想是:从连通网N={V,E}中的某一顶点U0出发,选择与它关联的具有最小权值的边(U0,v),将其顶点加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u,v),把它的顶点加入到集合U中。如此继续下去,直到网中的所有顶点都加入到生成树顶点集合U中为止。根据对模型的功能分析,该管道铺设设计应有以下模块:1、管道铺设信息的输入2、最小生成树信息的输出管道铺设问题功能模块图:建立最小生成树并输出信息输入模块最小生成树问题四、详细设计1、类定义:classedgese

3、t//定义一条生成树的边边{public:intfromvex;//边的起点intendvex;//边的终点intweight;//边的权值};classgraph{public:intw;intv[n+1];//存放顶点inta[n+1][n+1];//邻接矩阵edgesetct[n+1];//最小生成树的边集voidcreate(graph&g);//建立邻接矩阵voidprint(graphg);//输出邻接矩阵voiddfs(graphg,inti);//深度优先遍历voidprim(graph&g);//普利姆算法};2、类的成员函数的实现voidgraph::create(g

4、raph&g){inti,j,k;cout<<"请输入"<>g.v[k];}//输入居民点信息for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i==j)g.a[i][j]=0;elseg.a[i][j]=9999;//9999代表无穷cout<>i>>j>>w;g.a[i][j]=w;g.a[j][i]=w;}}voidgraph::print(graphg)

5、{for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){cout<

6、w;for(i=1;i

7、g1=g.ct[i].endvex;w=g.a[j][g1];if(w

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。