0
点赞
收藏
分享

微信扫一扫

数据结构课程设计:制定铺设光缆的施工方案

月孛星君 2022-01-20 阅读 68

实验目的:深入理解图的数组表示法,并熟练掌握图的最小生成树算法。

实验内容:光纤通信是现代信息传输的重要方式之一,它具有容量大、中继距离长、保密性好和不受电磁干扰等优点。光缆利用光纤作为传输媒质,可以单独或成组使用,适用于中长距离通信。假设江西省移动通信有限公司计划在省内部分城市之间铺设光缆,铺设光缆的费用如图6-54所示。请设计一个施工方案,该方案要求将图中所有的城市使用光缆连接起来,并保证总体费用最少。

实验要求: 1、将图6-54看作连通的无向图,创建该无向图,并使用邻接矩阵表示法存储。

                   2、 广度优先遍历该网,判断其是否是连通图。

                   3、使用Prim算法或Kruskal算法构造(1)中无向图的最小生成树,并输出组成最小生                           成树的所有边。

                   4、 根据()中的最小生成树计算最终施工方案的总体费用。

 一、问题分析

        该任务中城市分布是一个无向带权连通图,城市间光缆铺设费用即为权值。

二、数据结构

1、逻辑结构

主要使用了图状结构,根据要求,我建立了无向带权图。

 为了能广度优先遍历图,我建立了队列。

2、物理结构

邻接矩阵存储边 arcs[]

 

 辅助数组边集合close Edges[]

三、主要算法

算法1:创建邻接矩阵。通过手动输入顶点V,边arcs,权值w等信息建立该无向图的邻接矩阵

算法2:邻接矩阵展示。为了美观,若边的权值为MAX,则输出**代替。

算法3:广度优先搜索。该算法类似于树的层次遍历,首先访问出发点V,接着访问V的所有邻接点V1,V2,V3.....接着依次访问V1,V2,V3....的邻接点,直到所有顶点都被访问到。该算法使用了队列来进行实现。

算法5:广度优先遍历。对于算法3,只能访问到一个强连通子图,即强连通分量,此时,可在每个连通分量都选择一个顶点,进行广度优先搜索遍历,最后将每个连通分量的遍历结果合起来,则得到整个非联通图的广度优先搜索遍历。

 

 

算法6:普里姆算法求最小生成树并计算树叉的权值。借助辅助数组close edge[],初始化edges,每次扫描数组edges[].low cost,找出支队小且不为0的edges[].low cost[]的索引,得到最小生成树的一条边并将其输出。令edges.get[k].low cost=0将k并入到U中,修改数组edges,重复以上操作直到U=V或循环n次结束。

 

四、函数调用关系

 

五、运行结果展示

 

 

 

 

 

 七、总结

        通过本次课程设计,对图的概念有了一个新的认识,在学习离散数学的时候,总觉得图是很抽象的东西,但是在学习了《数据结构》这门课程之后,我慢慢地体会到了其中的奥妙,图能够在计算机中存在,首先要捕捉他有哪些具体化、数字化的信息,比如说权值、顶点个数等,这也就说明了想要把生活中的信息转化到计算机中必须用数字来完整的构成一个信息库,而图的存在,又涉及到了顶点之间的联系。在本次课程设计中,我遇到了许多问题,比如在程序中,删除顶点和增加顶点的模块中都有和建图模块相互重复的函数,但是由于技术的原因,只能做一些很累赘的函数,可见在调用知识点,我没有掌握好。有了这次课程设计的经验和教训,清楚认识到自己的水平还有待提高今后,我会不断努力,不断提高自己的专业水平。

举报

相关推荐

0 条评论