- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最小生成树程序设计报告
题目:最小生成树求解
问题分析和任务定义
设计程序完成如下功能:对于任意给定的的网和起点,用PRIM算法的基本思想求解出所有的最小生成树。
实现本程序需要解决以下问题:
如何选择存储结构去建立一个带权网络。
如何在所选存储结构下输出这个带权网络。
如何实现PRIM算法的功能。
如何从每个顶点开始找到所有的最小生成树。
如何输出所有的最小生成树。
本问题的接替关键在于如何实现PRIM算法,实现的过程中如何得到所有的最小生成树并且输出也是一个比较关键的问题所在,所以我在设计程序的时候经过了一番深刻的思考与三番五次的修改于调试。
首先我们对问题进行大致的概要分析:
这个问题主要牵涉到通过PRIM的基本算法思想实现程序所要求的功能,该算法的主要思想是:按照将顶点逐个联通的步骤,把顶点加入到已经联通的顶点集合U中去,最后使U成为最小生成树。
问题的输入数据的格式为:首先提示输入带权网络的顶点数和边数,我定义的使整形数据类型;然后按照提示输入每一个顶点的信息,均是整形数据;接下来,我要求输入每一条边的信息,即边的两个顶点以及权值,是十进制整数类型;这样我们就建立了一个带权网络,并用邻接矩阵的存储结构来存储,生成了一个方阵并显示出来。
问题的输出数据的格式为:输出的是以邻接矩阵存储结构下的方阵,以及从不同顶点开始生成的最小生成树。
题目要求以及达到的目标:题目要求实现用PRIM基本算法思想实现求出任意给定的网和顶点的所有最小生成树,我在本程序中实现了任意给定带权无向网络的所有最小生成树的输出。
我在下面给出测试的实例:
请输入无向网的顶点数和边数:5 8
请输入各个顶点的信息:
第一个顶点信息:1
第二个顶点信息:2
第三个顶点信息:3
第四个顶点信息:4
第五个顶点信息:5
下面要求输出各个边的信息:
输入正确的情况:
第一条边的两个顶点和权值:1 2 3
第二条边的两个顶点和权值:1 3 2
第三条边的两个顶点和权值:1 5 5
第四条边的两个顶点和权值:2 4 4
第五条边的两个顶点和权值:2 5 9
第六条边的两个顶点和权值:3 4 8
第七条边的两个顶点和权值:3 5 6
第八条边的两个顶点和权值:4 5 5
输出邻接矩阵如下:
3 2 0 5
0 0 4 9
0 0 8 6
4 8 0 5
9 6 5 0
我们可以得到所有的最小生成树为:
从节点出发得到的最小生成树为:
顶点 权值 顶点
1----------2------(3
1----------3------(2
2----------4------(4
1----------5------(5
从节点出发得到的最小生成树为:
顶点 权值 顶点
2(--------3------(1
1(--------2------(3
2(--------4------(4
1(--------5------(5
从节点出发得到的最小生成树为:
顶点 权值 顶点
3(--------2------(1
1(--------3------(2
2(--------4------(4
1(--------5------(5
从节点出发得到的最小生成树为:
顶点 权值 顶点
4(-------4-------(2
2(-------3-------(1
1(-------2-------(3
4(-------5-------(5
从节点出发得到的最小生成树为:
顶点 权值 顶点
5(-------5--------(1
1(-------2--------(3
1(-------3--------(2
2(-------4--------(4
输入错误的情况:
第一条边的两个顶点和权值:1 2 3
第二条边的两个顶点和权值:1 3 2
第三条边的两个顶点和权值:1 5 5
第四条边的两个顶点和权值:2 4 4
第五条边的两个顶点和权值:2 7 9
对不起!不存在这个节点!
然后跳出,显示按任意键继续。。。
附加说明
本程序要求在顶点信息与边的信息都正确的情况下才能继续下面的运行,所以如果输入的顶点越界的话就会要求重新输入。
二、数据结构的选择和概要设计
1数据结构的选择,
关于带权网络的存储形式
要实现对于任意给定带权网络和顶点,运用PRIM基本算法思想求解所有的最小生成树的运算,在这里我们首先要明确我们所运用的数据结构,即用何种数据结构来存储带权网络,这是必须首先解决的问题,所以我在这里选用了图的临街矩阵的存储方式来存储带权网路,建图时采用邻接矩阵的结构,定义邻接矩阵时用到了一维数组和二维数组,分别存储顶点的信
您可能关注的文档
- 普华永道——Competitor_上海宝钢国际经济贸易.doc
- 普华永道——final proposal 020422.ppt
- 普华永道-岗位说明书009.ppt
- 普华永道——Insurance proposal plus CV 09-29_English.ppt
- 普华永道——Cheers_CDD draft 041203.ppt
- 普华永道——Province report_Guangdong_030707.ppt
- 普华永道——DDA_IM_02-11-13.ppt
- 普华永道——SRF engagement letter.doc
- 普华永道——STK Draft Report_Total_021226.ppt
- 普华永道——STK Draft Report_Total_021229_ver.ppt
文档评论(0)