邻接矩阵在计算机学科中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北民族师范学院
毕业论文(设计)
论文题目:图的邻接矩阵在计算机学科中的应用
作者:李中欢
指导教师:李淑华
所在系部:数学与计算机系
专业:数学与应用数学
年级班级:2010级2班
完成时间:2014年4月20号
郑重声明
本人的毕业论文(设计)是在指导教师郝玲的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。
毕业论文(设计)作者(签名):
2014年4月6日
目录
标题 (1)
中文摘要 (1)
前言 (1)
1 基本定义与定理 (1)
2 图的邻接矩阵定义 (2)
3.1用邻接矩阵求最小生成树 (3)
3.1.1最小生成树 (3)
3.1.2用邻接矩阵构造最小生成树 (3)
3.1.3邻接矩阵构造最小生成树的基本步骤 (4)
3.1.4应用举例 (4)
3.2基于邻接矩阵的拓扑排序算法 (5)
3.2.1拓扑排序 (5)
3.2.2基于邻接矩阵的拓扑排序算法处理过程 (6)
3.2.3构造顶点间关系的邻接矩阵 (6)
3.2.4拓扑排序算法 (7)
3.3邻接矩阵寻找关键路径 (9)
3.3.1关键路径 (9)
3.3.2利用邻接矩阵寻找关键路径的基本步骤 (9)
3.3.3应用举例 (10)
3.4基于邻接矩阵的最短通路算法 (11)
3.4.1最短通路 (11)
3.4.2带权邻接矩阵的“点加”运算及几何意义 (11)
3.4.3两点间最短通路的求解算法 (12)
3.4.4得出程序代码(C语言描述) (13)
总结 (15)
参考文献 (16)
致谢 (17)
外文页 (18)
图的邻接矩阵在计算机学科中的应用
摘要文中通过分析图的邻接矩阵表示及其性质,将图的数据抽象成数据类型,探究数据的组织形式,联系计算机学科,通过分析几个图的邻接矩阵在计算机学科中的应用实例,对邻接矩阵在最小生成树、拓扑排序、最短路径和关键路径等算法分析上的应用作了一定的探讨,为我们阐述了图在计算机学科应用中的观点。
关键词邻接矩阵最小生成树拓扑排序关键路径最短路径
前言
离散数学是信息学科尤其是计算机学科的一门重要的专业基础课程,而图论是建立和处理离散数学模型的一个重要工具,是一门实用性很强的学科。它在诸如社会科学、计算机科学、信息论和控制论等方面都有着广泛的应用。尤其是计算机科学,在后续的逻辑设计、数据结构、操作系统和程序设计等课程中都起着重要的作用。本文着重讨论几个图,尤其是图的邻接矩阵在数据结构中的应用的例子。在计算机数据结构中广泛地使用邻接矩阵来描述结构和解决问题,在这之中,邻接矩阵显示了它基于矩阵理论的优越性,这给计算机问题的解决带来了很大的方便。
1 基本定义与定理
图指的是一个二元组(V,E),其中V是图的顶点集,它的元素称为图的顶点,而E是图的边集,它的元素称为图的边。用V(G)表示G的顶点集,用E(G)表示G的边集,一条边e=(u,v)是说e和两个顶点u,v相关联,称u,v为e的端
点,u,v是相邻的。如果e有方向,则称其为有向边,反之称为无向边,每条边都有方向的图称为有向图(digraph)。反之,若对图中任意一条边(u,v)=(v,u),则称为无向图。图的每条边都连接两个不同的顶点且没有不同的两条边连接着相同的一对顶点,这样的图叫做简单图(无向图和有向图都可以有简单图)。赋权图(带权图)是指每条边都有一个非负实数对应的图,记作G=
一个无向图G,如果它的两个结点之间是可达的,则称这两个结点是连通的,如果任意两个结点都是连通的,则称图G为连通图,否则为非连通图;而对于一个有向图,如果忽略其边的方向后得到的无向图是连通的,则称此有向图为连通图,否则称为非连通图。我们研究图的连通性的时候最直接的方法是研究无向图的连通性。
下面我们来介绍一下通路和回路:设有向图G=
e1=(v0,v1),e2=(v1,v2),……,=(,)
这个序列由v0开始至结束,其中每条边的终点是下一条边的起点。这样,称交叉序列(v0,e1,v1,e2,...,,)为从与分别叫做通路的起始结点与终止结点,通路中边的数目叫做通路的长度;
有向图中一条通路如果其起始结点与终止结点相同,则称此通路为回路;
在无向图边中一条边对应于无序结点对(),而此无序结点对()可以看成两个有序结点对()及(),由此,可用方向相反的两条有向边取代一条无向边,这样,一个无向图就转换成了有向图。
2 图的邻接矩阵定义
定义:设有向图 D=< V,E>,V= {,…},E= {,…},令为顶点邻接到顶点边的条数,称nxn为 D 的邻接矩阵,记作 A(D), 或简记为A。
图1
如图1所示有向图D的邻接矩阵为A=
3.1 用邻接矩阵求最小生成树
3.1.1最小生成树
树就是没有回路的连通无向图。一棵树是没有回路的,它不含多重边或者环,这样一来,我们可以得出任何树都必然是简单图。树是一种特殊类型的图,所以树也可以用图的邻接矩阵方法来表示。
下面举一个实际生活中的例子指出什么是生成树:一个公司计划建立一个通信网络来连接它的9个计算机中心。可以用租用的电话线连接这些中心的任何一对。应当建立哪些连接,以便保证在任何两个计算机中心之间都有通路,且网络的总成本最小?可以用带权图来为这个问题建模,计算机中心可以用顶点V来表示,可能租用的电话线可以用边E来表示,边上的权即是电话线的月租费用。通过找一棵生成树,使得这棵树的各边的权之和为最小,就可以解决这个问题。这样的生成树称为最小生成树。
3.1.2用邻接矩阵构造最小生成树
设G=(V,E)是一个带权无向连通图(连通网),G的邻接矩阵通常称为耗费矩阵,矩阵的元素定义如下:
其中是边上的权值,∞表示顶点i和j之间构造连通网的最小生成树,要求尽可能选取权值最小的边,且不能构成回路,选取n-1条恰当的边连接网的n个顶点。
3.1.3邻接矩阵构造最小生成树的基本步骤
用邻接矩阵构造最小生成树的基本步骤如下:
(1)、作带权无向连通图G的下三角邻接矩阵A。
(2)、从A中一次性顺序选取(n-1)条不重复的权值最小的边(设边的形式为(左顶,右顶,权值)),连接G中的m个顶点,同时,在A中将这(n-1)条边的权值归