- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报—管道铺设问题
《计算机软件技术基础》 实验报告I—数据结构
实验三:管道铺设施工的最佳方案问题
一、问题描述
1.实验题目:
需要在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道即可。假设任意两个小区之间都可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,这个问题即为求无向网的最小生成树。
2.基本要求:
在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。每条管道的费用以网中该边的权值形式给出,网的存储采用邻接表的结构。
3.测试数据:
使用下图给出的无线网数据作为程序的输入,求出最佳铺设方案。右侧是给出的参考解。
图1 小区煤气管道铺设网及其参考解
4.输入输出:
从键盘或文件读入上图中的无向网,以顶点对(i, j)的形式输出最小生成树的边。
需求分析
本程序所能达到的基本可能:
本程序用无向网表示各小区之间的管道铺设情况,结点表示小区位置,边表示铺设的管道,边的权值表示各段的费用。采用邻接表存储,输入无向网数据创建邻接表,通过普利姆算法求出最小生成树,即是最佳铺设方案。
输入输出形式及输入值范围:
根据提示输入总的边数,结点数。再根据提示输入各结点的信息即结点的名称,输入边的信息,即边的两个端点和该边的权值。输入后成功创建邻接表,自动输出所建立的邻接表和普利姆算法求出的最小生成树。
测试数据要求:
使用下图给出的无线网数据作为程序的输入,求出最佳铺设方案。右侧是给出的参考解。
输入结点数和边数:9 15
根据提示分别输入九个结点的名称:A B C D E F G H I
输入边的信息,即两个端点的名称及该边的权值:(A B 32.8);(B C 5.9);(C D 21.3);(D E 67.3);
(A C 44.6);(A H 12.1);(A I 18.2);(H I 8.7);(H G 52.5);(C G 56.4);(C E 41.1);(E F 85.6);
(D F 98.7);(I F 79.2);(E G 10.5)
输入完毕直接输出“建立的图邻接表表示为:0-8-7-2-1-2-0-2-4-6-0-3-1-3-5-4-2-4-6-5-2-3-5-8-3-4-6-4-2-7-7-6-8-0-8-5-7-0”
直接输出应用prime算法,得到的最小生成树的结果,用结点字母表示
三、概要设计
为了实现上述功能,该程序以邻接表存储的无向图模拟居民住宅的分布和住宅之间的管道,通过普利姆算法求最小生成树来求解管道最小花费。因此需要邻接表这一抽象数据类型来表示无向图。还需要普利姆算法求最小生成树。
邻接表抽象数据类型定义
ADT?ALGraph{?
数据对象:D={ai,bi,ci|ai∈AdjList, bi∈int,ci∈int),i =1,2...,n,n≥0}:
数据关系:R=?
基本操作:create(ALGraph* G)//建立无向图的邻接表存储
void prime(ALGraph * G, int from)//用普利姆算法求最小生成树
}ADT?ALGraph
ADT的c语言形式说明:
typedef struct
{
AdjList adjlist;//邻接表
int n, e;//顶点数和边数
}ALGraph; //ALGraph是以邻接表方式存储的图类型
void create(ALGraph* G)//建立无向图的邻接表存储
void prime(ALGraph * G, int from)//用普利姆算法求最小生成树
3.本程序保护模块:
主函数模块
图模块
4. 普利姆算法分析
(1)普利姆算法思想:
普利姆算法的思想是:在图中人去一个定点k0作为开始点,令U={k0},W=V-U,
其中V为图中所有顶点集,然后找一个顶点在U中,另一个顶点在w中的边中最短
的一条,找到后,将该边作为最小生成树的树边保存起来,并将该边顶点全部加入U集合中,并从W中删除这些顶点,然后重新调整U中顶点到W中顶点的距离,使之保持最小,再重复此过程,直到W为空集。
(2)算法过程描述:
在图G=(V,E)(V是顶点,E是边)中,从集合V中任取一个顶点,如k0放入集合U中,这时,U={k0},集合T(E)为空。
从k0出发寻找与U中顶点相邻权值最小的边的另一顶点k1 ,并使k1加入U。即U={k0,k1},同时将该边加入集合T(E)中。
重复(2),直到U=V为止。
这时T(E)中有n-1条边
您可能关注的文档
最近下载
- 2024威海热电集团有限公司招聘试题及答案解析.docx
- 课时1.3 位置变化快慢的描述—速度(练习)-高中物理同步(人教版2019必修第一册).docx VIP
- HG/T 20275-2017 - 化工设备工程施工及验收规范.pdf VIP
- hg20675-1990t化工企业静电接地设计规程.(完整).doc VIP
- 2025上饶市四股桥乡“回村任职大学生” 选聘考试备考题库及答案解析.docx VIP
- 联合石化“巨亏”之因:投机还是套期会计?1__案例使用说明.pdf VIP
- 2025上饶市四股桥乡“回村任职大学生” 选聘笔试模拟试题及答案解析.docx VIP
- 2025上饶市四股桥乡“回村任职大学生” 选聘备考题库及答案解析.docx VIP
- 2025上饶市四股桥乡“回村任职大学生” 选聘考试备考试题及答案解析.docx VIP
- 2025上饶市四股桥乡“回村任职大学生” 选聘笔试备考试题及答案解析.docx VIP
文档评论(0)